fix:店员

This commit is contained in:
li 2022-11-01 14:23:06 +08:00
parent 24b6a4a6d4
commit caaa9cba41
11 changed files with 1682 additions and 135 deletions

View File

@ -104,8 +104,9 @@ func AuthLogin(c *gin.Context) {
if err != nil {
logger.Error("create user invite record err:", err)
}
}
}
// 扫码记录
inviteRecord := &model.UserInviteRecord{
ToUid: user.Uid,
FromUid: req.InviteUid,
@ -120,11 +121,12 @@ func AuthLogin(c *gin.Context) {
if err != nil {
logger.Error("create user invite record err:", err)
}
// UserInvite 邀请主要
var inviteNew model.UserInvite
inviteErr := model.NewUserInviteQuerySet(model.DB).ToUidEq(user.Uid).FromUidEq(req.InviteUid).ActionEq(1).
SpendTypeEq(1).One(&inviteNew)
if inviteErr != nil && inviteErr != model.RecordNotFound {
// 是否存在未开通
logger.Error("user invite err:", err)
}
fmt.Println("inviteErr:", inviteErr)
@ -671,6 +673,112 @@ func UserCodeToCoupon(c *gin.Context) {
RespJson(c, status.Unauthorized, nil)
return
}
if len(req.Code) == 6 {
user := model.GetUserByUid(uc.Uid)
if user == nil {
logger.Error("user is nil")
RespJson(c, status.Unauthorized, nil)
return
}
if !user.IsMember() {
logger.Error("user is not member")
RespJson(c, status.UserNotMember, nil)
return
}
var shopperPromotionCode model.ShopperPromotionCode
err := model.NewShopperPromotionCodeQuerySet(model.DB).CodeEq(req.Code).One(&shopperPromotionCode)
if err != nil {
logger.Error("shopper promotion code err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
//model.UserCoupon{}
exist, err := model.QueryRecordExist(fmt.Sprintf(
"SELECT * FROM user_coupon WHERE uid=%d AND approach=1 AND activity_id=1 AND state=1 AND promotional_sales=%d ",
uc.Uid, shopperPromotionCode.Uid))
if err != nil {
logger.Error("exist err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
if exist {
logger.Error("coupon received err:", err)
RespJson(c, status.CouponReceived, nil)
return
}
count, err := model.NewUserCouponQuerySet(model.DB).UidEq(uc.Uid).ActivityIdEq(1).
ApproachEq(1).StateEq(1).Count()
if err != nil {
logger.Error("count user coupon err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
if count >= 3 {
logger.Error("coupon count gte 3")
RespJson(c, status.CouponReceived, nil)
return
}
var userCoupons []model.UserCoupon
err = model.NewUserCouponQuerySet(model.DB).UidEq(uc.Uid).ActivityTypeEq(1).
StateEq(1).All(&userCoupons)
if err != nil {
logger.Error("coupons err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
userCouponMap := make(map[uint32]int, 0)
for i, _ := range userCoupons {
userCouponMap[userCoupons[i].CouponId] = i
}
var coupons []model.Coupon
err = model.NewCouponQuerySet(model.DB).ActivityIdEq(1).All(&coupons)
if err != nil {
logger.Error("coupons err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
for i, _ := range coupons {
_, ok := userCouponMap[coupons[i].ID]
if ok {
continue
}
userCoupon := &model.UserCoupon{
Uid: uc.Uid,
CouponId: coupons[i].ID,
CouponType: coupons[i].CouponType,
ActivityType: coupons[i].ActivityType,
ActivityId: coupons[i].ActivityId,
Value: coupons[i].Value,
State: 1,
ActiveStart: time.Now(),
ActiveEnd: time.Now().AddDate(0, 0, 30),
UseTime: time.Time{},
MemberLevel: coupons[i].MemberLevel,
Approach: 1,
PromotionalSales: shopperPromotionCode.Uid,
RedeemCode: shopperPromotionCode.Code,
}
err = model.DB.Create(userCoupon).Error
if err != nil {
logger.Error("user coupon err:", err)
continue
}
}
RespOK(c, nil)
return
}
var redeemCode model.RedeemCode
err := model.NewRedeemCodeQuerySet(model.DB).SerialCodeEq(req.Code).One(&redeemCode)
if err != nil {

View File

@ -460,11 +460,17 @@ func PushWXPayNotice(c *gin.Context) {
AfterMemberLevel: record.MemberLevel,
}
newTime := time.Now()
var spendType uint32
var user model.User
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
if err != nil {
logger.Error("err:", err)
return
} else {
spendType = uint32(2)
if !user.OpenMemberTime.IsZero() {
spendType = 3
}
expireTime := newTime.AddDate(1, 0, 0)
if user.MemberExpire.After(newTime) {
expireTime = user.MemberExpire.AddDate(1, 0, 0)
@ -507,49 +513,60 @@ func PushWXPayNotice(c *gin.Context) {
if err != nil {
logger.Error("update user coupon state err:", err)
}
var userCoupon model.UserCoupon
err = model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).One(&userCoupon)
if err != nil {
logger.Error("user coupon err:", err)
} else {
if userCoupon.Approach == 1 {
err = model.StorePromotion(userCoupon.PromotionalSales, userCoupon.Uid, nil, &user)
if err != nil {
logger.Error("store promotion err:", err)
}
}
}
}
// 邀请记录
var invite model.UserInvite
//err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).OrderDescByID().Limit(1).One(&invite)
err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).OrderDescByCreatedAt().Limit(1).One(&invite)
if err != nil && err != model.RecordNotFound {
logger.Error("err:", err)
} else {
if err == model.RecordNotFound {
userInvite := &model.UserInvite{
FromUid: 0,
UserType: 0,
StoreId: 0,
MemberOpenTime: newTime,
MemberType: 2,
ToUid: record.Uid,
MemberStatus: 2,
MemberLevel: record.MemberLevel,
Action: 1,
SpendType: 1,
}
err := userInvite.Create(model.DB)
if err != nil {
logger.Error("err:", err)
}
err = model.SendUserVm(record.Uid, record.MemberLevel, 100)
if err != nil {
logger.Error("send user vm err:", err)
}
}
//if err == model.RecordNotFound {
// userInvite := &model.UserInvite{
// FromUid: 0,
// UserType: 0,
// StoreId: 0,
// MemberOpenTime: newTime,
// MemberType: 2,
// ToUid: record.Uid,
// MemberStatus: 2,
// MemberLevel: record.MemberLevel,
// Action: 1,
// SpendType: 1,
// }
// err := userInvite.Create(model.DB)
// if err != nil {
// logger.Error("err:", err)
// }
// err = model.SendUserVm(record.Uid, record.MemberLevel, 100)
// if err != nil {
// logger.Error("send user vm err:", err)
// }
//}
if err == nil {
spendType := uint32(2)
if !user.OpenMemberTime.IsZero() {
spendType = 3
}
//qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
if invite.Action != 2 {
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
if user.MemberLevel != 2 {
// SpendType 类型
//if user.MemberLevel != 2 {
// qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel)
//}
qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel)
}
_, err = qs.SetMemberType(2).SetMemberStatus(2).
SetAction(2).SetSpendType(spendType).UpdateNum()
if err != nil {
@ -585,7 +602,8 @@ func PushWXPayNotice(c *gin.Context) {
FromUid: invite.FromUid,
UserType: invite.UserType,
StoreId: invite.StoreId,
MemberOpenTime: invite.MemberOpenTime,
//MemberOpenTime: invite.MemberOpenTime,
MemberOpenTime: time.Now(),
MemberType: 2,
MemberStatus: 2,
ToUid: invite.ToUid,
@ -613,10 +631,12 @@ func PushWXPayNotice(c *gin.Context) {
}
}
if spendType == 2 {
err = model.SendUserVm(user.Uid, record.MemberLevel, 0)
if err != nil {
logger.Error("send user vm err:", err)
}
}
openMemberChannel := model.OpenMemberChannelUserInvite
userQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater()
@ -624,17 +644,18 @@ func PushWXPayNotice(c *gin.Context) {
if inviteUser.UserType == 2 {
openMemberChannel = model.OpenMemberChannelStorePromotion
if !user.OpenMemberTime.IsZero() {
userQs = userQs.SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
SetCooperativeName(inviteUser.CooperativeName)
fmt.Println("用户续费---")
model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId,
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel))
} else {
fmt.Println("用户开通------")
model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId,
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel))
}
userQs = userQs.SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
SetCooperativeName(inviteUser.CooperativeName)
}
_, err = userQs.SetOpenMemberChannel(openMemberChannel).UpdateNum()
@ -656,7 +677,8 @@ func PushWXPayNotice(c *gin.Context) {
}()
model.CreateUserRentCardByMemberLevel(record.Uid, record.MemberLevel, memberConfig.CardMax)
}
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).GetUpdater().SetState(2).UpdateNum()
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).
GetUpdater().SetState(2).UpdateNum()
if err != nil {
logger.Error("update user open member record state:err", err)
}

View File

@ -268,6 +268,7 @@ func OpenMember(c *gin.Context) {
coupon.ActivityId == 1 && coupon.State == 1 {
totalFee -= coupon.Value
if coupon.RedeemCode == "" {
go func() {
action := 0
if coupon.MemberLevel == 2 {
@ -288,6 +289,8 @@ func OpenMember(c *gin.Context) {
}
_ = userLog.Add()
}()
}
} else if coupon.State == 1 && coupon.ActivityType == 2 {
totalFee -= coupon.Value
} else {

View File

@ -104,7 +104,9 @@ const (
StateNotCancel = 500521 // 状态不能取消
UserFocusHasCoupon = 500522 // 用户已经领取了兑换券
UserApplyDepositRefund = 500523 // 你有退保证金申请,不能借卡
UserNotMember = 500524 // 仅开通过会员的用户可兑换
CouponReceived = 500525 // 你已兑换过该券
CouponPromotionalUnused = 500526 // 您有未使用的专属续费券
ToastErr = 600 // 报错
)
@ -174,6 +176,9 @@ var statusDesc = map[int]string{
StateNotCancel: "状态不能取消",
UserFocusHasCoupon: "你已经兑换了优惠券",
UserApplyDepositRefund: "你有退保证金申请,不能借卡",
UserNotMember: "仅开通过会员的用户可兑换",
CouponReceived: "你已兑换过该券",
CouponPromotionalUnused: "您有未使用的专属续费券",
NotMember: "非会员",
HadReceiveReward: "已经领取过了",
@ -245,6 +250,9 @@ var statusMsg = map[int]string{
UserFocusHasCoupon: "你已经兑换了优惠券",
UserApplyDepositRefund: "你有退保证金申请,不能借卡",
UserNotMember: "仅开通过会员的用户可兑换",
CouponReceived: "你已兑换过该券",
CouponPromotionalUnused: "您有未使用的专属续费券",
AwardOffShelves: "奖品已下架",
AwardExchangeOut: "奖品已兑完",

View File

@ -3273,6 +3273,62 @@ func (qs UserCouponQuerySet) All(ret *[]UserCoupon) error {
return qs.db.Find(ret).Error
}
// ApproachEq is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachEq(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach = ?", approach))
}
// ApproachGt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachGt(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach > ?", approach))
}
// ApproachGte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachGte(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach >= ?", approach))
}
// ApproachIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachIn(approach ...uint32) UserCouponQuerySet {
if len(approach) == 0 {
qs.db.AddError(errors.New("must at least pass one approach in ApproachIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("approach IN (?)", approach))
}
// ApproachLt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachLt(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach < ?", approach))
}
// ApproachLte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachLte(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach <= ?", approach))
}
// ApproachNe is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachNe(approach uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("approach != ?", approach))
}
// ApproachNotIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) ApproachNotIn(approach ...uint32) UserCouponQuerySet {
if len(approach) == 0 {
qs.db.AddError(errors.New("must at least pass one approach in ApproachNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("approach NOT IN (?)", approach))
}
// Count is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) Count() (int, error) {
@ -3675,6 +3731,12 @@ func (qs UserCouponQuerySet) OrderAscByActivityType() UserCouponQuerySet {
return qs.w(qs.db.Order("activity_type ASC"))
}
// OrderAscByApproach is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderAscByApproach() UserCouponQuerySet {
return qs.w(qs.db.Order("approach ASC"))
}
// OrderAscByCouponId is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderAscByCouponId() UserCouponQuerySet {
@ -3711,6 +3773,18 @@ func (qs UserCouponQuerySet) OrderAscByMemberLevel() UserCouponQuerySet {
return qs.w(qs.db.Order("member_level ASC"))
}
// OrderAscByPromotionalSales is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderAscByPromotionalSales() UserCouponQuerySet {
return qs.w(qs.db.Order("promotional_sales ASC"))
}
// OrderAscByRedeemCode is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderAscByRedeemCode() UserCouponQuerySet {
return qs.w(qs.db.Order("redeem_code ASC"))
}
// OrderAscByState is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderAscByState() UserCouponQuerySet {
@ -3765,6 +3839,12 @@ func (qs UserCouponQuerySet) OrderDescByActivityType() UserCouponQuerySet {
return qs.w(qs.db.Order("activity_type DESC"))
}
// OrderDescByApproach is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderDescByApproach() UserCouponQuerySet {
return qs.w(qs.db.Order("approach DESC"))
}
// OrderDescByCouponId is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderDescByCouponId() UserCouponQuerySet {
@ -3801,6 +3881,18 @@ func (qs UserCouponQuerySet) OrderDescByMemberLevel() UserCouponQuerySet {
return qs.w(qs.db.Order("member_level DESC"))
}
// OrderDescByPromotionalSales is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderDescByPromotionalSales() UserCouponQuerySet {
return qs.w(qs.db.Order("promotional_sales DESC"))
}
// OrderDescByRedeemCode is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderDescByRedeemCode() UserCouponQuerySet {
return qs.w(qs.db.Order("redeem_code DESC"))
}
// OrderDescByState is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) OrderDescByState() UserCouponQuerySet {
@ -3831,6 +3923,130 @@ func (qs UserCouponQuerySet) OrderDescByValue() UserCouponQuerySet {
return qs.w(qs.db.Order("value DESC"))
}
// PromotionalSalesEq is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesEq(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales = ?", promotionalSales))
}
// PromotionalSalesGt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesGt(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales > ?", promotionalSales))
}
// PromotionalSalesGte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesGte(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales >= ?", promotionalSales))
}
// PromotionalSalesIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesIn(promotionalSales ...uint32) UserCouponQuerySet {
if len(promotionalSales) == 0 {
qs.db.AddError(errors.New("must at least pass one promotionalSales in PromotionalSalesIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("promotional_sales IN (?)", promotionalSales))
}
// PromotionalSalesLt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesLt(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales < ?", promotionalSales))
}
// PromotionalSalesLte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesLte(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales <= ?", promotionalSales))
}
// PromotionalSalesNe is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesNe(promotionalSales uint32) UserCouponQuerySet {
return qs.w(qs.db.Where("promotional_sales != ?", promotionalSales))
}
// PromotionalSalesNotIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) PromotionalSalesNotIn(promotionalSales ...uint32) UserCouponQuerySet {
if len(promotionalSales) == 0 {
qs.db.AddError(errors.New("must at least pass one promotionalSales in PromotionalSalesNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("promotional_sales NOT IN (?)", promotionalSales))
}
// RedeemCodeEq is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeEq(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code = ?", redeemCode))
}
// RedeemCodeGt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeGt(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code > ?", redeemCode))
}
// RedeemCodeGte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeGte(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code >= ?", redeemCode))
}
// RedeemCodeIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeIn(redeemCode ...string) UserCouponQuerySet {
if len(redeemCode) == 0 {
qs.db.AddError(errors.New("must at least pass one redeemCode in RedeemCodeIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("redeem_code IN (?)", redeemCode))
}
// RedeemCodeLike is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeLike(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code LIKE ?", redeemCode))
}
// RedeemCodeLt is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeLt(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code < ?", redeemCode))
}
// RedeemCodeLte is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeLte(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code <= ?", redeemCode))
}
// RedeemCodeNe is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeNe(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code != ?", redeemCode))
}
// RedeemCodeNotIn is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeNotIn(redeemCode ...string) UserCouponQuerySet {
if len(redeemCode) == 0 {
qs.db.AddError(errors.New("must at least pass one redeemCode in RedeemCodeNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("redeem_code NOT IN (?)", redeemCode))
}
// RedeemCodeNotlike is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) RedeemCodeNotlike(redeemCode string) UserCouponQuerySet {
return qs.w(qs.db.Where("redeem_code NOT LIKE ?", redeemCode))
}
// StateEq is an autogenerated method
// nolint: dupl
func (qs UserCouponQuerySet) StateEq(state uint32) UserCouponQuerySet {
@ -4099,6 +4315,13 @@ func (u UserCouponUpdater) SetActivityType(activityType uint32) UserCouponUpdate
return u
}
// SetApproach is an autogenerated method
// nolint: dupl
func (u UserCouponUpdater) SetApproach(approach uint32) UserCouponUpdater {
u.fields[string(UserCouponDBSchema.Approach)] = approach
return u
}
// SetCouponId is an autogenerated method
// nolint: dupl
func (u UserCouponUpdater) SetCouponId(couponId uint32) UserCouponUpdater {
@ -4141,6 +4364,20 @@ func (u UserCouponUpdater) SetMemberLevel(memberLevel uint32) UserCouponUpdater
return u
}
// SetPromotionalSales is an autogenerated method
// nolint: dupl
func (u UserCouponUpdater) SetPromotionalSales(promotionalSales uint32) UserCouponUpdater {
u.fields[string(UserCouponDBSchema.PromotionalSales)] = promotionalSales
return u
}
// SetRedeemCode is an autogenerated method
// nolint: dupl
func (u UserCouponUpdater) SetRedeemCode(redeemCode string) UserCouponUpdater {
u.fields[string(UserCouponDBSchema.RedeemCode)] = redeemCode
return u
}
// SetState is an autogenerated method
// nolint: dupl
func (u UserCouponUpdater) SetState(state uint32) UserCouponUpdater {
@ -4219,6 +4456,9 @@ var UserCouponDBSchema = struct {
ActiveEnd UserCouponDBSchemaField
UseTime UserCouponDBSchemaField
MemberLevel UserCouponDBSchemaField
Approach UserCouponDBSchemaField
PromotionalSales UserCouponDBSchemaField
RedeemCode UserCouponDBSchemaField
}{
ID: UserCouponDBSchemaField("id"),
@ -4236,6 +4476,9 @@ var UserCouponDBSchema = struct {
ActiveEnd: UserCouponDBSchemaField("active_end"),
UseTime: UserCouponDBSchemaField("use_time"),
MemberLevel: UserCouponDBSchemaField("member_level"),
Approach: UserCouponDBSchemaField("approach"),
PromotionalSales: UserCouponDBSchemaField("promotional_sales"),
RedeemCode: UserCouponDBSchemaField("redeem_code"),
}
// Update updates UserCoupon fields by primary key
@ -4257,6 +4500,9 @@ func (o *UserCoupon) Update(db *gorm.DB, fields ...UserCouponDBSchemaField) erro
"active_end": o.ActiveEnd,
"use_time": o.UseTime,
"member_level": o.MemberLevel,
"approach": o.Approach,
"promotional_sales": o.PromotionalSales,
"redeem_code": o.RedeemCode,
}
u := map[string]interface{}{}
for _, f := range fields {

View File

@ -6884,6 +6884,768 @@ func NewOperationLogUpdater(db *gorm.DB) OperationLogUpdater {
// ===== END of OperationLog modifiers
// ===== BEGIN of query set ShopperPromotionCodeQuerySet
// ShopperPromotionCodeQuerySet is an queryset type for ShopperPromotionCode
type ShopperPromotionCodeQuerySet struct {
db *gorm.DB
}
// NewShopperPromotionCodeQuerySet constructs new ShopperPromotionCodeQuerySet
func NewShopperPromotionCodeQuerySet(db *gorm.DB) ShopperPromotionCodeQuerySet {
return ShopperPromotionCodeQuerySet{
db: db.Model(&ShopperPromotionCode{}),
}
}
func (qs ShopperPromotionCodeQuerySet) w(db *gorm.DB) ShopperPromotionCodeQuerySet {
return NewShopperPromotionCodeQuerySet(db)
}
func (qs ShopperPromotionCodeQuerySet) Select(fields ...ShopperPromotionCodeDBSchemaField) ShopperPromotionCodeQuerySet {
names := []string{}
for _, f := range fields {
names = append(names, f.String())
}
return qs.w(qs.db.Select(strings.Join(names, ",")))
}
// Create is an autogenerated method
// nolint: dupl
func (o *ShopperPromotionCode) Create(db *gorm.DB) error {
return db.Create(o).Error
}
// Delete is an autogenerated method
// nolint: dupl
func (o *ShopperPromotionCode) Delete(db *gorm.DB) error {
return db.Delete(o).Error
}
// All is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) All(ret *[]ShopperPromotionCode) error {
return qs.db.Find(ret).Error
}
// CodeEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeEq(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code = ?", code))
}
// CodeGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeGt(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code > ?", code))
}
// CodeGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeGte(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code >= ?", code))
}
// CodeIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeIn(code ...string) ShopperPromotionCodeQuerySet {
if len(code) == 0 {
qs.db.AddError(errors.New("must at least pass one code in CodeIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("code IN (?)", code))
}
// CodeLike is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeLike(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code LIKE ?", code))
}
// CodeLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeLt(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code < ?", code))
}
// CodeLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeLte(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code <= ?", code))
}
// CodeNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeNe(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code != ?", code))
}
// CodeNotIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeNotIn(code ...string) ShopperPromotionCodeQuerySet {
if len(code) == 0 {
qs.db.AddError(errors.New("must at least pass one code in CodeNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("code NOT IN (?)", code))
}
// CodeNotlike is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CodeNotlike(code string) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("code NOT LIKE ?", code))
}
// Count is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) Count() (int, error) {
var count int
err := qs.db.Count(&count).Error
return count, err
}
// CreatedAtEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtEq(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at = ?", createdAt))
}
// CreatedAtGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtGt(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at > ?", createdAt))
}
// CreatedAtGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtGte(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at >= ?", createdAt))
}
// CreatedAtLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtLt(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at < ?", createdAt))
}
// CreatedAtLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtLte(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at <= ?", createdAt))
}
// CreatedAtNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) CreatedAtNe(createdAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("created_at != ?", createdAt))
}
// Delete is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) Delete() error {
return qs.db.Delete(ShopperPromotionCode{}).Error
}
// DeleteNum is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeleteNum() (int64, error) {
db := qs.db.Delete(ShopperPromotionCode{})
return db.RowsAffected, db.Error
}
// DeleteNumUnscoped is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeleteNumUnscoped() (int64, error) {
db := qs.db.Unscoped().Delete(ShopperPromotionCode{})
return db.RowsAffected, db.Error
}
// DeletedAtEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtEq(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at = ?", deletedAt))
}
// DeletedAtGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtGt(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at > ?", deletedAt))
}
// DeletedAtGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtGte(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at >= ?", deletedAt))
}
// DeletedAtIsNotNull is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtIsNotNull() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at IS NOT NULL"))
}
// DeletedAtIsNull is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtIsNull() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at IS NULL"))
}
// DeletedAtLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtLt(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at < ?", deletedAt))
}
// DeletedAtLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtLte(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at <= ?", deletedAt))
}
// DeletedAtNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) DeletedAtNe(deletedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("deleted_at != ?", deletedAt))
}
// GetDB is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) GetDB() *gorm.DB {
return qs.db
}
// GetUpdater is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) GetUpdater() ShopperPromotionCodeUpdater {
return NewShopperPromotionCodeUpdater(qs.db)
}
// IDEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDEq(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id = ?", ID))
}
// IDGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDGt(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id > ?", ID))
}
// IDGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDGte(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id >= ?", ID))
}
// IDIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDIn(ID ...uint32) ShopperPromotionCodeQuerySet {
if len(ID) == 0 {
qs.db.AddError(errors.New("must at least pass one ID in IDIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("id IN (?)", ID))
}
// IDLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDLt(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id < ?", ID))
}
// IDLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDLte(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id <= ?", ID))
}
// IDNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDNe(ID uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("id != ?", ID))
}
// IDNotIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) IDNotIn(ID ...uint32) ShopperPromotionCodeQuerySet {
if len(ID) == 0 {
qs.db.AddError(errors.New("must at least pass one ID in IDNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("id NOT IN (?)", ID))
}
// Limit is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) Limit(limit int) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Limit(limit))
}
// Offset is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) Offset(offset int) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Offset(offset))
}
// One is used to retrieve one result. It returns gorm.ErrRecordNotFound
// if nothing was fetched
func (qs ShopperPromotionCodeQuerySet) One(ret *ShopperPromotionCode) error {
return qs.db.First(ret).Error
}
// OrderAscByCode is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByCode() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("code ASC"))
}
// OrderAscByCreatedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByCreatedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("created_at ASC"))
}
// OrderAscByDeletedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByDeletedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("deleted_at ASC"))
}
// OrderAscByID is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByID() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("id ASC"))
}
// OrderAscByState is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByState() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("state ASC"))
}
// OrderAscByStoreId is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByStoreId() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("store_id ASC"))
}
// OrderAscByUid is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByUid() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("uid ASC"))
}
// OrderAscByUpdatedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderAscByUpdatedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("updated_at ASC"))
}
// OrderDescByCode is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByCode() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("code DESC"))
}
// OrderDescByCreatedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByCreatedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("created_at DESC"))
}
// OrderDescByDeletedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByDeletedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("deleted_at DESC"))
}
// OrderDescByID is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByID() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("id DESC"))
}
// OrderDescByState is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByState() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("state DESC"))
}
// OrderDescByStoreId is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByStoreId() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("store_id DESC"))
}
// OrderDescByUid is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByUid() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("uid DESC"))
}
// OrderDescByUpdatedAt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) OrderDescByUpdatedAt() ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Order("updated_at DESC"))
}
// StateEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateEq(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state = ?", state))
}
// StateGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateGt(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state > ?", state))
}
// StateGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateGte(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state >= ?", state))
}
// StateIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateIn(state ...uint32) ShopperPromotionCodeQuerySet {
if len(state) == 0 {
qs.db.AddError(errors.New("must at least pass one state in StateIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("state IN (?)", state))
}
// StateLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateLt(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state < ?", state))
}
// StateLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateLte(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state <= ?", state))
}
// StateNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateNe(state uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("state != ?", state))
}
// StateNotIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StateNotIn(state ...uint32) ShopperPromotionCodeQuerySet {
if len(state) == 0 {
qs.db.AddError(errors.New("must at least pass one state in StateNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("state NOT IN (?)", state))
}
// StoreIdEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdEq(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id = ?", storeId))
}
// StoreIdGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdGt(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id > ?", storeId))
}
// StoreIdGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdGte(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id >= ?", storeId))
}
// StoreIdIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdIn(storeId ...uint32) ShopperPromotionCodeQuerySet {
if len(storeId) == 0 {
qs.db.AddError(errors.New("must at least pass one storeId in StoreIdIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("store_id IN (?)", storeId))
}
// StoreIdLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdLt(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id < ?", storeId))
}
// StoreIdLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdLte(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id <= ?", storeId))
}
// StoreIdNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdNe(storeId uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("store_id != ?", storeId))
}
// StoreIdNotIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) StoreIdNotIn(storeId ...uint32) ShopperPromotionCodeQuerySet {
if len(storeId) == 0 {
qs.db.AddError(errors.New("must at least pass one storeId in StoreIdNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("store_id NOT IN (?)", storeId))
}
// UidEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidEq(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid = ?", uid))
}
// UidGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidGt(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid > ?", uid))
}
// UidGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidGte(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid >= ?", uid))
}
// UidIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidIn(uid ...uint32) ShopperPromotionCodeQuerySet {
if len(uid) == 0 {
qs.db.AddError(errors.New("must at least pass one uid in UidIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("uid IN (?)", uid))
}
// UidLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidLt(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid < ?", uid))
}
// UidLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidLte(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid <= ?", uid))
}
// UidNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidNe(uid uint32) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("uid != ?", uid))
}
// UidNotIn is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UidNotIn(uid ...uint32) ShopperPromotionCodeQuerySet {
if len(uid) == 0 {
qs.db.AddError(errors.New("must at least pass one uid in UidNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("uid NOT IN (?)", uid))
}
// UpdatedAtEq is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtEq(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at = ?", updatedAt))
}
// UpdatedAtGt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtGt(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at > ?", updatedAt))
}
// UpdatedAtGte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtGte(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at >= ?", updatedAt))
}
// UpdatedAtLt is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtLt(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at < ?", updatedAt))
}
// UpdatedAtLte is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtLte(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at <= ?", updatedAt))
}
// UpdatedAtNe is an autogenerated method
// nolint: dupl
func (qs ShopperPromotionCodeQuerySet) UpdatedAtNe(updatedAt time.Time) ShopperPromotionCodeQuerySet {
return qs.w(qs.db.Where("updated_at != ?", updatedAt))
}
// SetCode is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetCode(code string) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.Code)] = code
return u
}
// SetCreatedAt is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetCreatedAt(createdAt time.Time) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.CreatedAt)] = createdAt
return u
}
// SetDeletedAt is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetDeletedAt(deletedAt *time.Time) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.DeletedAt)] = deletedAt
return u
}
// SetID is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetID(ID uint32) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.ID)] = ID
return u
}
// SetState is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetState(state uint32) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.State)] = state
return u
}
// SetStoreId is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetStoreId(storeId uint32) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.StoreId)] = storeId
return u
}
// SetUid is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetUid(uid uint32) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.Uid)] = uid
return u
}
// SetUpdatedAt is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) SetUpdatedAt(updatedAt time.Time) ShopperPromotionCodeUpdater {
u.fields[string(ShopperPromotionCodeDBSchema.UpdatedAt)] = updatedAt
return u
}
// Update is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) Update() error {
return u.db.Updates(u.fields).Error
}
// UpdateNum is an autogenerated method
// nolint: dupl
func (u ShopperPromotionCodeUpdater) UpdateNum() (int64, error) {
db := u.db.Updates(u.fields)
return db.RowsAffected, db.Error
}
// ===== END of query set ShopperPromotionCodeQuerySet
// ===== BEGIN of ShopperPromotionCode modifiers
// ShopperPromotionCodeDBSchemaField describes database schema field. It requires for method 'Update'
type ShopperPromotionCodeDBSchemaField string
// String method returns string representation of field.
// nolint: dupl
func (f ShopperPromotionCodeDBSchemaField) String() string {
return string(f)
}
// ShopperPromotionCodeDBSchema stores db field names of ShopperPromotionCode
var ShopperPromotionCodeDBSchema = struct {
ID ShopperPromotionCodeDBSchemaField
CreatedAt ShopperPromotionCodeDBSchemaField
UpdatedAt ShopperPromotionCodeDBSchemaField
DeletedAt ShopperPromotionCodeDBSchemaField
Uid ShopperPromotionCodeDBSchemaField
State ShopperPromotionCodeDBSchemaField
Code ShopperPromotionCodeDBSchemaField
StoreId ShopperPromotionCodeDBSchemaField
}{
ID: ShopperPromotionCodeDBSchemaField("id"),
CreatedAt: ShopperPromotionCodeDBSchemaField("created_at"),
UpdatedAt: ShopperPromotionCodeDBSchemaField("updated_at"),
DeletedAt: ShopperPromotionCodeDBSchemaField("deleted_at"),
Uid: ShopperPromotionCodeDBSchemaField("uid"),
State: ShopperPromotionCodeDBSchemaField("state"),
Code: ShopperPromotionCodeDBSchemaField("code"),
StoreId: ShopperPromotionCodeDBSchemaField("store_id"),
}
// Update updates ShopperPromotionCode fields by primary key
// nolint: dupl
func (o *ShopperPromotionCode) Update(db *gorm.DB, fields ...ShopperPromotionCodeDBSchemaField) error {
dbNameToFieldName := map[string]interface{}{
"id": o.ID,
"created_at": o.CreatedAt,
"updated_at": o.UpdatedAt,
"deleted_at": o.DeletedAt,
"uid": o.Uid,
"state": o.State,
"code": o.Code,
"store_id": o.StoreId,
}
u := map[string]interface{}{}
for _, f := range fields {
fs := f.String()
u[fs] = dbNameToFieldName[fs]
}
if err := db.Model(o).Updates(u).Error; err != nil {
if err == gorm.ErrRecordNotFound {
return err
}
return fmt.Errorf("can't update ShopperPromotionCode %v fields %v: %s",
o, fields, err)
}
return nil
}
// ShopperPromotionCodeUpdater is an ShopperPromotionCode updates manager
type ShopperPromotionCodeUpdater struct {
fields map[string]interface{}
db *gorm.DB
}
// NewShopperPromotionCodeUpdater creates new ShopperPromotionCode updater
// nolint: dupl
func NewShopperPromotionCodeUpdater(db *gorm.DB) ShopperPromotionCodeUpdater {
return ShopperPromotionCodeUpdater{
fields: map[string]interface{}{},
db: db.Model(&ShopperPromotionCode{}),
}
}
// ===== END of ShopperPromotionCode modifiers
// ===== BEGIN of query set UserInviteQuerySet
// UserInviteQuerySet is an queryset type for UserInvite

