1.修改租卡会员统计相关逻辑;

This commit is contained in:
chenlin 2024-02-01 18:24:57 +08:00
parent 246c641bc6
commit eb920a93cd
4 changed files with 59 additions and 25 deletions

View File

@ -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))
}
}

View File

@ -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",

View File

@ -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) {

View File

@ -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"` // 升级:黄金->白金数量(自动)