diff --git a/controller/game_card.go b/controller/game_card.go index caec030..49b9c6b 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -658,12 +658,12 @@ func PushWXPayNotice(c *gin.Context) { fmt.Println("用户续费---") model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId, - uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel)) + uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre)) } else { fmt.Println("用户开通------") model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId, - uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel)) + uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre)) } } @@ -1375,6 +1375,9 @@ func HmPushWXPayNotice(c *gin.Context) { remark := "" if record.MemberLevel == 2 { + if record.MemberGenre != 201 && record.MemberGenre != 202 { + record.MemberGenre = 200 // 新增:如果是年费黄金会员则member_genre设置为200 + } remark = "黄金会员费" } else if record.MemberLevel == 4 { remark = "白金会员费" @@ -1608,12 +1611,12 @@ func HmPushWXPayNotice(c *gin.Context) { fmt.Println("用户续费---") model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId, - uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel)) + uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre)) } else { fmt.Println("用户开通------") model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId, - uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel)) + uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre)) } } diff --git a/model/cooperative_business.go b/model/cooperative_business.go index b1eb4eb..2aaacd2 100644 --- a/model/cooperative_business.go +++ b/model/cooperative_business.go @@ -177,7 +177,7 @@ type CooperativeDeductSettle struct { RenewalBlackGoldDeduct uint32 `json:"renewal_black_gold_deduct"` // 续费黑金金会员提成 } -func AddCooperativeMemberPromotion(cooperativeId, storeId, assistantUid uint32, memberLevel int) { +func AddCooperativeMemberPromotion(cooperativeId, storeId, assistantUid uint32, memberLevel, memberGenre int) { defer func() { if err := recover(); err != nil { logger.Error("err:", err) @@ -231,7 +231,7 @@ func AddCooperativeMemberPromotion(cooperativeId, storeId, assistantUid uint32, return } - err = inviteReport.AddPromotion(begin, memberLevel) + err = inviteReport.AddPromotion(begin, memberLevel, memberGenre) if err != nil { begin.Rollback() logger.Error("promotion add promotion err:", err) @@ -435,7 +435,7 @@ func (m *CooperativeMemberPromotionStoreDay) AddPromotion(gdb *gorm.DB, memberLe return nil } -func (m *InviteMemberReport) AddPromotion(gdb *gorm.DB, memberLevel int) error { +func (m *InviteMemberReport) AddPromotion(gdb *gorm.DB, memberLevel, memberGenre int) error { dateString := utils.MonthDate() if memberLevel < 0 { return errors.New("member level err") @@ -453,10 +453,23 @@ func (m *InviteMemberReport) AddPromotion(gdb *gorm.DB, memberLevel int) error { sql := "" switch memberLevel { case 2: - sql = "UPDATE invite_member_report SET gold_count=gold_count+1 " + - fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", - dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) - m.GoldCount = 1 + switch memberGenre { + case 200: // 年度黄金 + sql = "UPDATE invite_member_report SET gold_count=gold_count+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.GoldCount = 1 + case 201: // 季度黄金 + sql = "UPDATE invite_member_report SET gold_count_quarter=gold_count_quarter+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.GoldCountQuarter = 1 + case 202: // 半年黄金 + sql = "UPDATE invite_member_report SET gold_count_half=gold_count_half+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.GoldCountHalf = 1 + } case 4: sql = "UPDATE invite_member_report SET platinum_count=platinum_count+1 " + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", @@ -504,7 +517,7 @@ func (m *CooperativeBusiness) SetAssistantMemberDeductConfig(storeId uint32) { m.CooperativeAssistantMemberDeduct = &assistantDeductConfig } -func AddCooperativeMemberRenewal(cooperativeId, storeId, assistantUid uint32, memberLevel int) { +func AddCooperativeMemberRenewal(cooperativeId, storeId, assistantUid uint32, memberLevel, memberGenre int) { defer func() { if err := recover(); err != nil { logger.Error("err:", err) @@ -558,7 +571,7 @@ func AddCooperativeMemberRenewal(cooperativeId, storeId, assistantUid uint32, me return } - err = inviteReport.AddRenewal(begin, memberLevel) + err = inviteReport.AddRenewal(begin, memberLevel, memberGenre) if err != nil { begin.Rollback() logger.Error("promotion add promotion err:", err) @@ -767,7 +780,7 @@ func (m *CooperativeMemberPromotionStoreDay) AddRenewal(gdb *gorm.DB, memberLeve return nil } -func (m *InviteMemberReport) AddRenewal(gdb *gorm.DB, memberLevel int) error { +func (m *InviteMemberReport) AddRenewal(gdb *gorm.DB, memberLevel, memberGenre int) error { dateString := utils.MonthDate() if memberLevel < 0 { return errors.New("member level err") @@ -786,10 +799,24 @@ func (m *InviteMemberReport) AddRenewal(gdb *gorm.DB, memberLevel int) error { sql := "" switch memberLevel { case 2: - sql = "UPDATE invite_member_report SET renewal_gold_count=renewal_gold_count+1 " + - fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", - dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) - m.RenewalGoldCount = 1 + switch memberGenre { + case 200: // 年度黄金 + sql = "UPDATE invite_member_report SET renewal_gold_count=renewal_gold_count+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.RenewalGoldCount = 1 + case 201: // 季度黄金 + sql = "UPDATE invite_member_report SET renewal_gold_count_quarter=renewal_gold_count_quarter+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.RenewalGoldCountQuarter = 1 + case 202: // 半年黄金 + sql = "UPDATE invite_member_report SET renewal_gold_count_half=renewal_gold_count_half+1 " + + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", + dateString, m.CooperativeBusinessId, m.StoreId, m.Uid) + m.RenewalGoldCountHalf = 1 + } + case 4: sql = "UPDATE invite_member_report SET renewal_platinum_count=renewal_platinum_count+1 " + fmt.Sprintf("WHERE date='%s' AND cooperative_business_id=%d AND store_id=%d AND uid=%d", diff --git a/model/model_test.go b/model/model_test.go index 01975b8..be56b11 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -1307,7 +1307,7 @@ func TestExportGoodsStock(t *testing.T) { func TestAddCooperativeMemberPromotion(t *testing.T) { InitTestDB() DB = DBDev - AddCooperativeMemberPromotion(4, 20, 68608411, 2) + AddCooperativeMemberPromotion(4, 20, 68608411, 2, 200) } func TestUpdateCooperativeBusiness(t *testing.T) { diff --git a/model/user.go b/model/user.go index a0abbaf..54d6851 100644 --- a/model/user.go +++ b/model/user.go @@ -407,11 +407,13 @@ func (m *UserOpenMemberRecord) MallGoodsOrderRefund(outTradeNo string) error { // gen:qs type InviteMemberReport struct { Model - Uid uint32 `json:"uid" gorm:"index"` // 店员uid - StoreId uint32 `json:"store_id" gorm:"index"` // 门店id - GoldCount uint32 `json:"gold_count"` // 黄金数量 - PlatinumCount uint32 `json:"platinum_count"` // 白金数量 - BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量 + Uid uint32 `json:"uid" gorm:"index"` // 店员uid + StoreId uint32 `json:"store_id" gorm:"index"` // 门店id + GoldCount uint32 `json:"gold_count"` // 黄金数量 + GoldCountHalf uint32 `json:"gold_count_half"` // 半年黄金数量 + GoldCountQuarter uint32 `json:"gold_count_quarter"` // 季度黄金数量 + PlatinumCount uint32 `json:"platinum_count"` // 白金数量 + BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量 //ReportTime string `json:"report_time" gorm:"index"` // 业绩时间 Date string `json:"date" gorm:"index"` // 业绩时间 DeductAmount uint32 `json:"deduct_amount"` // 店员提成 @@ -420,7 +422,9 @@ type InviteMemberReport struct { GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成 PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成 BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成 - RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量(自动) + RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费年度黄金会员数量(自动) + RenewalGoldCountHalf uint32 `json:"renewal_gold_count_half"` // 续费半年黄金会员数量(自动) + RenewalGoldCountQuarter uint32 `json:"renewal_gold_count_quarter"` // 续费季度黄金会员数量(自动) RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量(自动) RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量(自动) UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量(自动)