View File

@ -70,6 +70,45 @@ func TestMemberVmConfig(t *testing.T) {
fmt.Println("list:", string(bytes))
}
func TestImportPromotionalSales(t *testing.T) {
InitTestDB()
ImportPromotionalSales()
}
func ImportPromotionalSales() {
NewStoreQuerySet(DBDev).NameLike("万象")
names := []string{"林浩斌", "刘恭德", "李家栗", "张永威", "张彬", "黄泽岚", "曾小娜", "王迈", "成福", "马盛豪", "詹若慧", "陈泽锐"}
codes := []string{"666666", "181818", "000000", "888888", "588888", "131313", "123456", "161616", "777777", "168168", "333333", "434343"}
storeIds := []uint32{26, 23, 23, 23, 19, 19, 19, 18, 18, 13, 13, 13}
var users []User
err := NewUserQuerySet(DBDev).ShopAssistantNameIn(names...).All(&users)
if err != nil {
fmt.Println("err:", err)
}
userMap := make(map[string]User, 0)
for i, _ := range users {
userMap[users[i].ShopAssistantName] = users[i]
}
for i, _ := range codes {
v, ok := userMap[names[i]]
if ok {
promotionCode := &ShopperPromotionCode{
Uid: v.Uid,
State: 2,
Code: codes[i],
StoreId: storeIds[i],
}
err := DBDev.Create(promotionCode).Error
if err != nil {
fmt.Println("err", err)
}
}
}
}
//黄金会员 1500开通、3000邀新
//白金会员 2000开通、4000邀新
//黑金会员 3000开通、6000邀新

