diff --git a/controller/activity.go b/controller/activity.go index 3a8089d..ec6b8c0 100644 --- a/controller/activity.go +++ b/controller/activity.go @@ -56,9 +56,16 @@ func UserMemberRenewalState(c *gin.Context) { RespJson(c, status.Unauthorized, nil) return } - + user := model.GetUserByUid(uc.Uid) + if !user.IsMember() { + RespOK(c, map[string]interface{}{ + "is_pop": true, + "is_member_renewal": false, + }) + return + } var activityMemberRenewal model.ActivityMemberRenewal - err := model.NewActivityMemberRenewalQuerySet(model.DB).UidEq(uc.Uid).StateEq(1). + err := model.NewActivityMemberRenewalQuerySet(model.DB).UidEq(uc.Uid).ActivityIdEq(1).StateEq(1). One(&activityMemberRenewal) if err != nil && err != model.RecordNotFound { logger.Error("activity member renewal err:", err) @@ -68,7 +75,6 @@ func UserMemberRenewalState(c *gin.Context) { isPop := true if err == model.RecordNotFound { - user := model.GetUserByUid(uc.Uid) if user.MemberExpire.After(utils.Now().AddDate(0, -1, 0)) && user.MemberExpire.Before(utils.Now()) { activityMemberRenewal = model.ActivityMemberRenewal{ @@ -89,6 +95,16 @@ func UserMemberRenewalState(c *gin.Context) { isPop = false } } + if activityMemberRenewal.StartTime.AddDate(0, 0, 7).Before(utils.Now()) { + activityMemberRenewal.State = 3 + _, err = model.NewActivityMemberRenewalQuerySet(model.DB).IDEq(activityMemberRenewal.ID).GetUpdater(). + SetState(3).UpdateNum() + if err != nil { + logger.Error("update num err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + } isMemberRenewal := false if activityMemberRenewal.State == 1 { isMemberRenewal = true @@ -100,3 +116,164 @@ func UserMemberRenewalState(c *gin.Context) { RespOK(c, ret) return } + +func UserMemberRenewalInfo(c *gin.Context) { + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + } + //uc := auth.UserClaims{Uid: 5640286} + var renewal model.ActivityMemberRenewal + err := model.NewActivityMemberRenewalQuerySet(model.DB).UidEq(uc.Uid).ActivityIdEq(1). + StateEq(1).One(&renewal) + if err != nil && err != model.RecordNotFound { + logger.Error("renewal err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + if err == model.RecordNotFound { + RespJson(c, status.InternalServerError, nil) + return + } + var coupons []model.Coupon + err = model.NewCouponQuerySet(model.DB).ActivityIdEq(renewal.ActivityId).All(&coupons) + if err != nil { + logger.Error("coupons err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + var userCoupons []model.UserCoupon + err = model.NewUserCouponQuerySet(model.DB).UidEq(uc.Uid).ActivityIdEq(renewal.ActivityId). + StateEq(1).All(&userCoupons) + if err != nil { + logger.Error("userCoupons err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + userCouponMap := make(map[uint32]*model.UserCoupon, 0) + for i, _ := range userCoupons { + userCouponMap[userCoupons[i].CouponId] = &userCoupons[i] + } + + for i, _ := range coupons { + _, ok := userCouponMap[coupons[i].ID] + if ok { + coupons[i].IsDraw = true + } + } + down := 7*24*3600 - (utils.Now().Unix() - renewal.StartTime.Unix()) + ret := map[string]interface{}{ + "coupon_list": coupons, + "renewal": renewal, + "time_down": down, + } + RespOK(c, ret) + return +} + +func UserMemberRenewalCouponDraw(c *gin.Context) { + req := &struct { + CouponIds []uint32 `json:"coupon_ids" binding:"required"` + }{} + if c.ShouldBindJSON(req) != nil { + logger.Errorf("para err") + RespJson(c, status.BadRequest, nil) + return + } + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + } + if len(req.CouponIds) == 0 { + logger.Errorf("para err") + RespOK(c, nil) + return + } + var coupons []model.Coupon + err := model.NewCouponQuerySet(model.DB).IDIn(req.CouponIds...).All(&coupons) + if err != nil { + logger.Error("coupons err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + for i, _ := range coupons { + 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: coupons[i].ActiveStart, + ActiveEnd: coupons[i].ActiveEnd, + MemberLevel: coupons[i].MemberLevel, + } + + err = model.DB.Create(userCoupon).Error + if err != nil { + logger.Error("user coupon err:", err) + continue + } + } + + RespOK(c, nil) + return +} + +func MemberRenewalUserCouponList(c *gin.Context) { + req := struct { + PageIdx int `json:"page_idx"` + PageSize int `json:"page_size"` + State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期 + }{} + if err := c.ShouldBindJSON(&req); err != nil { + logger.Error(err) + RespJson(c, status.BadRequest, nil) + return + } + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + } + + page := req.PageIdx - 1 + if page < 0 { + page = 0 + } + if req.PageSize == 0 { + req.PageSize = 10 + } + + qs := model.NewUserCouponQuerySet(model.DB).UidEq(uc.Uid) + + count, err := qs.Count() + if err != nil { + logger.Error("count err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + totalPage := count/req.PageSize + 1 + var coupons []model.UserCoupon + err = qs.OrderDescByID().Offset(page * req.PageSize).Limit(req.PageSize).All(&coupons) + if err != nil && err != model.RecordNotFound { + logger.Error("coupons err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + ret := map[string]interface{}{ + "list": coupons, + "total_page": totalPage, + "page_idx": req.PageIdx, + } + RespOK(c, ret) + return +} diff --git a/controller/analyse.go b/controller/analyse.go new file mode 100644 index 0000000..b0b429f --- /dev/null +++ b/controller/analyse.go @@ -0,0 +1 @@ +package controller diff --git a/controller/game_card.go b/controller/game_card.go index 98f2a3a..bfc362e 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -19,6 +19,7 @@ import ( aliyun "mh-server/lib/ali" "mh-server/lib/auth" "mh-server/lib/status" + "mh-server/lib/utils" "mh-server/lib/wxpay" "mh-server/model" "sort" @@ -49,7 +50,8 @@ func GameCardList(c *gin.Context) { } fmt.Println("游戏类型:GameTypeIds:", req.GameTypeIds) - cardList, totalPage, err := model.GetGameCardList(req.SortType, req.Page, req.PageSize, req.GameTypeIds, req.StoreId, uc.Uid) + cardList, totalPage, err := model.GetGameCardList(req.SortType, req.Page, req.PageSize, + req.GameTypeIds, req.StoreId, uc.Uid) if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) @@ -66,7 +68,8 @@ func GameCardList(c *gin.Context) { func GameCardInfo(c *gin.Context) { req := struct { - GameId uint64 `json:"game_id"` + GameId uint64 `json:"game_id"` + StoreId uint32 `json:"store_id"` // 门店id }{} if c.ShouldBindJSON(&req) != nil { RespJson(c, status.BadRequest, nil) @@ -85,7 +88,7 @@ func GameCardInfo(c *gin.Context) { } }() - info, err := model.GetGameCardInfo(req.GameId) + info, err := model.GetGameCardInfo(req.GameId, req.StoreId) if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) @@ -170,12 +173,29 @@ func GameCardHotSearch(c *gin.Context) { } func HomeCarouselList(c *gin.Context) { + uc := auth.GetCurrentUser(c) + if uc == nil { + RespJson(c, status.Unauthorized, nil) + return + } carouselList, err := model.GetHomeCarouselList() if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) return } + user := model.GetUserByUid(uc.Uid) + if user.MemberExpire.After(utils.Now().AddDate(0, -1, 0)) && + user.MemberExpire.Before(utils.Now()) { + list := make([]model.HomeCarousel, 0, len(carouselList)) + for i, _ := range carouselList { + if carouselList[i].ActivityType == 1 { + continue + } + list = append(list, carouselList[i]) + } + carouselList = list + } RespOK(c, carouselList) } @@ -517,6 +537,14 @@ func PushWXPayNotice(c *gin.Context) { model.CreateUserRentCardByMemberLevel(record.Uid, record.MemberLevel, memberConfig.CardMax) } + if record.UserCouponId > 0 { + _, err = model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).GetUpdater(). + SetState(2).SetUseTime(utils.Now()).UpdateNum() + if err != nil { + logger.Error("update user coupon state err:", err) + } + } + fmt.Println("notify.TotalFee:", notifyInfo.TotalFee) fmt.Println("notify.OutTradeNo:", notifyInfo.OutTradeNo) @@ -621,8 +649,8 @@ func PushWXPayNotice(c *gin.Context) { return } - _, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).SetMemberExpire(record.MemberExpire). - SetDeposit(memberConfig.MemberDeposit).UpdateNum() + _, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel). + SetMemberExpire(record.MemberExpire).SetDeposit(memberConfig.MemberDeposit).UpdateNum() //err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit}) if err != nil { logger.Error("err:", err) diff --git a/controller/user.go b/controller/user.go index afb5d4e..f5e7b58 100644 --- a/controller/user.go +++ b/controller/user.go @@ -207,7 +207,8 @@ func UserInfoUpdate(c *gin.Context) { func OpenMember(c *gin.Context) { req := struct { - MemberLevel uint32 `json:"member_level"` // 昵称 + MemberLevel uint32 `json:"member_level"` // 昵称 + UserCouponId uint32 `json:"user_coupon_id"` // 优惠券id }{} if c.ShouldBindJSON(&req) != nil { logger.Error("parameter err") @@ -253,6 +254,23 @@ func OpenMember(c *gin.Context) { RespJson(c, status.InternalServerError, nil) return } + if req.UserCouponId != 0 { + var coupon model.UserCoupon + err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon) + if err != nil { + logger.Error("coupon err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + if coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel && + coupon.ActivityId == 1 && coupon.State == 1 { + totalFee -= coupon.Value + } else { + req.UserCouponId = 0 + } + } + //webPay, err := wxpay.WebPay(uid, totalFee, user.WxOpenID, "N", wxpay.WxPayMember) //if err != nil { // logger.Error(errors.New("WebPay err")) @@ -261,7 +279,8 @@ func OpenMember(c *gin.Context) { //} //orderSn := utils.GetSerialNo32HEXString() orderSn := model.GetOrderSn() - err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel}.Insert() + err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel, + UserCouponId: req.UserCouponId}.Insert() if err != nil { logger.Error(errors.New("WebPay err")) RespJson(c, status.InternalServerError, nil) @@ -299,11 +318,11 @@ func UpgradeMember(c *gin.Context) { } user := model.GetUserByUid(uc.Uid) - if user.MemberLevel != 2 && user.MemberLevel != 4 { - logger.Error("MemberLevel err:") - RespJson(c, status.InternalServerError, nil) - return - } + //if user.MemberLevel != 2 && user.MemberLevel != 4 { + // logger.Error("MemberLevel err:") + // RespJson(c, status.InternalServerError, nil) + // return + //} originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel) if err != nil { @@ -332,7 +351,8 @@ func UpgradeMember(c *gin.Context) { // 补押金 depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) - count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).StatusEq(model.RedeemCodeStatusUsed).Count() + count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30). + StatusEq(model.RedeemCodeStatusUsed).Count() if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) @@ -341,19 +361,19 @@ func UpgradeMember(c *gin.Context) { fmt.Println("count:", count) // 抵扣天数 deductionDays := int64(0) - deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 12*3600 + deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600 if deductionTime < 0 { deductionTime = 0 } if deductionTime > 0 { deductionDays = deductionTime / int64(24*3600) } - + memberYare := deductionDays/365 + 1 // 抵扣金 deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100 // 补会员费 - memberMendFee := int64(memberConfig.MemberFee) - deductionFee + memberMendFee := int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee totalFee := int64(depositMendFee) + memberMendFee //if memberMendFee < 0 { @@ -383,10 +403,10 @@ func UpgradeMember(c *gin.Context) { // return //} //orderSn := utils.GetSerialNo32HEXString() - memberExpire := time.Now().AddDate(1, 0, count*30) + memberExpire := time.Now().AddDate(1*int(memberYare), 0, count*30) orderSn := model.GetOrderSn() err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, - MemberLevel: req.MemberLevel, OrderType: 3, MemberExpire: memberExpire}.Insert() + MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire}.Insert() if err != nil { logger.Error(errors.New("WebPay err")) RespJson(c, status.InternalServerError, nil) @@ -398,7 +418,8 @@ func UpgradeMember(c *gin.Context) { RespJson(c, status.InternalServerError, nil) return } - webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember, configInfo.NotifyUrl) + webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember, + configInfo.NotifyUrl) if err != nil { logger.Error(errors.New("WebPay err")) RespJson(c, status.InternalServerError, nil) @@ -424,11 +445,11 @@ func UpgradeMemberInfo(c *gin.Context) { } user := model.GetUserByUid(uc.Uid) - if user.MemberLevel != 2 && user.MemberLevel != 4 { - logger.Error("MemberLevel err:") - RespJson(c, status.InternalServerError, nil) - return - } + //if user.MemberLevel != 2 && user.MemberLevel != 4 { + // logger.Error("MemberLevel err:") + // RespJson(c, status.InternalServerError, nil) + // return + //} //configInfo, err := model.PayConfigInfo() //if err != nil { @@ -463,7 +484,8 @@ func UpgradeMemberInfo(c *gin.Context) { // 补押金 depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit) - count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).StatusEq(model.RedeemCodeStatusUsed).Count() + count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30). + StatusEq(model.RedeemCodeStatusUsed).Count() if err != nil { logger.Error("err:", err) RespJson(c, status.InternalServerError, nil) @@ -472,19 +494,19 @@ func UpgradeMemberInfo(c *gin.Context) { fmt.Println("count:", count) // 抵扣天数 deductionDays := int64(0) - deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 12*3600 + deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600 if deductionTime < 0 { deductionTime = 0 } if deductionTime > 0 { deductionDays = deductionTime / int64(24*3600) } - + memberYare := deductionDays/365 + 1 // 抵扣金 deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100 // 补会员费 - memberMendFee := int64(memberConfig.MemberFee) - deductionFee + memberMendFee := int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee totalFee := int64(depositMendFee) + memberMendFee //if memberMendFee < 0 { diff --git a/model/analyse.go b/model/analyse.go new file mode 100644 index 0000000..5d868c3 --- /dev/null +++ b/model/analyse.go @@ -0,0 +1,8 @@ +package model + +type Statistic struct { + Model + + Count uint32 `json:"count"` // 计数 + Type uint32 `json:"type" gorm:"index"` // 类型:1- +} diff --git a/model/autogenerated_coupon.go b/model/autogenerated_coupon.go index 212216e..a9d80ee 100644 --- a/model/autogenerated_coupon.go +++ b/model/autogenerated_coupon.go @@ -1785,6 +1785,118 @@ func (qs CouponQuerySet) ActiveStartNe(activeStart time.Time) CouponQuerySet { return qs.w(qs.db.Where("active_start != ?", activeStart)) } +// ActivityIdEq is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdEq(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id = ?", activityId)) +} + +// ActivityIdGt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdGt(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id > ?", activityId)) +} + +// ActivityIdGte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdGte(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id >= ?", activityId)) +} + +// ActivityIdIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdIn(activityId ...uint32) CouponQuerySet { + if len(activityId) == 0 { + qs.db.AddError(errors.New("must at least pass one activityId in ActivityIdIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_id IN (?)", activityId)) +} + +// ActivityIdLt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdLt(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id < ?", activityId)) +} + +// ActivityIdLte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdLte(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id <= ?", activityId)) +} + +// ActivityIdNe is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdNe(activityId uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_id != ?", activityId)) +} + +// ActivityIdNotIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityIdNotIn(activityId ...uint32) CouponQuerySet { + if len(activityId) == 0 { + qs.db.AddError(errors.New("must at least pass one activityId in ActivityIdNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_id NOT IN (?)", activityId)) +} + +// ActivityTypeEq is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeEq(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type = ?", activityType)) +} + +// ActivityTypeGt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeGt(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type > ?", activityType)) +} + +// ActivityTypeGte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeGte(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type >= ?", activityType)) +} + +// ActivityTypeIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeIn(activityType ...uint32) CouponQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type IN (?)", activityType)) +} + +// ActivityTypeLt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeLt(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type < ?", activityType)) +} + +// ActivityTypeLte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeLte(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type <= ?", activityType)) +} + +// ActivityTypeNe is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeNe(activityType uint32) CouponQuerySet { + return qs.w(qs.db.Where("activity_type != ?", activityType)) +} + +// ActivityTypeNotIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) ActivityTypeNotIn(activityType ...uint32) CouponQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type NOT IN (?)", activityType)) +} + // All is an autogenerated method // nolint: dupl func (qs CouponQuerySet) All(ret *[]Coupon) error { @@ -2113,6 +2225,62 @@ func (qs CouponQuerySet) Limit(limit int) CouponQuerySet { return qs.w(qs.db.Limit(limit)) } +// MemberLevelEq is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelEq(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level = ?", memberLevel)) +} + +// MemberLevelGt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelGt(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level > ?", memberLevel)) +} + +// MemberLevelGte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelGte(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level >= ?", memberLevel)) +} + +// MemberLevelIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelIn(memberLevel ...uint32) CouponQuerySet { + if len(memberLevel) == 0 { + qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("member_level IN (?)", memberLevel)) +} + +// MemberLevelLt is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelLt(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level < ?", memberLevel)) +} + +// MemberLevelLte is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelLte(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level <= ?", memberLevel)) +} + +// MemberLevelNe is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelNe(memberLevel uint32) CouponQuerySet { + return qs.w(qs.db.Where("member_level != ?", memberLevel)) +} + +// MemberLevelNotIn is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) MemberLevelNotIn(memberLevel ...uint32) CouponQuerySet { + if len(memberLevel) == 0 { + qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("member_level NOT IN (?)", memberLevel)) +} + // NameEq is an autogenerated method // nolint: dupl func (qs CouponQuerySet) NameEq(name string) CouponQuerySet { @@ -2205,6 +2373,18 @@ func (qs CouponQuerySet) OrderAscByActiveStart() CouponQuerySet { return qs.w(qs.db.Order("active_start ASC")) } +// OrderAscByActivityId is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderAscByActivityId() CouponQuerySet { + return qs.w(qs.db.Order("activity_id ASC")) +} + +// OrderAscByActivityType is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderAscByActivityType() CouponQuerySet { + return qs.w(qs.db.Order("activity_type ASC")) +} + // OrderAscByCouponType is an autogenerated method // nolint: dupl func (qs CouponQuerySet) OrderAscByCouponType() CouponQuerySet { @@ -2235,6 +2415,12 @@ func (qs CouponQuerySet) OrderAscByID() CouponQuerySet { return qs.w(qs.db.Order("id ASC")) } +// OrderAscByMemberLevel is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderAscByMemberLevel() CouponQuerySet { + return qs.w(qs.db.Order("member_level ASC")) +} + // OrderAscByName is an autogenerated method // nolint: dupl func (qs CouponQuerySet) OrderAscByName() CouponQuerySet { @@ -2277,6 +2463,18 @@ func (qs CouponQuerySet) OrderDescByActiveStart() CouponQuerySet { return qs.w(qs.db.Order("active_start DESC")) } +// OrderDescByActivityId is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderDescByActivityId() CouponQuerySet { + return qs.w(qs.db.Order("activity_id DESC")) +} + +// OrderDescByActivityType is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderDescByActivityType() CouponQuerySet { + return qs.w(qs.db.Order("activity_type DESC")) +} + // OrderDescByCouponType is an autogenerated method // nolint: dupl func (qs CouponQuerySet) OrderDescByCouponType() CouponQuerySet { @@ -2307,6 +2505,12 @@ func (qs CouponQuerySet) OrderDescByID() CouponQuerySet { return qs.w(qs.db.Order("id DESC")) } +// OrderDescByMemberLevel is an autogenerated method +// nolint: dupl +func (qs CouponQuerySet) OrderDescByMemberLevel() CouponQuerySet { + return qs.w(qs.db.Order("member_level DESC")) +} + // OrderDescByName is an autogenerated method // nolint: dupl func (qs CouponQuerySet) OrderDescByName() CouponQuerySet { @@ -2555,6 +2759,20 @@ func (u CouponUpdater) SetActiveStart(activeStart time.Time) CouponUpdater { return u } +// SetActivityId is an autogenerated method +// nolint: dupl +func (u CouponUpdater) SetActivityId(activityId uint32) CouponUpdater { + u.fields[string(CouponDBSchema.ActivityId)] = activityId + return u +} + +// SetActivityType is an autogenerated method +// nolint: dupl +func (u CouponUpdater) SetActivityType(activityType uint32) CouponUpdater { + u.fields[string(CouponDBSchema.ActivityType)] = activityType + return u +} + // SetCouponType is an autogenerated method // nolint: dupl func (u CouponUpdater) SetCouponType(couponType string) CouponUpdater { @@ -2590,6 +2808,13 @@ func (u CouponUpdater) SetID(ID uint32) CouponUpdater { return u } +// SetMemberLevel is an autogenerated method +// nolint: dupl +func (u CouponUpdater) SetMemberLevel(memberLevel uint32) CouponUpdater { + u.fields[string(CouponDBSchema.MemberLevel)] = memberLevel + return u +} + // SetName is an autogenerated method // nolint: dupl func (u CouponUpdater) SetName(name string) CouponUpdater { @@ -2653,50 +2878,59 @@ func (f CouponDBSchemaField) String() string { // CouponDBSchema stores db field names of Coupon var CouponDBSchema = struct { - ID CouponDBSchemaField - CreatedAt CouponDBSchemaField - UpdatedAt CouponDBSchemaField - DeletedAt CouponDBSchemaField - Name CouponDBSchemaField - Describe CouponDBSchemaField - CouponType CouponDBSchemaField - Value CouponDBSchemaField - OutCount CouponDBSchemaField - UsedCount CouponDBSchemaField - ActiveStart CouponDBSchemaField - ActiveEnd CouponDBSchemaField + ID CouponDBSchemaField + CreatedAt CouponDBSchemaField + UpdatedAt CouponDBSchemaField + DeletedAt CouponDBSchemaField + Name CouponDBSchemaField + Describe CouponDBSchemaField + CouponType CouponDBSchemaField + ActivityType CouponDBSchemaField + ActivityId CouponDBSchemaField + Value CouponDBSchemaField + OutCount CouponDBSchemaField + UsedCount CouponDBSchemaField + ActiveStart CouponDBSchemaField + ActiveEnd CouponDBSchemaField + MemberLevel CouponDBSchemaField }{ - ID: CouponDBSchemaField("id"), - CreatedAt: CouponDBSchemaField("created_at"), - UpdatedAt: CouponDBSchemaField("updated_at"), - DeletedAt: CouponDBSchemaField("deleted_at"), - Name: CouponDBSchemaField("name"), - Describe: CouponDBSchemaField("describe"), - CouponType: CouponDBSchemaField("coupon_type"), - Value: CouponDBSchemaField("value"), - OutCount: CouponDBSchemaField("out_count"), - UsedCount: CouponDBSchemaField("used_count"), - ActiveStart: CouponDBSchemaField("active_start"), - ActiveEnd: CouponDBSchemaField("active_end"), + ID: CouponDBSchemaField("id"), + CreatedAt: CouponDBSchemaField("created_at"), + UpdatedAt: CouponDBSchemaField("updated_at"), + DeletedAt: CouponDBSchemaField("deleted_at"), + Name: CouponDBSchemaField("name"), + Describe: CouponDBSchemaField("describe"), + CouponType: CouponDBSchemaField("coupon_type"), + ActivityType: CouponDBSchemaField("activity_type"), + ActivityId: CouponDBSchemaField("activity_id"), + Value: CouponDBSchemaField("value"), + OutCount: CouponDBSchemaField("out_count"), + UsedCount: CouponDBSchemaField("used_count"), + ActiveStart: CouponDBSchemaField("active_start"), + ActiveEnd: CouponDBSchemaField("active_end"), + MemberLevel: CouponDBSchemaField("member_level"), } // Update updates Coupon fields by primary key // nolint: dupl func (o *Coupon) Update(db *gorm.DB, fields ...CouponDBSchemaField) error { dbNameToFieldName := map[string]interface{}{ - "id": o.ID, - "created_at": o.CreatedAt, - "updated_at": o.UpdatedAt, - "deleted_at": o.DeletedAt, - "name": o.Name, - "describe": o.Describe, - "coupon_type": o.CouponType, - "value": o.Value, - "out_count": o.OutCount, - "used_count": o.UsedCount, - "active_start": o.ActiveStart, - "active_end": o.ActiveEnd, + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "name": o.Name, + "describe": o.Describe, + "coupon_type": o.CouponType, + "activity_type": o.ActivityType, + "activity_id": o.ActivityId, + "value": o.Value, + "out_count": o.OutCount, + "used_count": o.UsedCount, + "active_start": o.ActiveStart, + "active_end": o.ActiveEnd, + "member_level": o.MemberLevel, } u := map[string]interface{}{} for _, f := range fields { @@ -2843,6 +3077,118 @@ func (qs UserCouponQuerySet) ActiveStartNe(activeStart time.Time) UserCouponQuer return qs.w(qs.db.Where("active_start != ?", activeStart)) } +// ActivityIdEq is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdEq(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id = ?", activityId)) +} + +// ActivityIdGt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdGt(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id > ?", activityId)) +} + +// ActivityIdGte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdGte(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id >= ?", activityId)) +} + +// ActivityIdIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdIn(activityId ...uint32) UserCouponQuerySet { + if len(activityId) == 0 { + qs.db.AddError(errors.New("must at least pass one activityId in ActivityIdIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_id IN (?)", activityId)) +} + +// ActivityIdLt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdLt(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id < ?", activityId)) +} + +// ActivityIdLte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdLte(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id <= ?", activityId)) +} + +// ActivityIdNe is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdNe(activityId uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_id != ?", activityId)) +} + +// ActivityIdNotIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityIdNotIn(activityId ...uint32) UserCouponQuerySet { + if len(activityId) == 0 { + qs.db.AddError(errors.New("must at least pass one activityId in ActivityIdNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_id NOT IN (?)", activityId)) +} + +// ActivityTypeEq is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeEq(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type = ?", activityType)) +} + +// ActivityTypeGt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeGt(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type > ?", activityType)) +} + +// ActivityTypeGte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeGte(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type >= ?", activityType)) +} + +// ActivityTypeIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeIn(activityType ...uint32) UserCouponQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type IN (?)", activityType)) +} + +// ActivityTypeLt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeLt(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type < ?", activityType)) +} + +// ActivityTypeLte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeLte(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type <= ?", activityType)) +} + +// ActivityTypeNe is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeNe(activityType uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("activity_type != ?", activityType)) +} + +// ActivityTypeNotIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) ActivityTypeNotIn(activityType ...uint32) UserCouponQuerySet { + if len(activityType) == 0 { + qs.db.AddError(errors.New("must at least pass one activityType in ActivityTypeNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("activity_type NOT IN (?)", activityType)) +} + // All is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) All(ret *[]UserCoupon) error { @@ -3159,6 +3505,62 @@ func (qs UserCouponQuerySet) Limit(limit int) UserCouponQuerySet { return qs.w(qs.db.Limit(limit)) } +// MemberLevelEq is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelEq(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level = ?", memberLevel)) +} + +// MemberLevelGt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelGt(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level > ?", memberLevel)) +} + +// MemberLevelGte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelGte(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level >= ?", memberLevel)) +} + +// MemberLevelIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelIn(memberLevel ...uint32) UserCouponQuerySet { + if len(memberLevel) == 0 { + qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("member_level IN (?)", memberLevel)) +} + +// MemberLevelLt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelLt(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level < ?", memberLevel)) +} + +// MemberLevelLte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelLte(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level <= ?", memberLevel)) +} + +// MemberLevelNe is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelNe(memberLevel uint32) UserCouponQuerySet { + return qs.w(qs.db.Where("member_level != ?", memberLevel)) +} + +// MemberLevelNotIn is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) MemberLevelNotIn(memberLevel ...uint32) UserCouponQuerySet { + if len(memberLevel) == 0 { + qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelNotIn")) + return qs.w(qs.db) + } + return qs.w(qs.db.Where("member_level NOT IN (?)", memberLevel)) +} + // Offset is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) Offset(offset int) UserCouponQuerySet { @@ -3183,6 +3585,18 @@ func (qs UserCouponQuerySet) OrderAscByActiveStart() UserCouponQuerySet { return qs.w(qs.db.Order("active_start ASC")) } +// OrderAscByActivityId is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderAscByActivityId() UserCouponQuerySet { + return qs.w(qs.db.Order("activity_id ASC")) +} + +// OrderAscByActivityType is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderAscByActivityType() UserCouponQuerySet { + return qs.w(qs.db.Order("activity_type ASC")) +} + // OrderAscByCouponId is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderAscByCouponId() UserCouponQuerySet { @@ -3213,6 +3627,12 @@ func (qs UserCouponQuerySet) OrderAscByID() UserCouponQuerySet { return qs.w(qs.db.Order("id ASC")) } +// OrderAscByMemberLevel is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderAscByMemberLevel() UserCouponQuerySet { + return qs.w(qs.db.Order("member_level ASC")) +} + // OrderAscByState is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderAscByState() UserCouponQuerySet { @@ -3231,6 +3651,12 @@ func (qs UserCouponQuerySet) OrderAscByUpdatedAt() UserCouponQuerySet { return qs.w(qs.db.Order("updated_at ASC")) } +// OrderAscByUseTime is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderAscByUseTime() UserCouponQuerySet { + return qs.w(qs.db.Order("use_time ASC")) +} + // OrderAscByValue is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderAscByValue() UserCouponQuerySet { @@ -3249,6 +3675,18 @@ func (qs UserCouponQuerySet) OrderDescByActiveStart() UserCouponQuerySet { return qs.w(qs.db.Order("active_start DESC")) } +// OrderDescByActivityId is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderDescByActivityId() UserCouponQuerySet { + return qs.w(qs.db.Order("activity_id DESC")) +} + +// OrderDescByActivityType is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderDescByActivityType() UserCouponQuerySet { + return qs.w(qs.db.Order("activity_type DESC")) +} + // OrderDescByCouponId is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderDescByCouponId() UserCouponQuerySet { @@ -3279,6 +3717,12 @@ func (qs UserCouponQuerySet) OrderDescByID() UserCouponQuerySet { return qs.w(qs.db.Order("id DESC")) } +// OrderDescByMemberLevel is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderDescByMemberLevel() UserCouponQuerySet { + return qs.w(qs.db.Order("member_level DESC")) +} + // OrderDescByState is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderDescByState() UserCouponQuerySet { @@ -3297,6 +3741,12 @@ func (qs UserCouponQuerySet) OrderDescByUpdatedAt() UserCouponQuerySet { return qs.w(qs.db.Order("updated_at DESC")) } +// OrderDescByUseTime is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) OrderDescByUseTime() UserCouponQuerySet { + return qs.w(qs.db.Order("use_time DESC")) +} + // OrderDescByValue is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) OrderDescByValue() UserCouponQuerySet { @@ -3451,6 +3901,42 @@ func (qs UserCouponQuerySet) UpdatedAtNe(updatedAt time.Time) UserCouponQuerySet return qs.w(qs.db.Where("updated_at != ?", updatedAt)) } +// UseTimeEq is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeEq(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time = ?", useTime)) +} + +// UseTimeGt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeGt(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time > ?", useTime)) +} + +// UseTimeGte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeGte(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time >= ?", useTime)) +} + +// UseTimeLt is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeLt(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time < ?", useTime)) +} + +// UseTimeLte is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeLte(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time <= ?", useTime)) +} + +// UseTimeNe is an autogenerated method +// nolint: dupl +func (qs UserCouponQuerySet) UseTimeNe(useTime time.Time) UserCouponQuerySet { + return qs.w(qs.db.Where("use_time != ?", useTime)) +} + // ValueEq is an autogenerated method // nolint: dupl func (qs UserCouponQuerySet) ValueEq(value uint32) UserCouponQuerySet { @@ -3521,6 +4007,20 @@ func (u UserCouponUpdater) SetActiveStart(activeStart time.Time) UserCouponUpdat return u } +// SetActivityId is an autogenerated method +// nolint: dupl +func (u UserCouponUpdater) SetActivityId(activityId uint32) UserCouponUpdater { + u.fields[string(UserCouponDBSchema.ActivityId)] = activityId + return u +} + +// SetActivityType is an autogenerated method +// nolint: dupl +func (u UserCouponUpdater) SetActivityType(activityType uint32) UserCouponUpdater { + u.fields[string(UserCouponDBSchema.ActivityType)] = activityType + return u +} + // SetCouponId is an autogenerated method // nolint: dupl func (u UserCouponUpdater) SetCouponId(couponId uint32) UserCouponUpdater { @@ -3556,6 +4056,13 @@ func (u UserCouponUpdater) SetID(ID uint32) UserCouponUpdater { return u } +// SetMemberLevel is an autogenerated method +// nolint: dupl +func (u UserCouponUpdater) SetMemberLevel(memberLevel uint32) UserCouponUpdater { + u.fields[string(UserCouponDBSchema.MemberLevel)] = memberLevel + return u +} + // SetState is an autogenerated method // nolint: dupl func (u UserCouponUpdater) SetState(state uint32) UserCouponUpdater { @@ -3577,6 +4084,13 @@ func (u UserCouponUpdater) SetUpdatedAt(updatedAt time.Time) UserCouponUpdater { return u } +// SetUseTime is an autogenerated method +// nolint: dupl +func (u UserCouponUpdater) SetUseTime(useTime time.Time) UserCouponUpdater { + u.fields[string(UserCouponDBSchema.UseTime)] = useTime + return u +} + // SetValue is an autogenerated method // nolint: dupl func (u UserCouponUpdater) SetValue(value uint32) UserCouponUpdater { @@ -3612,47 +4126,59 @@ func (f UserCouponDBSchemaField) String() string { // UserCouponDBSchema stores db field names of UserCoupon var UserCouponDBSchema = struct { - ID UserCouponDBSchemaField - CreatedAt UserCouponDBSchemaField - UpdatedAt UserCouponDBSchemaField - DeletedAt UserCouponDBSchemaField - Uid UserCouponDBSchemaField - CouponId UserCouponDBSchemaField - CouponType UserCouponDBSchemaField - Value UserCouponDBSchemaField - State UserCouponDBSchemaField - ActiveStart UserCouponDBSchemaField - ActiveEnd UserCouponDBSchemaField + ID UserCouponDBSchemaField + CreatedAt UserCouponDBSchemaField + UpdatedAt UserCouponDBSchemaField + DeletedAt UserCouponDBSchemaField + Uid UserCouponDBSchemaField + CouponId UserCouponDBSchemaField + CouponType UserCouponDBSchemaField + ActivityType UserCouponDBSchemaField + ActivityId UserCouponDBSchemaField + Value UserCouponDBSchemaField + State UserCouponDBSchemaField + ActiveStart UserCouponDBSchemaField + ActiveEnd UserCouponDBSchemaField + UseTime UserCouponDBSchemaField + MemberLevel UserCouponDBSchemaField }{ - ID: UserCouponDBSchemaField("id"), - CreatedAt: UserCouponDBSchemaField("created_at"), - UpdatedAt: UserCouponDBSchemaField("updated_at"), - DeletedAt: UserCouponDBSchemaField("deleted_at"), - Uid: UserCouponDBSchemaField("uid"), - CouponId: UserCouponDBSchemaField("coupon_id"), - CouponType: UserCouponDBSchemaField("coupon_type"), - Value: UserCouponDBSchemaField("value"), - State: UserCouponDBSchemaField("state"), - ActiveStart: UserCouponDBSchemaField("active_start"), - ActiveEnd: UserCouponDBSchemaField("active_end"), + ID: UserCouponDBSchemaField("id"), + CreatedAt: UserCouponDBSchemaField("created_at"), + UpdatedAt: UserCouponDBSchemaField("updated_at"), + DeletedAt: UserCouponDBSchemaField("deleted_at"), + Uid: UserCouponDBSchemaField("uid"), + CouponId: UserCouponDBSchemaField("coupon_id"), + CouponType: UserCouponDBSchemaField("coupon_type"), + ActivityType: UserCouponDBSchemaField("activity_type"), + ActivityId: UserCouponDBSchemaField("activity_id"), + Value: UserCouponDBSchemaField("value"), + State: UserCouponDBSchemaField("state"), + ActiveStart: UserCouponDBSchemaField("active_start"), + ActiveEnd: UserCouponDBSchemaField("active_end"), + UseTime: UserCouponDBSchemaField("use_time"), + MemberLevel: UserCouponDBSchemaField("member_level"), } // Update updates UserCoupon fields by primary key // nolint: dupl func (o *UserCoupon) Update(db *gorm.DB, fields ...UserCouponDBSchemaField) error { dbNameToFieldName := map[string]interface{}{ - "id": o.ID, - "created_at": o.CreatedAt, - "updated_at": o.UpdatedAt, - "deleted_at": o.DeletedAt, - "uid": o.Uid, - "coupon_id": o.CouponId, - "coupon_type": o.CouponType, - "value": o.Value, - "state": o.State, - "active_start": o.ActiveStart, - "active_end": o.ActiveEnd, + "id": o.ID, + "created_at": o.CreatedAt, + "updated_at": o.UpdatedAt, + "deleted_at": o.DeletedAt, + "uid": o.Uid, + "coupon_id": o.CouponId, + "coupon_type": o.CouponType, + "activity_type": o.ActivityType, + "activity_id": o.ActivityId, + "value": o.Value, + "state": o.State, + "active_start": o.ActiveStart, + "active_end": o.ActiveEnd, + "use_time": o.UseTime, + "member_level": o.MemberLevel, } u := map[string]interface{}{} for _, f := range fields { diff --git a/model/coupon.go b/model/coupon.go index e0f0e82..63b7890 100644 --- a/model/coupon.go +++ b/model/coupon.go @@ -3,38 +3,44 @@ package model import "time" const ( - CouponTypeDeduction = "deduction" -) - -const ( - CouponTypeMemberRenewal = "member_renewal" + CouponTypeDeduction = "deduction" // 抵扣 ) //go:generate goqueryset -in coupon.go // gen:qs type Coupon struct { Model - Name string `json:"name"` - Describe string `json:"describe" gorm:"type:text;"` // 描述 - CouponType string `json:"coupon_type"` - Value uint32 `json:"value"` - OutCount uint32 `json:"out_count"` // 用户已领取数量 - UsedCount uint32 `json:"used_count"` // 用户已使用数量 - ActiveStart time.Time `json:"active_start"` // 有效期开始 - ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 + + Name string `json:"name"` + Describe string `json:"describe" gorm:"type:text;"` // 描述 + CouponType string `json:"coupon_type"` + ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 + ActivityId uint32 `json:"activity_id" gorm:"index"` + Value uint32 `json:"value"` + OutCount uint32 `json:"out_count"` // 用户已领取数量 + UsedCount uint32 `json:"used_count"` // 用户已使用数量 + ActiveStart time.Time `json:"active_start"` // 有效期开始 + ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 + MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 + IsDraw bool `json:"is_draw" gorm:"-"` } // gen:qs type UserCoupon struct { Model - Uid uint32 `json:"uid"` - CouponId uint32 `json:"coupon_id"` - CouponType string `json:"coupon_type"` - Value uint32 `json:"value"` - State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期 - ActiveStart time.Time `json:"active_start"` // 有效期开始 - ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 + Uid uint32 `json:"uid" gorm:"index"` + CouponId uint32 `json:"coupon_id" gorm:"index"` + CouponType string `json:"coupon_type"` + ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 + ActivityId uint32 `json:"activity_id" gorm:"index"` + Value uint32 `json:"value"` + State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期 + ActiveStart time.Time `json:"active_start"` // 有效期开始 + ActiveEnd time.Time `json:"active_end"` // 有效期结束 零值永不结束 + UseTime time.Time `json:"use_time"` // + MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 + Coupon *Coupon `json:"coupon" gorm:"-"` } // gen:qs @@ -52,7 +58,7 @@ type Activity struct { type ActivityMemberRenewal struct { Model - ActivityId uint32 `json:"activity_id"` + ActivityId uint32 `json:"activity_id" gorm:"index"` Uid uint32 `json:"uid"` State uint32 `json:"state" gorm:"column:state;comment:'状态'"` // 1-进行中 2-已完成 3-已过期 StartTime time.Time `json:"start_time" gorm:"column:start_time;comment:'开始时间'"` // 开始时间 diff --git a/model/game_card.go b/model/game_card.go index abb8417..2916bfe 100644 --- a/model/game_card.go +++ b/model/game_card.go @@ -21,7 +21,7 @@ type GameCard struct { NewProducts uint8 `json:"new_products"` // 新品: 1-新品 2-非新品 Status uint8 `json:"status"` // 状态: 1-上架 2-下架 StockCount uint32 `json:"stock_count"` // 库存 - StockState uint32 `json:"stock_state"` // 1-库存 2-门店库存 3-无库存 + StockState uint32 `json:"stock_state" gorm:"-"` // 1-库存 2-门店库存 3-无库存 TotalCount uint32 `json:"total_count"` // 总量 GameTypeId uint32 `json:"game_type_id"` // 游戏类型 GoodsGalleryUrl string `json:"goods_gallery_url" gorm:"type:text;comment:'轮播图'"` // 轮播图 @@ -58,12 +58,13 @@ func (*GameCardLabel) TableName() string { type HomeCarousel struct { Model - Name string `json:"name" gorm:"index"` // 名称 - Img string `json:"img"` // 图片 - Sort uint32 `json:"sort" gorm:"index"` - IsShow uint32 `json:"is_show"` // 1-显示 2-隐藏 - Detail string `json:"detail" gorm:"type:text;comment:'详情描述'"` - Link string `json:"link"` + Name string `json:"name" gorm:"index"` // 名称 + Img string `json:"img"` // 图片 + Sort uint32 `json:"sort" gorm:"index"` + IsShow uint32 `json:"is_show"` // 1-显示 2-隐藏 + Detail string `json:"detail" gorm:"type:text;comment:'详情描述'"` + Link string `json:"link"` + ActivityType uint32 `json:"activity_type"` // 活动类型:1-会员续费 } func (*HomeCarousel) TableName() string { @@ -137,9 +138,6 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId } } - if sortType == 1 { - - } hideGamePrice := uint32(30000) var user *User if uid != 0 { @@ -151,66 +149,99 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId } gameIds := make([]uint32, 0) gameIdMap := make(map[uint32]uint32) - if storeId != 0 { - //gameIds := make([]uint32, 0) - ////gameIdMap := make(map[uint32]int) - //var cardStocks []GameCardGoodsStock - //err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks) - //if err != nil { - // logger.Error("GetGameIdByType err:", err) - // return cards, 0, err - //} - // - //for i, _ := range cardStocks { - // gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) - //} - // - //if len(gameIds) <= 0 { - // return cards, 0, nil - //} - //qs = qs.IDIn(gameIds...) - var cardStocks []GameCardGoodsStock - err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks) - if err != nil { - logger.Error("GetGameIdByType err:", err) - return cards, 0, err - } + if sortType == 1 { + if storeId != 0 { + //gameIds := make([]uint32, 0) + ////gameIdMap := make(map[uint32]int) + //var cardStocks []GameCardGoodsStock + //err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks) + //if err != nil { + // logger.Error("GetGameIdByType err:", err) + // return cards, 0, err + //} + // + //for i, _ := range cardStocks { + // gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + //} + // + //if len(gameIds) <= 0 { + // return cards, 0, nil + //} + //qs = qs.IDIn(gameIds...) - for i, _ := range cardStocks { - _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] - if !ok { - gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) - gameIdMap[uint32(cardStocks[i].GameCardId)] = 1 + var cardStocks []GameCardGoodsStock + err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0). + OrderDescByRentStock().All(&cardStocks) + if err != nil { + logger.Error("GetGameIdByType err:", err) + return cards, 0, err } - } - - err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks) - if err != nil { - logger.Error("GetGameIdByType err:", err) - return cards, 0, err - } - for i, _ := range cardStocks { - _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] - if !ok { - gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) - gameIdMap[uint32(cardStocks[i].GameCardId)] = 2 + for i, _ := range cardStocks { + _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] + if !ok { + gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + gameIdMap[uint32(cardStocks[i].GameCardId)] = 1 + } } - } - err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockEq(0).All(&cardStocks) - if err != nil { - logger.Error("GetGameIdByType err:", err) - return cards, 0, err - } - for i, _ := range cardStocks { - _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] - if !ok { - gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) - gameIdMap[uint32(cardStocks[i].GameCardId)] = 3 + err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockGt(0). + OrderDescByRentStock().All(&cardStocks) + if err != nil { + logger.Error("GetGameIdByType err:", err) + return cards, 0, err } + for i, _ := range cardStocks { + _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] + if !ok { + gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + gameIdMap[uint32(cardStocks[i].GameCardId)] = 2 + } + } + + err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks) + if err != nil { + logger.Error("GetGameIdByType err:", err) + return cards, 0, err + } + for i, _ := range cardStocks { + _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] + if !ok { + gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + gameIdMap[uint32(cardStocks[i].GameCardId)] = 3 + } + } + qs = qs.IDIn(gameIds...) + } else { + var cardStocks []GameCardGoodsStock + err := NewGameCardGoodsStockQuerySet(DB).RentStockGt(0). + OrderDescByRentStock().All(&cardStocks) + if err != nil { + logger.Error("GetGameIdByType err:", err) + return cards, 0, err + } + for i, _ := range cardStocks { + _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] + if !ok { + gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + gameIdMap[uint32(cardStocks[i].GameCardId)] = 1 + } + } + + err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks) + if err != nil { + logger.Error("GetGameIdByType err:", err) + return cards, 0, err + } + for i, _ := range cardStocks { + _, ok := gameIdMap[uint32(cardStocks[i].GameCardId)] + if !ok { + gameIds = append(gameIds, uint32(cardStocks[i].GameCardId)) + gameIdMap[uint32(cardStocks[i].GameCardId)] = 3 + } + } + qs = qs.IDIn(gameIds...) } - qs = qs.IDIn(gameIds...) } if count == 0 { @@ -218,7 +249,7 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId } totalPage = uint32(count/pageSize + 1) //err = qs.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&cards) - if storeId == 0 { + if sortType != 1 { err = qs.Offset(page * pageSize).Limit(pageSize).All(&cards) if err != nil && err != RecordNotFound { logger.Error("err:", err) @@ -377,7 +408,7 @@ func (*GameCardGoodsStock) TableName() string { return "game_card_goods_stock" } -func GetGameCardInfo(id uint64) (GameCard, error) { +func GetGameCardInfo(id uint64, storeId uint32) (GameCard, error) { game := GameCard{} err := NewGameCardQuerySet(DB).IDEq(uint32(id)).One(&game) if err != nil && err != RecordNotFound { @@ -385,16 +416,34 @@ func GetGameCardInfo(id uint64) (GameCard, error) { return game, err } - var cardStocks []GameCardGoodsStock - err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).All(&cardStocks) - if err != nil { + var cardStock GameCardGoodsStock + err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)).StoreIdEq(uint64(storeId)).One(&cardStock) + if err != nil && err != RecordNotFound { logger.Error("err:", err) + return game, nil } - cardStock := uint32(0) - for i, _ := range cardStocks { - cardStock += cardStocks[i].RentStock + if cardStock.RentStock > 0 { + game.StockState = 1 + return game, nil } - game.StockCount = cardStock + + err = NewGameCardGoodsStockQuerySet(DB).GameCardIdEq(uint64(game.ID)). + StoreIdNe(uint64(storeId)).RentStockGt(0).One(&cardStock) + if err != nil && err != RecordNotFound { + logger.Error("err:", err) + return game, nil + } + if cardStock.RentStock > 0 { + game.StockState = 2 + return game, nil + } + + game.StockState = 3 + //cardStock := uint32(0) + //for i, _ := range cardStocks { + // cardStock += cardStocks[i].RentStock + //} + //game.StockCount = cardStock return game, nil } @@ -411,62 +460,86 @@ func GetGameCardSearch(name string, page, pageSize int, storeId uint32) ([]GameC if page < 0 { page = 0 } - sqlStore := "" - if storeId != 0 { - var gameStocks []GameCardGoodsStock - err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).All(&gameStocks) - if err != nil { - - } - if len(gameStocks) == 0 { - logger.Error("err:", err) - return cards, 0, err - } - gameCardIds := make([]string, 0, len(gameStocks)) - for i, _ := range gameStocks { - gameCardIds = append(gameCardIds, fmt.Sprintf("%d", gameStocks[i].GameCardId)) - } - sqlStore = fmt.Sprintf(" AND id IN (%s) ", strings.Join(gameCardIds, ",")) + if pageSize <= 0 { + pageSize = 10 } + //sqlStore := "" + //if storeId != 0 { + // var gameStocks []GameCardGoodsStock + // err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).All(&gameStocks) + // if err != nil { + // logger.Error("game card goods stock err:", err) + // } + // if len(gameStocks) == 0 { + // logger.Error("err:", err) + // return cards, 0, err + // } + // gameCardIds := make([]string, 0, len(gameStocks)) + // for i, _ := range gameStocks { + // gameCardIds = append(gameCardIds, fmt.Sprintf("%d", gameStocks[i].GameCardId)) + // } + // sqlStore = fmt.Sprintf(" AND id IN (%s) ", strings.Join(gameCardIds, ",")) + //} - //countSql := "SELECT game_card.* FROM game_card WHERE game_card.name LIKE '%" + name + "%'" - countSql := "SELECT COUNT(id) AS count FROM game_card WHERE status=1 AND game_card.name LIKE '%" + name + "%'" + sqlStore + countSql := "SELECT COUNT(id) AS count FROM game_card WHERE status=1 AND game_card.name LIKE '%" + name + "%'" err := DB.Raw(countSql).Scan(&cardCount).Error if err != nil { logger.Error("err:", err) return cards, 0, err } - sql := "SELECT game_card.* FROM game_card WHERE status=1 AND game_card.name LIKE '%" + name + "%'" + sqlStore + fmt.Sprintf(" LIMIT %d,%d;", page*pageSize, pageSize) - //sql := fmt.Sprintf(`SELECT * FROM game_card WHERE name LIKE '%%s%';`) + sql := "SELECT game_card.* FROM game_card WHERE status=1 AND game_card.name LIKE '%" + name + "%'" + //sql := "SELECT game_card.* FROM game_card WHERE status=1 AND game_card.name LIKE '%" + name + "%'" + sqlStore + + // fmt.Sprintf(" LIMIT %d,%d;", page*pageSize, pageSize) err = DB.Raw(sql).Scan(&cards).Error if err != nil { logger.Error("err:", err) return cards, 0, err } - - cardIds := make([]uint64, 0) + cardMap := make(map[uint32]GameCard, 0) + cardIds := make([]uint64, 0, len(cards)) for i, _ := range cards { cardIds = append(cardIds, uint64(cards[i].ID)) + cardMap[cards[i].ID] = cards[i] } - var cardStocks []GameCardGoodsStock - err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).All(&cardStocks) + err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).RentStockGt(0).All(&cardStocks) if err != nil { - logger.Error("err:", err) + logger.Error("game card goods stock err:", err) return cards, totalPage, nil } - cardStockMap := make(map[uint64]uint32, 0) + list := make([]GameCard, 0, len(cards)) + stockMap := make(map[uint64]uint32, 0) for i, _ := range cardStocks { - cardStockMap[cardStocks[i].GameCardId] += cardStocks[i].RentStock - } - for i, _ := range cards { - stock, ok := cardStockMap[uint64(cards[i].ID)] - if ok { - cards[i].StockCount = stock + _, ok := stockMap[cardStocks[i].GameCardId] + if !ok { + stockMap[cardStocks[i].GameCardId] = 1 + v2, ok2 := cardMap[uint32(cardStocks[i].GameCardId)] + v2.StockState = 1 + if ok2 { + list = append(list, v2) + } } } + for i, _ := range cardIds { + _, ok := stockMap[cardIds[i]] + if !ok { + stockMap[cardIds[i]] = 3 + v2, ok2 := cardMap[uint32(cardIds[i])] + v2.StockState = 3 + if ok2 { + list = append(list, v2) + } + } + } + + if uint32(page) < totalPage && totalPage != 1 { + cards = list[page*pageSize : (page+1)*pageSize] + } else { + cards = list[page*pageSize:] + } + totalPage = cardCount.Count/uint32(pageSize) + 1 return cards, totalPage, nil } @@ -480,6 +553,7 @@ func GetHomeCarouselList() ([]HomeCarousel, error) { logger.Error("err:", err) return carousels, err } + return carousels, nil } diff --git a/model/model_test.go b/model/model_test.go index c643826..549f678 100644 --- a/model/model_test.go +++ b/model/model_test.go @@ -119,6 +119,11 @@ func InitTestDB() { &GameCard{}, &ActivityMemberRenewal{}, + &Activity{}, + &UserCoupon{}, + &Coupon{}, + &UserOpenMemberRecord{}, + &HomeCarousel{}, ) fmt.Println("DB init success") @@ -246,6 +251,48 @@ func TestHotSearch_TableName(t *testing.T) { } } +func TestActivity_Create(t *testing.T) { + InitTestDB() + DB = DBDev + //activity := Activity{ + // Name: "会员续费优惠券", + // ActivityType: 1, + // State: 2, + // StartTime: utils.Now(), + // EndTime: utils.Now().AddDate(1, 0, 0), + //} + + //&UserCoupon{ + // Uid: 0, + // CouponId: 0, + // CouponType: "", + // ActivityType: 0, + // Value: 0, + // State: 0, + // ActiveStart: time.Time{}, + // ActiveEnd: time.Time{}, + //}, + + coupon := Coupon{ + Name: "150抵扣券", + Describe: "续费黑金会员减150", + CouponType: "deduction", + ActivityType: 1, + ActivityId: 1, + Value: 15000, + OutCount: 0, + UsedCount: 0, + ActiveStart: utils.Now(), + ActiveEnd: utils.Now().AddDate(1, 0, 0), + } + + err := DB.Create(&coupon).Error + if err != nil { + logger.Error("coupon err:", err) + } + +} + func TestGetHomeCarouselList(t *testing.T) { InitTestDB() //imgs := []string{"1-2011060021334X.jpg", "1-2011060021425N.jpg", "1-201106002150294.jpg", "1-201106002159522.jpg"} @@ -1174,7 +1221,8 @@ func TestAddMemberPromotion(t *testing.T) { func AddMemberPromotion() { InitTestDB() sql := fmt.Sprintf( - "UPDATE cooperative_member_promotion SET gold_count=gold_count+1 WHERE date=%s AND cooperative_business_id=%d", "2022-04", 1) + "UPDATE cooperative_member_promotion SET gold_count=gold_count+1 WHERE date=%s AND cooperative_business_id=%d", + "2022-04", 1) err := DBDev.Exec(sql).Error if err != nil { logger.Error("err:", err) @@ -1364,7 +1412,7 @@ func NumStringSort(n string) (string, error) { return ns[:len(ns)-1], nil } -func TestBtys(t *testing.T) { +func TestByte(t *testing.T) { s := strings.Split("91 123 34 105 100 34 58 49 53 57 57 44 34 99 114 101 97 116 101 100 65 116 34 58 34 50 48 50 50 45 48 54 45 48 56 84 49 49 58 52 54 58 51 53 43 48 56 58 48 48 34 44 34 117 105 100 34 58 53 54 52 48 50 56 54 44 34 103 97 109 101 95 99 97 114 100 95 105 100 34 58 48 44 34 103 97 109 101 95 99 97 114 100 95 103 111 111 100 115 95 105 100 34 58 48 44 34 103 97 109 101 95 99 97 114 100 95 115 101 114 105 97 108 95 110 117 109 98 101 114 34 58 34 98 50 50 50 49 49 49 34 44 34 115 116 111 114 101 95 105 100 34 58 50 57 44 34 117 115 101 114 95 97 100 100 114 101 115 115 95 105 100 34 58 48 44 34 100 101 108 105 118 101 114 121 95 116 121 112 101 34 58 49 44 34 99 111 117 110 116 34 58 49 44 34 112 105 99 107 117 112 95 99 111 100 101 34 58 34 229 183 178 229 143 150 232 180 167 34 44 34 99 97 114 100 95 115 116 97 116 117 115 34 58 52 44 34 100 101 108 105 118 101 114 121 95 116 105 109 101 34 58 34 50 48 50 50 45 48 54 45 48 56 84 49 49 58 52 55 58 53 56 43 48 56 58 48 48 34 44 34 114 101 99 101 105 112 116 95 116 105 109 101 34 58 34 48 48 48 49 45 48 49 45 48 49 84 48 48 58 48 48 58 48 48 90 34 44 34 112 97 121 95 116 105 109 101 34 58 34 50 48 50 50 45 48 54 45 48 56 84 49 49 58 52 54 58 51 53 43 48 56 58 48 48 34 44 34 112 97 121 95 115 116 97 116 117 115 34 58 50 44 34 111 114 100 101 114 95 115 110 34 58 34 55 56 49 57 50 51 66 54 50 56 34 44 34 112 97 121 95 112 114 105 99 101 34 58 48 44 34 112 111 115 116 97 103 101 34 58 48 44 34 101 120 112 114 101 115 115 95 99 111 109 112 97 110 121 34 58 34 34 44 34 101 120 112 114 101 115 115 95 99 111 109 112 97 110 121 95 110 111 34 58 34 34 44 34 101 120 112 114 101 115 115 95 110 111 34 58 34 34 44 34 101 120 112 114 101 115 115 95 100 117 114 97 116 105 111 110 34 58 48 44 34 114 101 118 101 114 116 95 115 116 111 114 101 95 105 100 34 58 48 44 34 114 101 118 101 114 116 95 116 105 109 101 34 58 34 48 48 48 49 45 48 49 45 48 49 84 48 48 58 48 48 58 48 48 90 34 44 34 114 101 118 101 114 116 95 101 120 112 114 101 115 115 95 99 111 109 112 97 110 121 34 58 34 34 44 34 114 101 118 101 114 116 95 101 120 112 114 101 115 115 95 99 111 109 112 97 110 121 95 110 111 34 58 34 34 44 34 114 101 118 101 114 116 95 101 120 112 114 101 115 115 95 110 111 34 58 34 34 44 34 114 101 118 101 114 116 95 101 120 112 114 101 115 115 95 100 117 114 97 116 105 111 110 34 58 48 44 34 99 111 111 112 101 114 97 116 105 118 101 95 98 117 115 105 110 101 115 115 95 105 100 34 58 49 48 44 34 99 111 111 112 101 114 97 116 105 118 101 95 110 97 109 101 34 58 34 34 44 34 103 97 109 101 95 99 97 114 100 95 115 101 114 105 97 108 95 110 117 109 98 101 114 115 34 58 110 117 108 108 44 34 111 114 100 101 114 95 99 97 114 100 115 34 58 110 117 108 108 125 93", " ") b := make([]byte, 0) @@ -1375,3 +1423,12 @@ func TestBtys(t *testing.T) { fmt.Println("byte:", string(b)) } + +func TestSlice(t *testing.T) { + var p [100]int + var m interface{} = [...]int{99: 0} + fmt.Println(p == m) + fmt.Println("p:", p) + fmt.Println("m:", m) + +} diff --git a/model/user.go b/model/user.go index d6a53b3..163b71d 100644 --- a/model/user.go +++ b/model/user.go @@ -251,7 +251,7 @@ func UserUpdate(user *User) error { return nil } -//OrderType: 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡 5-退物流费 6-商城购物 7-购买商品取消订单 8-购买商品订单退货 +//OrderType: 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡 5-退物流费 6-商城购物 7-购买商品取消订单 8-购买商品订单退货 9-升级会员 // gen:qs type UserOpenMemberRecord struct { @@ -262,7 +262,8 @@ type UserOpenMemberRecord struct { OrderId uint32 `json:"order_id" gorm:"index"` OrderType uint32 `json:"order_type"` MemberLevel uint32 `json:"member_level"` - MemberExpire time.Time `json:"member_expire"` // 会员到期时间 + MemberExpire time.Time `json:"member_expire"` // 会员到期时间 + UserCouponId uint32 `json:"user_coupon_id" gorm:"index"` // 优惠券id Order *Order `json:"order" gorm:"-"` ShareCardRetrieve *ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"` @@ -763,7 +764,9 @@ func OrderCardUserRentCard(uid uint32, count uint32, memberConfig *MemberConfig, } return nil } - sql := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count=have_rent_count+%d ,can_rent_count=can_rent_count-%d WHERE uid = %d", count, count, uid) + sql := fmt.Sprintf( + "UPDATE user_rent_card SET have_rent_count=have_rent_count+%d ,can_rent_count=can_rent_count-%d WHERE uid = %d", + count, count, uid) err = gdb.Exec(sql).Error if err != nil { logger.Error("err", err) diff --git a/router/router_app.go b/router/router_app.go index 9bbf51d..f55e2da 100644 --- a/router/router_app.go +++ b/router/router_app.go @@ -49,14 +49,13 @@ func ConfigAppRouter(r gin.IRouter) { gameCard := api.Group("game_card") { - - gameCard.POST("banner", controller.HomeCarouselList) // 轮播图 gameCard.POST("game_type", controller.GameCardTypes) // 游戏标签 gameCard.POST("type/list", controller.GameCardTypeList) // 游戏类型列表 gameCard.Use(auth.UserAccessAuth) - gameCard.POST("info", controller.GameCardInfo) // 游戏卡详情 - gameCard.POST("list", controller.GameCardList) // 游戏卡列表 + gameCard.POST("info", controller.GameCardInfo) // 游戏卡详情 + gameCard.POST("list", controller.GameCardList) // 游戏卡列表 + gameCard.POST("banner", controller.HomeCarouselList) // 轮播图 } search := gameCard.Group("search") @@ -165,7 +164,9 @@ func ConfigAppRouter(r gin.IRouter) { // 会员续费 activity.POST("member_renewal/state", controller.UserMemberRenewalState) - + activity.POST("member_renewal/info", controller.UserMemberRenewalInfo) + activity.POST("member_renewal/coupon_draw", controller.UserMemberRenewalCouponDraw) + activity.POST("member_renewal/user_coupon/list", controller.MemberRenewalUserCouponList) } mall := api.Group("mall")