From 54189620be90e4974350161100e368e11fb57fd2 Mon Sep 17 00:00:00 2001 From: li Date: Wed, 23 Nov 2022 16:20:05 +0800 Subject: [PATCH 1/3] fix: --- controller/game_card.go | 9 ++++- model/autogenerated_user.go | 78 +++++++++++++++++++++++++++++++++++++ model/model_test.go | 7 +++- model/user.go | 12 +++++- 4 files changed, 101 insertions(+), 5 deletions(-) diff --git a/controller/game_card.go b/controller/game_card.go index 8d23b96..73f45f0 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -471,6 +471,7 @@ func PushWXPayNotice(c *gin.Context) { if !user.OpenMemberTime.IsZero() { spendType = 3 } + isShopAssistantCode := false expireTime := newTime.AddDate(1, 0, 0) if user.MemberExpire.After(newTime) { expireTime = user.MemberExpire.AddDate(1, 0, 0) @@ -520,6 +521,7 @@ func PushWXPayNotice(c *gin.Context) { logger.Error("user coupon err:", err) } else { if userCoupon.Approach == 1 { + isShopAssistantCode = true err = model.StorePromotion(userCoupon.PromotionalSales, userCoupon.Uid, nil, &user) if err != nil { logger.Error("store promotion err:", err) @@ -566,6 +568,9 @@ func PushWXPayNotice(c *gin.Context) { //if user.MemberLevel != 2 { // qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel) //} + if isShopAssistantCode { + qs = qs.SetInviteForm(1) + } qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel) _, err = qs.SetMemberType(2).SetMemberStatus(2). SetAction(2).SetSpendType(spendType).UpdateNum() @@ -614,11 +619,13 @@ func PushWXPayNotice(c *gin.Context) { UserInviteRecordId: inviteRecordNew.ID, FirstInvite: 0, } + if isShopAssistantCode { + userInviteNew.InviteForm = 1 + } err = model.DB.Create(userInviteNew).Error if err != nil { logger.Error("create invite record err:", err) } - } if invite.FromUid != 0 { diff --git a/model/autogenerated_user.go b/model/autogenerated_user.go index 3b12c9f..423b0d8 100644 --- a/model/autogenerated_user.go +++ b/model/autogenerated_user.go @@ -8039,6 +8039,62 @@ func (qs UserInviteQuerySet) IDNotIn(ID ...uint32) UserInviteQuerySet { return qs.w(qs.db.Where("id NOT IN (?)", ID)) } +// InviteFormEq is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormEq(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form = ?", inviteForm)) +} + +// InviteFormGt is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormGt(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form > ?", inviteForm)) +} + +// InviteFormGte is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormGte(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form >= ?", inviteForm)) +} + +// InviteFormIn is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormIn(inviteForm ...uint32) UserInviteQuerySet { + if len(inviteForm) == 0 { + qs.db.AddError(errors.New("must at least pass one inviteForm in InviteFormIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("invite_form IN (?)", inviteForm)) +} + +// InviteFormLt is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormLt(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form < ?", inviteForm)) +} + +// InviteFormLte is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormLte(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form <= ?", inviteForm)) +} + +// InviteFormNe is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormNe(inviteForm uint32) UserInviteQuerySet { + return qs.w(qs.db.Where("invite_form != ?", inviteForm)) +} + +// InviteFormNotIn is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) InviteFormNotIn(inviteForm ...uint32) UserInviteQuerySet { + if len(inviteForm) == 0 { + qs.db.AddError(errors.New("must at least pass one inviteForm in InviteFormNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("invite_form NOT IN (?)", inviteForm)) +} + // Limit is an autogenerated method // nolint: dupl func (qs UserInviteQuerySet) Limit(limit int) UserInviteQuerySet { @@ -8297,6 +8353,12 @@ func (qs UserInviteQuerySet) OrderAscByID() UserInviteQuerySet { return qs.w(qs.db.Order("id ASC")) } +// OrderAscByInviteForm is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) OrderAscByInviteForm() UserInviteQuerySet { + return qs.w(qs.db.Order("invite_form ASC")) +} + // OrderAscByMemberLevel is an autogenerated method // nolint: dupl func (qs UserInviteQuerySet) OrderAscByMemberLevel() UserInviteQuerySet { @@ -8405,6 +8467,12 @@ func (qs UserInviteQuerySet) OrderDescByID() UserInviteQuerySet { return qs.w(qs.db.Order("id DESC")) } +// OrderDescByInviteForm is an autogenerated method +// nolint: dupl +func (qs UserInviteQuerySet) OrderDescByInviteForm() UserInviteQuerySet { + return qs.w(qs.db.Order("invite_form DESC")) +} + // OrderDescByMemberLevel is an autogenerated method // nolint: dupl func (qs UserInviteQuerySet) OrderDescByMemberLevel() UserInviteQuerySet { @@ -8947,6 +9015,13 @@ func (u UserInviteUpdater) SetID(ID uint32) UserInviteUpdater { return u } +// SetInviteForm is an autogenerated method +// nolint: dupl +func (u UserInviteUpdater) SetInviteForm(inviteForm uint32) UserInviteUpdater { + u.fields[string(UserInviteDBSchema.InviteForm)] = inviteForm + return u +} + // SetMemberLevel is an autogenerated method // nolint: dupl func (u UserInviteUpdater) SetMemberLevel(memberLevel uint32) UserInviteUpdater { @@ -9077,6 +9152,7 @@ var UserInviteDBSchema = struct { UserInviteRecordId UserInviteDBSchemaField FirstInvite UserInviteDBSchemaField Scan UserInviteDBSchemaField + InviteForm UserInviteDBSchemaField }{ ID: UserInviteDBSchemaField("id"), @@ -9097,6 +9173,7 @@ var UserInviteDBSchema = struct { UserInviteRecordId: UserInviteDBSchemaField("user_invite_record_id"), FirstInvite: UserInviteDBSchemaField("first_invite"), Scan: UserInviteDBSchemaField("scan"), + InviteForm: UserInviteDBSchemaField("invite_form"), } // Update updates UserInvite fields by primary key @@ -9121,6 +9198,7 @@ func (o *UserInvite) Update(db *gorm.DB, fields ...UserInviteDBSchemaField) erro "user_invite_record_id": o.UserInviteRecordId, "first_invite": o.FirstInvite, "scan": o.Scan, + "invite_form": o.InviteForm, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/model_test.go b/model/model_test.go index 0b2460a..f1d8ee3 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -164,6 +164,7 @@ func InitTestDB() { &UserActionLog{}, &UserCoupon{}, &ShopperPromotionCode{}, + &UserInvite{}, ) fmt.Println("DB init success") @@ -211,6 +212,7 @@ func InitDBProd() { &ShopperPromotionCode{}, &UserCoupon{}, + &UserInvite{}, ) if err := DBProd.DB().Ping(); err != nil { @@ -2005,12 +2007,13 @@ func TestNameScanInvite(t *testing.T) { } +// 模拟扫码邀请用户 func TestNewUser(t *testing.T) { InitTestDB() DB = DBDev - InviteUid := uint32(63192613) - Uid := uint32(45321263) + InviteUid := uint32(87564738) + Uid := uint32(17107418) user := GetUserByUid(Uid) nowTime := time.Now() diff --git a/model/user.go b/model/user.go index 2049f83..05430bf 100644 --- a/model/user.go +++ b/model/user.go @@ -96,11 +96,12 @@ type UserInvite struct { ToUid uint32 `json:"to_uid"` // 被邀请用户 StoreType uint32 `json:"store_type"` // 门店类型 1-自有 2-合作商 Action uint32 `json:"action"` // 1-未激活 2-激活邀请 - SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级 + SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级 5-店员推广续费 MemberLevel uint32 `json:"member_level"` // 会员等级 UserInviteRecordId uint32 `json:"user_invite_record_id"` // 邀请记录 FirstInvite uint32 `json:"first_invite"` // 首次 Scan uint32 `json:"scan"` // 扫码 + InviteForm uint32 `json:"invite_form"` // 邀请方式: 1-店员邀请码续费 //InviteTime time.Time `json:"invite_time"` // 邀请时间 ToUser *User `json:"to_user" gorm:"-"` @@ -586,6 +587,9 @@ func (m *UserInviteListReq) InviteUserList() (*UserInviteListResp, error) { if user.CooperativeBusinessId == 1 { if m.SpendType != 0 { qs = qs.SpendTypeEq(m.SpendType) + if m.SpendType == 3 { + qs = qs.InviteFormEq(1) + } } else { qs = qs.SpendTypeIn([]uint32{2, 3}...) } @@ -596,6 +600,9 @@ func (m *UserInviteListReq) InviteUserList() (*UserInviteListResp, error) { } if m.MemberType == 0 && m.SpendType != 0 { qs = qs.SpendTypeEq(m.SpendType) + if m.SpendType == 3 { + qs = qs.InviteFormEq(1) + } } if m.StartTime != "" { parse, err := time.Parse(DateTimeFormat, m.StartTime) @@ -1191,6 +1198,7 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error { UserInviteRecordId: inviteRecord.ID, FirstInvite: 0, // TODO Scan: 1, + InviteForm: 1, } fmt.Println("创建邀请:", invite) if err := invite.Create(DB); err != nil { @@ -1201,7 +1209,7 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error { if inviteErr == nil { err = NewUserInviteQuerySet(DB).IDEq(inviteNew.ID).GetUpdater().SetCreatedAt(nowTime). - SetUserInviteRecordId(inviteRecord.ID).Update() + SetUserInviteRecordId(inviteRecord.ID).SetInviteForm(1).Update() if err != nil { logger.Error("from uid update user invite err:", err, inviteUid) } From 17c104a1bc8309c30533f40ec839de2afb7a386e Mon Sep 17 00:00:00 2001 From: li Date: Thu, 24 Nov 2022 11:12:12 +0800 Subject: [PATCH 2/3] fix: --- model/model_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/model/model_test.go b/model/model_test.go index f1d8ee3..d8a147e 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -2013,7 +2013,9 @@ func TestNewUser(t *testing.T) { DB = DBDev InviteUid := uint32(87564738) - Uid := uint32(17107418) + //Uid := uint32(17107418) + //Uid := uint32(88995421) + Uid := uint32(45117187) user := GetUserByUid(Uid) nowTime := time.Now() From 2e8ea731ab18fb8dd9414cf582b2e04d7f8951ea Mon Sep 17 00:00:00 2001 From: li Date: Thu, 24 Nov 2022 17:56:21 +0800 Subject: [PATCH 3/3] fix: --- controller/user.go | 5 +++ lib/status/status.go | 8 ++-- model/autogenerated_user.go | 78 +++++++++++++++++++++++++++++++++++++ model/model_test.go | 2 + model/user.go | 7 ++-- 5 files changed, 94 insertions(+), 6 deletions(-) diff --git a/controller/user.go b/controller/user.go index dd46a26..bf2b7f1 100644 --- a/controller/user.go +++ b/controller/user.go @@ -741,6 +741,11 @@ func RefundDeposit(c *gin.Context) { RespJson(c, status.InternalServerError, nil) return } + if user.DepositType == 3 { + logger.Error("deposit restraint") + RespJson(c, status.DepositRestraint, nil) + return + } unreturnedOrders, err := model.IsUserHaveUnreturnedOrder(user.Uid) if err != nil { logger.Error("err:", err) diff --git a/lib/status/status.go b/lib/status/status.go index 7122057..81f340c 100644 --- a/lib/status/status.go +++ b/lib/status/status.go @@ -107,6 +107,7 @@ const ( UserNotMember = 500524 // 仅开通过会员的用户可兑换 CouponReceived = 500525 // 你已兑换过该券 CouponPromotionalUnused = 500526 // 您有未使用的专属续费券 + DepositRestraint = 500527 // 押金受限 ToastErr = 600 // 报错 ) @@ -179,9 +180,9 @@ var statusDesc = map[int]string{ UserNotMember: "仅开通过会员的用户可兑换", CouponReceived: "你已兑换过该券", CouponPromotionalUnused: "您有未使用的专属续费券", - - NotMember: "非会员", - HadReceiveReward: "已经领取过了", + DepositRestraint: "押金受限", + NotMember: "非会员", + HadReceiveReward: "已经领取过了", } var statusMsg = map[int]string{ @@ -253,6 +254,7 @@ var statusMsg = map[int]string{ UserNotMember: "仅开通过会员的用户可兑换", CouponReceived: "你已兑换过该券", CouponPromotionalUnused: "您有未使用的专属续费券", + DepositRestraint: "押金受限", AwardOffShelves: "奖品已下架", AwardExchangeOut: "奖品已兑完", diff --git a/model/autogenerated_user.go b/model/autogenerated_user.go index 423b0d8..3bc243c 100644 --- a/model/autogenerated_user.go +++ b/model/autogenerated_user.go @@ -12677,6 +12677,62 @@ func (qs UserQuerySet) DepositNotIn(deposit ...uint32) UserQuerySet { return qs.w(qs.db.Where("deposit NOT IN (?)", deposit)) } +// DepositTypeEq is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeEq(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type = ?", depositType)) +} + +// DepositTypeGt is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeGt(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type > ?", depositType)) +} + +// DepositTypeGte is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeGte(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type >= ?", depositType)) +} + +// DepositTypeIn is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeIn(depositType ...uint32) UserQuerySet { + if len(depositType) == 0 { + qs.db.AddError(errors.New("must at least pass one depositType in DepositTypeIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("deposit_type IN (?)", depositType)) +} + +// DepositTypeLt is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeLt(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type < ?", depositType)) +} + +// DepositTypeLte is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeLte(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type <= ?", depositType)) +} + +// DepositTypeNe is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeNe(depositType uint32) UserQuerySet { + return qs.w(qs.db.Where("deposit_type != ?", depositType)) +} + +// DepositTypeNotIn is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) DepositTypeNotIn(depositType ...uint32) UserQuerySet { + if len(depositType) == 0 { + qs.db.AddError(errors.New("must at least pass one depositType in DepositTypeNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("deposit_type NOT IN (?)", depositType)) +} + // GenderEq is an autogenerated method // nolint: dupl func (qs UserQuerySet) GenderEq(gender uint8) UserQuerySet { @@ -13365,6 +13421,12 @@ func (qs UserQuerySet) OrderAscByDeposit() UserQuerySet { return qs.w(qs.db.Order("deposit ASC")) } +// OrderAscByDepositType is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OrderAscByDepositType() UserQuerySet { + return qs.w(qs.db.Order("deposit_type ASC")) +} + // OrderAscByGender is an autogenerated method // nolint: dupl func (qs UserQuerySet) OrderAscByGender() UserQuerySet { @@ -13575,6 +13637,12 @@ func (qs UserQuerySet) OrderDescByDeposit() UserQuerySet { return qs.w(qs.db.Order("deposit DESC")) } +// OrderDescByDepositType is an autogenerated method +// nolint: dupl +func (qs UserQuerySet) OrderDescByDepositType() UserQuerySet { + return qs.w(qs.db.Order("deposit_type DESC")) +} + // OrderDescByGender is an autogenerated method // nolint: dupl func (qs UserQuerySet) OrderDescByGender() UserQuerySet { @@ -14642,6 +14710,13 @@ func (u UserUpdater) SetDeposit(deposit uint32) UserUpdater { return u } +// SetDepositType is an autogenerated method +// nolint: dupl +func (u UserUpdater) SetDepositType(depositType uint32) UserUpdater { + u.fields[string(UserDBSchema.DepositType)] = depositType + return u +} + // SetGender is an autogenerated method // nolint: dupl func (u UserUpdater) SetGender(gender uint8) UserUpdater { @@ -14887,6 +14962,7 @@ var UserDBSchema = struct { OpenMemberLevel UserDBSchemaField Version UserDBSchemaField InviteTime UserDBSchemaField + DepositType UserDBSchemaField }{ ID: UserDBSchemaField("id"), @@ -14924,6 +15000,7 @@ var UserDBSchema = struct { OpenMemberLevel: UserDBSchemaField("open_member_level"), Version: UserDBSchemaField("version"), InviteTime: UserDBSchemaField("invite_time"), + DepositType: UserDBSchemaField("deposit_type"), } // Update updates User fields by primary key @@ -14965,6 +15042,7 @@ func (o *User) Update(db *gorm.DB, fields ...UserDBSchemaField) error { "open_member_level": o.OpenMemberLevel, "version": o.Version, "invite_time": o.InviteTime, + "deposit_type": o.DepositType, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/model_test.go b/model/model_test.go index d8a147e..e7e9955 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -165,6 +165,7 @@ func InitTestDB() { &UserCoupon{}, &ShopperPromotionCode{}, &UserInvite{}, + &User{}, ) fmt.Println("DB init success") @@ -213,6 +214,7 @@ func InitDBProd() { &ShopperPromotionCode{}, &UserCoupon{}, &UserInvite{}, + &User{}, ) if err := DBProd.DB().Ping(); err != nil { diff --git a/model/user.go b/model/user.go index 05430bf..663011f 100644 --- a/model/user.go +++ b/model/user.go @@ -49,9 +49,10 @@ type User struct { //RenewalMemberLevel uint32 `json:"renewal_member_level"` OpenMemberLevel uint32 `json:"open_member_level"` - Version uint32 `json:"-"` // - UserVm *UserVm `json:"user_vm" gorm:"-"` // - InviteTime time.Time `json:"invite_time"` + Version uint32 `json:"-"` // + UserVm *UserVm `json:"user_vm" gorm:"-"` // + InviteTime time.Time `json:"invite_time"` + DepositType uint32 `json:"deposit_type"` // 押金类型: 3-未充值 //RoleId uint32 `json:"role_id"` // 角色id }