View File

@ -51,6 +51,9 @@ type UserCoupon struct {
ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束
UseTime time.Time `json:"use_time"` //
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
Approach uint32 `json:"approach"` // 获取途径:
PromotionalSales uint32 `json:"promotional_sales"`
RedeemCode string `json:"redeem_code"`
Coupon *Coupon `json:"coupon" gorm:"-"`
}

View File

@ -153,6 +153,8 @@ func InitTestDB() {
&UserMemberDurationRecord{},
&Statistic{},
&UserActionLog{},
&UserCoupon{},
&ShopperPromotionCode{},
)
fmt.Println("DB init success")
@ -192,11 +194,14 @@ func InitDBProd() {
//&RedeemCode{},
//&PublicRecord{},
&Order{},
&OrderCard{},
&UserMemberDurationRecord{},
&Statistic{},
&UserActionLog{},
//&Order{},
//&OrderCard{},
//&UserMemberDurationRecord{},
//&Statistic{},
//&UserActionLog{},
&ShopperPromotionCode{},
&UserCoupon{},
)
if err := DBProd.DB().Ping(); err != nil {
@ -1878,3 +1883,180 @@ func PushWXPayNoticeInfo() {
logger.Debug("微信推动支付通知")
}
func TestUserRedeemCodeConvert(t *testing.T) {
UserRedeemCodeConvert(45168343, "MC302F140B2D675674C1F6C")
}
func TestNameScanInvite(t *testing.T) {
InitTestDB()
DB = DBDev
InviteUid := uint32(63192613)
Uid := uint32(45321263)
inviteUser := GetUserByUid(InviteUid)
user := GetUserByUid(Uid)
nowTime := time.Now()
if Uid != 0 {
exist, err := QueryRecordExist(
fmt.Sprintf("SELECT * FROM user_invite_record WHERE to_uid = %d AND from_uid = %d ",
Uid, InviteUid))
if err != nil {
logger.Error("query err:", err)
return
}
if !exist {
firstInviteRecord := &UserInviteRecord{
ToUid: Uid,
FromUid: InviteUid,
Action: 2,
SpendType: 1,
MemberLevel: 0,
First: 1,
Scan: 1,
ActionTime: nowTime,
}
err = DB.Create(firstInviteRecord).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
}
inviteRecord := &UserInviteRecord{
ToUid: Uid,
FromUid: InviteUid,
Action: 1,
SpendType: 1,
MemberLevel: 0,
First: 0,
Scan: 1,
ActionTime: nowTime,
}
err = DB.Create(inviteRecord).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
var inviteNew UserInvite
inviteErr := NewUserInviteQuerySet(DB).ToUidEq(Uid).FromUidEq(InviteUid).ActionEq(1).
SpendTypeEq(1).One(&inviteNew)
if inviteErr != nil && inviteErr != RecordNotFound {
logger.Error("user invite err:", err)
}
fmt.Println("inviteErr:", inviteErr)
fmt.Printf("inviteNew:%#v \n", inviteNew)
if inviteErr == RecordNotFound {
memberLevel := user.MemberLevel
if memberLevel == 0 {
memberLevel = MemberTypeConsumer
}
invite := &UserInvite{
FromUid: InviteUid,
UserType: inviteUser.UserType,
StoreId: inviteUser.StoreId,
MemberOpenTime: time.Now(),
MemberType: memberLevel,
MemberStatus: 1,
ToUid: user.Uid,
Action: 1,
SpendType: 1,
UserInviteRecordId: inviteRecord.ID,
FirstInvite: 0, // TODO
Scan: 1,
}
fmt.Println("创建邀请:", invite)
//count, err := model.NewUserInviteQuerySet(model.DB).FromUidEq(req.InviteUid).ToUidEq(user.Uid).Count()
//if err != nil {
// logger.Error(err)
// RespJson(c, status.InternalServerError, nil)
// return
//}
//if count == 0 {
//}
if err := invite.Create(DB); err != nil {
logger.Error(err)
return
}
}
if inviteErr == nil {
//err = model.NewUserInviteQuerySet(model.DB).IDEq(inviteNew.ID).GetUpdater().
// SetFromUid(req.InviteUid).SetStoreId(inviteUser.StoreId).SetUserInviteRecordId(inviteRecord.ID).Update()
err = NewUserInviteQuerySet(DB).IDEq(inviteNew.ID).GetUpdater().SetCreatedAt(nowTime).
SetUserInviteRecordId(inviteRecord.ID).Update()
if err != nil {
logger.Error("from uid update user invite err:", err, InviteUid)
}
}
}
}
func TestNewUser(t *testing.T) {
InitTestDB()
DB = DBDev
InviteUid := uint32(63192613)
Uid := uint32(45321263)
user := GetUserByUid(Uid)
nowTime := time.Now()
if InviteUid != 0 {
inviteRecordFirst := &UserInviteRecord{
ToUid: Uid,
FromUid: InviteUid,
Action: 2,
SpendType: 1,
MemberLevel: 0,
First: 1,
Scan: 1,
ActionTime: nowTime,
}
err := DB.Create(inviteRecordFirst).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
inviteRecord := &UserInviteRecord{
ToUid: Uid,
FromUid: InviteUid,
Action: 1,
SpendType: 1,
MemberLevel: 0,
First: 0,
Scan: 1,
ActionTime: nowTime,
}
err = DB.Create(inviteRecord).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
inviteUser := GetUserByUid(InviteUid)
user.StoreId = inviteUser.StoreId
user.UserType = UserTypeConsumer
user.CooperativeBusinessId = inviteUser.CooperativeBusinessId
user.CooperativeName = inviteUser.CooperativeName
invite := &UserInvite{
FromUid: InviteUid,
UserType: inviteUser.UserType,
StoreId: inviteUser.StoreId,
MemberType: MemberTypeConsumer,
ToUid: user.Uid,
MemberStatus: 1,
Action: 1,
SpendType: 1,
UserInviteRecordId: inviteRecord.ID,
Scan: 1,
}
if err := invite.Create(DB); err != nil {
logger.Error(err)
}
}
}

View File

@ -108,6 +108,7 @@ func UserRedeemCodeList(uid uint32) ([]UserRedeemCode, error) {
return append(holdList, usedList...), nil
}
// 会员兑换码兑换
func UserRedeemCodeConvert(uid uint32, serialCode string) error {
var userRedeem UserRedeemCode
err := NewUserRedeemCodeQuerySet(DB).UidEq(uid).SerialCodeEq(serialCode).One(&userRedeem)
@ -296,3 +297,18 @@ func SendUserVm(uid, memberLevel, inviteLevel uint32) error {
}
return nil
}
func GetUserRenewalCouponIds() ([]uint32, error) {
ids := make([]uint32, 0)
var coupons []Coupon
err := NewCouponQuerySet(DB).ActivityIdEq(1).All(&coupons)
if err != nil {
logger.Error("coupons err:", err)
return ids, err
}
for i, _ := range coupons {
ids = append(ids, coupons[i].ID)
}
return ids, nil
}

View File

@ -206,6 +206,17 @@ type XcxRole struct {
DeptIds []int `json:"deptIds" gorm:"-"`
}
// gen:qs
type ShopperPromotionCode struct {
Model
Uid uint32 `json:"uid" gorm:"column:uid;index"`
State uint32 `json:"state"` // 1-停用 2-使用
Code string `json:"code" gorm:"index"`
StoreId uint32 `json:"store_id"` // 门店id
// shopper_promotion_code
}
func GetUserByUid(uid uint32) *User {
user := new(User)
if err := NewUserQuerySet(DB).UidEq(uid).One(user); err != nil {
@ -563,14 +574,21 @@ func (m *UserInviteListReq) InviteUserList() (*UserInviteListResp, error) {
m.PageSize = 10
}
qs := NewUserInviteQuerySet(DB).FromUidEq(m.Uid)
qs := NewUserInviteQuerySet(DB).FromUidEq(m.Uid).ActionEq(2)
if m.MemberType != 0 {
qs = qs.MemberTypeEq(uint32(m.MemberType))
if m.MemberType == 2 {
user := GetUserByUid(m.Uid)
//qs = qs.FirstInviteNe(1).SpendTypeEq(2)
//qs = qs.SpendTypeEq(2)
//qs = qs.SpendTypeNotIn([]uint32{3, 4}...)
if user.CooperativeBusinessId == 1 {
qs = qs.SpendTypeIn([]uint32{2, 3}...)
} else {
qs = qs.SpendTypeNotIn([]uint32{3, 4}...)
}
}
}
if m.StartTime != "" {
parse, err := time.Parse(DateTimeFormat, m.StartTime)
@ -1081,3 +1099,143 @@ type MemberStatisticDaily struct {
Net uint32 `json:"net"`
Accumulative uint32 `json:"accumulative"`
}
func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error {
//inviteUid := uint32(0)
//uid := uint32(0)
if inviteUser == nil {
inviteUser = GetUserByUid(inviteUid)
}
if user == nil {
user = GetUserByUid(uid)
}
if user == nil || inviteUser == nil {
logger.Error("user inviteUser is nil")
return errors.New("user inviteUser is nil")
}
nowTime := time.Now()
if inviteUser.UserType == 2 && user.Uid != 0 {
exist, err := QueryRecordExist(
fmt.Sprintf("SELECT * FROM user_invite_record WHERE to_uid = %d AND from_uid = %d ",
user.Uid, inviteUid))
if err != nil {
logger.Error("query err:", err)
return err
}
if !exist {
firstInviteRecord := &UserInviteRecord{
ToUid: user.Uid,
FromUid: inviteUid,
Action: 2,
SpendType: 1,
MemberLevel: 0,
First: 1,
Scan: 1,
ActionTime: nowTime,
}
err = DB.Create(firstInviteRecord).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
// 添加首次扫码
}
// 扫码记录
inviteRecord := &UserInviteRecord{
ToUid: user.Uid,
FromUid: inviteUid,
Action: 1,
SpendType: 1,
MemberLevel: 0,
First: 0,
Scan: 1,
ActionTime: nowTime,
}
err = DB.Create(inviteRecord).Error
if err != nil {
logger.Error("create user invite record err:", err)
}
// UserInvite 邀请主要
var inviteNew UserInvite
inviteErr := NewUserInviteQuerySet(DB).ToUidEq(user.Uid).FromUidEq(inviteUid).ActionEq(1).
SpendTypeEq(1).One(&inviteNew)
if inviteErr != nil && inviteErr != RecordNotFound {
// 是否存在未开通
logger.Error("user invite err:", err)
}
//fmt.Println("inviteErr:", inviteErr)
//fmt.Printf("inviteNew:%#v \n", inviteNew)
if inviteErr == RecordNotFound {
memberLevel := user.MemberLevel
if memberLevel == 0 {
memberLevel = MemberTypeConsumer
}
invite := &UserInvite{
FromUid: inviteUid,
UserType: inviteUser.UserType,
StoreId: inviteUser.StoreId,
MemberOpenTime: nowTime,
MemberType: memberLevel,
MemberStatus: 1,
ToUid: user.Uid,
Action: 1,
SpendType: 1,
UserInviteRecordId: inviteRecord.ID,
FirstInvite: 0, // TODO
Scan: 1,
}
fmt.Println("创建邀请:", invite)
if err := invite.Create(DB); err != nil {
logger.Error(err)
return err
}
}
if inviteErr == nil {
err = NewUserInviteQuerySet(DB).IDEq(inviteNew.ID).GetUpdater().SetCreatedAt(nowTime).
SetUserInviteRecordId(inviteRecord.ID).Update()
if err != nil {
logger.Error("from uid update user invite err:", err, inviteUid)
}
}
}
return nil
}
//// todo
//var userCoupon model.UserCoupon
//err := model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).One(&userCoupon)
//if err != nil {
//logger.Error("user coupon err:", err)
//}
// // UserInviteRecord
// // user_invite
// if userCoupon.PromotionalSales == 0 {
// logger.Error("promotional sales is null")
// } else {
// inviteCouponUser := model.GetUserByUid(userCoupon.PromotionalSales)
// if inviteCouponUser != nil {
// userCouponInvite := &model.UserInvite{
// FromUid: userCoupon.PromotionalSales,
// UserType: inviteCouponUser.UserType, // user.UserType
// StoreId: inviteCouponUser.StoreId,
// MemberOpenTime: newTime,
// MemberType: 2,
// MemberStatus: 2,
// ToUid: user.Uid,
// StoreType: inviteCouponUser.StoreType,
// Action: 1,
// SpendType: spendType,
// MemberLevel: record.MemberLevel,
// UserInviteRecordId: 0,
// FirstInvite: 1,
// }
//
// err = userCouponInvite.Create(model.DB)
// if err != nil {
// logger.Error("create user coupon invite err:", err)
// }
// }
// }