1.新增门店开通优惠券功能;
This commit is contained in:
parent
7d142fd887
commit
092f8fba5d
|
@ -544,6 +544,14 @@ func UserData(c *gin.Context) {
|
|||
m.RoleName = roleInfo.RoleName
|
||||
}
|
||||
|
||||
// 查询最近一条邀请记录
|
||||
var inviteRecord model.UserInviteRecord
|
||||
err = model.NewUserInviteRecordQuerySet(model.DB).ToUidEq(uc.Uid).OrderDescByCreatedAt().OrderDescByID().Limit(1).Find(&inviteRecord)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
m.LatestInviteRecord = inviteRecord
|
||||
|
||||
ret := m
|
||||
RespOK(c, ret)
|
||||
return
|
||||
|
@ -810,7 +818,7 @@ func UserCodeToCoupon(c *gin.Context) {
|
|||
}
|
||||
|
||||
var inviteUid, inviteStoreId, userMemberLevel uint32
|
||||
if len(req.Code) == 6 {
|
||||
if len(req.Code) == 6 { // 续费优惠券
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
if user == nil {
|
||||
logger.Error("user is nil")
|
||||
|
@ -836,7 +844,7 @@ func UserCodeToCoupon(c *gin.Context) {
|
|||
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)
|
||||
RespJson(c, status.NotAvailableCode, nil)
|
||||
return
|
||||
}
|
||||
inviteUid = shopperPromotionCode.Uid
|
||||
|
@ -1012,6 +1020,79 @@ func UserCodeToCoupon(c *gin.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
} else if len(req.Code) == 8 { // 开通优惠券(新店开业可用)
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
if user == nil {
|
||||
logger.Error("user is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
|
||||
userMemberLevel = user.MemberLevel
|
||||
if !user.OpenMemberTime.IsZero() || !user.MemberExpire.IsZero() || user.IsMember() { // 判断用户是否为新用户
|
||||
logger.Error("user is not new user")
|
||||
RespJson(c, status.NotNewUser, 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.NotAvailableCode, nil)
|
||||
return
|
||||
}
|
||||
logger.Error("shopper promotion code store is:", shopperPromotionCode.StoreId)
|
||||
logger.Error("user store is:", user.StoreId)
|
||||
|
||||
exist, err := model.QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM user_coupon WHERE uid=%d AND approach=1 AND activity_id=4 AND state=1", uc.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
|
||||
}
|
||||
|
||||
var coupons []model.Coupon
|
||||
err = model.NewCouponQuerySet(model.DB).ActivityIdEq(4).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: time.Now(),
|
||||
ActiveEnd: time.Now().AddDate(0, 0, 7),
|
||||
UseTime: time.Time{},
|
||||
MemberLevel: coupons[i].MemberLevel,
|
||||
Approach: 1,
|
||||
PromotionalSales: 0,
|
||||
RedeemCode: shopperPromotionCode.Code,
|
||||
}
|
||||
|
||||
err = model.DB.Create(userCoupon).Error
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
@ -1019,12 +1100,12 @@ func UserCodeToCoupon(c *gin.Context) {
|
|||
err := model.NewRedeemCodeQuerySet(model.DB).SerialCodeEq(req.Code).One(&redeemCode)
|
||||
if err != nil {
|
||||
logger.Error("redeem code err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
RespJson(c, status.NotAvailableCode, nil)
|
||||
return
|
||||
}
|
||||
if req.Code != "DC5709BC7375B9F5FA89D0" && redeemCode.Status != model.RedeemCodeStatusHold {
|
||||
logger.Error("redeem code status err")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
RespJson(c, status.NotAvailableCode, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -600,6 +600,22 @@ func MemberRenewalUserCouponList(c *gin.Context) {
|
|||
if user.MemberGenre == 201 || user.MemberGenre == 202 {
|
||||
coupons[i].Availability = 1
|
||||
}
|
||||
var shopperPromotionCode model.ShopperPromotionCode
|
||||
err = model.NewShopperPromotionCodeQuerySet(model.DB).CodeEq(coupons[i].RedeemCode).One(&shopperPromotionCode)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
}
|
||||
coupons[i].StoreId = shopperPromotionCode.StoreId
|
||||
|
||||
var couponInfo model.Coupon
|
||||
err = model.NewCouponQuerySet(model.DB).IDEq(coupons[i].CouponId).One(&couponInfo)
|
||||
if err != nil {
|
||||
logger.Error("coupons err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
coupons[i].Coupon = &couponInfo
|
||||
|
||||
list = append(list, coupons[i])
|
||||
}
|
||||
|
||||
|
|
|
@ -269,9 +269,7 @@ func OpenMember(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
// 用户已开通会员且优惠券可用
|
||||
//if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
// coupon.ActivityId == 1 && coupon.State == 1 {
|
||||
// 使用续费优惠券:用户已开通会员(开通会员时间不为空)、优惠券可用
|
||||
if !user.OpenMemberTime.IsZero() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityId == 1 && coupon.State == 1 {
|
||||
totalFee -= coupon.Value
|
||||
|
@ -298,6 +296,32 @@ func OpenMember(c *gin.Context) {
|
|||
_ = userLog.Add()
|
||||
}()
|
||||
}
|
||||
} else if user.OpenMemberTime.IsZero() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||||
coupon.ActivityId == 4 && coupon.State == 1 { // 使用开通优惠券:用户未开通过会员(开通会员时间为空),优惠券可用
|
||||
// 判断最近一条邀请记录,邀请人的门店id跟优惠券id相同才能使用
|
||||
var inviteRecord model.UserInviteRecord
|
||||
err = model.NewUserInviteRecordQuerySet(model.DB).ToUidEq(user.Uid).OrderDescByCreatedAt().OrderDescByID().Limit(1).Find(&inviteRecord)
|
||||
if err != nil || inviteRecord.ID == 0 {
|
||||
RespJson(c, status.NotShopperCodeStoreUser, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var shopperPromotionCode model.ShopperPromotionCode
|
||||
err := model.NewShopperPromotionCodeQuerySet(model.DB).CodeEq(coupon.RedeemCode).One(&shopperPromotionCode)
|
||||
if err != nil {
|
||||
logger.Error("shopper promotion code err:", err)
|
||||
RespJson(c, status.NotShopperCodeStoreUser, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if shopperPromotionCode.StoreId != uint32(inviteRecord.StoreId) {
|
||||
logger.Error("shopper promotion code err:", err)
|
||||
RespJson(c, status.NotShopperCodeStoreUser, nil)
|
||||
return
|
||||
}
|
||||
|
||||
logger.Infof("使用开通优惠券,coupon_id is:", coupon.CouponId)
|
||||
totalFee -= coupon.Value
|
||||
} else if coupon.State == 1 && coupon.ActivityType == 2 { // 关注公众号领取的优惠券
|
||||
totalFee -= coupon.Value
|
||||
} else { // 不符合优惠条件
|
||||
|
|
|
@ -112,6 +112,9 @@ const (
|
|||
DepositRestraint = 500527 // 押金受限
|
||||
ShortMemberNotUpgradeMember = 500530 // 短期会员暂不升级
|
||||
ThePhoneHasBeenRegistered = 500531 // 该手机号已经注册账号
|
||||
NotNewUser = 500532 // 您不是新用户,请领取续费优惠券
|
||||
NotShopperCodeStoreUser = 500533 // 您不是推广门店用户,请扫店员推广码后再使用优惠券
|
||||
NotAvailableCode = 500534 // 兑换码错误
|
||||
|
||||
ToastErr = 600 // 报错
|
||||
)
|
||||
|
@ -274,6 +277,10 @@ var statusMsg = map[int]string{
|
|||
RedirectBindPhonePage: "需要绑定手机号",
|
||||
|
||||
ThePhoneHasBeenRegistered: "该手机号已经注册账号",
|
||||
|
||||
NotNewUser: "您不是新用户,请领取续费优惠券",
|
||||
NotShopperCodeStoreUser: "您不是推广门店用户,请扫店员推广码后再使用优惠券",
|
||||
NotAvailableCode: "兑换码错误",
|
||||
}
|
||||
|
||||
func StatusDesc(code int) string {
|
||||
|
|
|
@ -1475,6 +1475,10 @@ func (qs UserInviteRecordQuerySet) Offset(offset int) UserInviteRecordQuerySet {
|
|||
return qs.w(qs.db.Offset(offset))
|
||||
}
|
||||
|
||||
func (qs UserInviteRecordQuerySet) Find(ret *UserInviteRecord) error {
|
||||
return qs.db.Find(ret).Error
|
||||
}
|
||||
|
||||
// One is used to retrieve one result. It returns gorm.ErrRecordNotFound
|
||||
// if nothing was fetched
|
||||
func (qs UserInviteRecordQuerySet) One(ret *UserInviteRecord) error {
|
||||
|
|
|
@ -28,7 +28,7 @@ type Coupon struct {
|
|||
Name string `json:"name"`
|
||||
Describe string `json:"describe" gorm:"type:text;"` // 描述
|
||||
CouponType string `json:"coupon_type"`
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号 3-运费包
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号 3-运费包 4-开通会员(2024/7/17新增)
|
||||
ActivityId uint32 `json:"activity_id" gorm:"index"`
|
||||
Value uint32 `json:"value"`
|
||||
OutCount uint32 `json:"out_count"` // 用户已领取数量
|
||||
|
@ -58,6 +58,7 @@ type UserCoupon struct {
|
|||
Approach uint32 `json:"approach"` // 获取途径:1-通过店员兑换码获取
|
||||
PromotionalSales uint32 `json:"promotional_sales"` // 推广人员用户id
|
||||
RedeemCode string `json:"redeem_code"` //
|
||||
StoreId uint32 `json:"store_id" gorm:"-"` // 邀请码对应门店id
|
||||
Availability uint32 `json:"availability" gorm:"-"` // 1-不可用 2-可用
|
||||
Coupon *Coupon `json:"coupon" gorm:"-"`
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@ type User struct {
|
|||
RoleId uint32 `json:"role_id" gorm:"-"` // 角色id
|
||||
RoleKey string `json:"role_key" gorm:"-"` // 角色代码
|
||||
RoleName string `json:"role_name" gorm:"-"` // 角色名称
|
||||
LatestInviteRecord UserInviteRecord `json:"latest_invite_record" gorm:"-"` // 最近的邀请记录
|
||||
//RenewalTime time.Time `json:"renewal_time"`
|
||||
//RenewalMemberLevel uint32 `json:"renewal_member_level"`
|
||||
//MemberLevelString string `json:"member_level_string" gorm:"-"` // 会员类型
|
||||
|
|
Loading…
Reference in New Issue
Block a user