1、取消屏蔽发放尊享会员优惠券逻辑;

2、会员兑换码记录列表接口增加"兑换码类型"入参;
3、增加尊享会员兑换码兑换流程;
This commit is contained in:
chenlin 2025-06-03 15:31:31 +08:00
parent 01ace1c5fa
commit eb5542339d
3 changed files with 66 additions and 25 deletions

View File

@ -289,7 +289,7 @@ func ErpOrderAudit(c *gin.Context) {
if req.State == 1 && (nPayStatus == model.HavePaid || erpOrder.RetailType == model.RetailTypeRejected) { // 已完成支付的零售订单判断是否发优惠券
// 发放尊享会员优惠券
//model.UpdateSwitchUserCoupon(erpOrder.ID, erpOrder.Uid, erpOrder.RetailType)
model.UpdateSwitchUserCoupon(erpOrder.ID, erpOrder.Uid, erpOrder.RetailType)
}
app.OK(c, nil, "")

View File

@ -2603,7 +2603,7 @@ func ErpOrderPay(req *ErpOrderPayReq, c *gin.Context) (*ErpOrderPayResp, error)
if payStatus == PayOk { // 已完成支付的订单判断是否发优惠券
// 发放尊享会员优惠券
//UpdateSwitchUserCoupon(orderInfo.ID, orderInfo.Uid, orderInfo.RetailType)
UpdateSwitchUserCoupon(orderInfo.ID, orderInfo.Uid, orderInfo.RetailType)
}
return resp, nil
@ -2713,7 +2713,7 @@ func QueryErpOrderPayStatus(billSn string) (*ErpOrderPayResp, error) {
if payStatus == PayOk { // 已完成支付的订单判断是否发优惠券
// 发放尊享会员优惠券
//UpdateSwitchUserCoupon(orderInfo.ID, orderInfo.Uid, orderInfo.RetailType)
UpdateSwitchUserCoupon(orderInfo.ID, orderInfo.Uid, orderInfo.RetailType)
}
resp.Status = payStatus

View File

@ -16,10 +16,11 @@ const (
RedeemCodeStatusUsed = "used" // 已使用
)
const (
CodeTypeMemberCard30 = "member-card-30"
CodeTypeMemberGoldMember = "member-card-gold-member"
CodeTypeMemberPlatinumMember = "member-card-platinum-member"
CodeTypeMemberBlackGoldMember = "member-card-black-gold-member"
CodeTypeMemberCard30 = "member-card-30" // 30天租卡会员
CodeTypeMemberGoldMember = "member-card-gold-member" // 黄金会员
CodeTypeMemberPlatinumMember = "member-card-platinum-member" // 白金会员
CodeTypeMemberBlackGoldMember = "member-card-black-gold-member" // 黑金会员
CodeTypeMemberPrivilegeMember = "member-card-privilege-member" // 尊享会员
)
const (
@ -95,8 +96,9 @@ func RedeemSecretCode(redeem string) string {
type RedeemCodeListReq struct {
PageIndex int `json:"pageIndex"`
PageSize int `json:"pageSize"`
Status string `json:"status" ` // user-hold used
SerialCode string `json:"serial_code" ` // 兑换编码
Status string `json:"status"` // user-hold used
SerialCode string `json:"serial_code"` // 兑换编码
CodeType string `json:"code_type"` // 兑换码类型
}
type RedeemCodeListResp struct {
List []RedeemCode `json:"list"`
@ -117,6 +119,9 @@ func (m *RedeemCodeListReq) RedeemCodeStockList() (*RedeemCodeListResp, error) {
if m.SerialCode != "" {
qs = qs.Where("serial_code=?", m.SerialCode)
}
if m.CodeType != "" {
qs = qs.Where("code_type=?", m.CodeType)
}
var count int64
err := qs.Count(&count).Error
@ -147,8 +152,9 @@ func (m *RedeemCodeListReq) RedeemCodeStockList() (*RedeemCodeListResp, error) {
type UserRedeemCodeListReq struct {
PageIndex int `json:"pageIndex"`
PageSize int `json:"pageSize"`
Status string `json:"status" ` // user-hold used
SerialCode string `json:"serial_code" ` // 兑换编码
Status string `json:"status"` // user-hold used
SerialCode string `json:"serial_code"` // 兑换编码
CodeType string `json:"code_type"` // 兑换码类型
Uid int `json:"uid"`
ConvertStart string `json:"convert_start"`
ConvertEnd string `json:"convert_end"`
@ -183,6 +189,9 @@ func (m *UserRedeemCodeListReq) UserSendRedeemCodeList() (*UserRedeemCodeListRes
if m.Uid != 0 {
qs = qs.Where("uid=?", m.Uid)
}
if m.CodeType != "" {
qs = qs.Where("code_type=?", m.CodeType)
}
if m.ConvertStart != "" {
parse, err := time.Parse(DateTimeFormat, m.ConvertStart)
@ -234,26 +243,58 @@ func CodeSendToUser(uid, storeId uint32, codeType string) error {
return err
}
memberRedeemCode := int64(0)
err = orm.Eloquent.Table("user_redeem_code").Where("uid=?", uid).
Where("code_type in (?)", []string{CodeTypeMemberGoldMember, CodeTypeMemberPlatinumMember,
CodeTypeMemberBlackGoldMember}).Count(&memberRedeemCode).Error
if redeemCode.CodeType == CodeTypeMemberPrivilegeMember { // 尊享会员
err = orm.Eloquent.Table("user_redeem_code").Where("uid=?", uid).
Where("code_type = ?", CodeTypeMemberPrivilegeMember).Count(&memberRedeemCode).Error
} else { // 租卡会员
err = orm.Eloquent.Table("user_redeem_code").Where("uid=?", uid).
Where("code_type in (?)", []string{CodeTypeMemberGoldMember, CodeTypeMemberPlatinumMember,
CodeTypeMemberBlackGoldMember}).Count(&memberRedeemCode).Error
}
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
return err
}
if memberRedeemCode > 0 && codeType != CodeTypeMemberCard30 {
logger.Errorf("err:", logger.Field("err", err))
return errors.New("member_redeem_code_only")
if redeemCode.CodeType == CodeTypeMemberPrivilegeMember { // 尊享会员
if memberRedeemCode > 0 {
logger.Errorf("err:", logger.Field("err", err))
return errors.New("member_redeem_code_only")
}
} else { // 租卡会员
if memberRedeemCode > 0 && codeType != CodeTypeMemberCard30 {
logger.Errorf("err:", logger.Field("err", err))
return errors.New("member_redeem_code_only")
}
}
userInfo, err := GetUserInfoByUid(uid)
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
return err
}
if userInfo.MemberLevel != 1 && userInfo.MemberLevel != 3 && codeType != CodeTypeMemberCard30 {
logger.Errorf("user is member:")
return errors.New("user_is_member")
if redeemCode.CodeType == CodeTypeMemberPrivilegeMember { // 尊享会员
// 获取尊享会员信息
var privilegeUserInfo PrivilegeMember
if err := orm.Eloquent.Table("privilege_member").Where("uid = ?", uid).Find(&privilegeUserInfo).Error; err != nil {
logger.Errorf("获取尊享会员信息出错:", logger.Field("err", err))
return err
}
if privilegeUserInfo.MemberLevel == 6 { // 已经是尊享会员
logger.Errorf("user is member:")
return errors.New("user_is_member")
}
} else { // 租卡会员
userInfo, err := GetUserInfoByUid(uid)
if err != nil {
logger.Errorf("err:", logger.Field("err", err))
return err
}
if userInfo.MemberLevel != 1 && userInfo.MemberLevel != 3 && codeType != CodeTypeMemberCard30 {
logger.Errorf("user is member:")
return errors.New("user_is_member")
}
}
fmt.Println("CodeSendToUser uid:", uid)
_, err = IsUserInfoByUid(uid)
if err != nil {