1、config增加配置项test_user_Info,方便优惠券测试;
2、优惠券有效期优化; 3、添加优惠券类型:4-尊享会员 5-测试用户;
This commit is contained in:
parent
ced83a4b87
commit
38a4f33061
|
@ -46,6 +46,7 @@ const (
|
|||
ConfigCooperativePayInfo = "cooperative_pay_info" // 合作商支付设置
|
||||
ConfigErpOrderShowInfo = "erp_order_show_config" // 零售订单显示设置
|
||||
ConfigSystemSmsCount = "sms_config" // 获取系统每月短信限额
|
||||
ConfigTestUserInfo = "test_user_Info" // 获取测试用户uid
|
||||
)
|
||||
|
||||
func PayConfigInfo() (*PayConfig, error) {
|
||||
|
@ -382,6 +383,10 @@ type SystemSmsConfig struct {
|
|||
MonthFreeCount uint32 `json:"month_free_count" ` // 每月短信免费额度
|
||||
}
|
||||
|
||||
type TestUserInfoConfig struct {
|
||||
Uid []uint32 `json:"uid" ` // 测试用户uid
|
||||
}
|
||||
|
||||
// SetErpOrderShowConfig 设置零售订单展示配置信息
|
||||
func SetErpOrderShowConfig(req *ErpOrderShowConfig) error {
|
||||
showInfo := ErpOrderShowConfig{
|
||||
|
@ -592,3 +597,35 @@ func GetSystemSmsConfig() (int, error) {
|
|||
|
||||
return int(smsConfig.MonthFreeCount), nil
|
||||
}
|
||||
|
||||
// GetTestUserConfig 获取测试用户信息
|
||||
func GetTestUserConfig() ([]UserInfo, error) {
|
||||
testConfig := new(TestUserInfoConfig)
|
||||
var configAllocation Config
|
||||
err := orm.Eloquent.Table("config").Where("name=?", ConfigTestUserInfo).Find(&configAllocation).Error
|
||||
if err != nil {
|
||||
logger.Errorf("GetSystemSmsConfig err:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal([]byte(configAllocation.Value), testConfig)
|
||||
if err != nil {
|
||||
logger.Errorf("GetSystemSmsConfig err:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var users []UserInfo
|
||||
for i, item := range testConfig.Uid {
|
||||
user, _ := GetUserInfoByUid(item)
|
||||
if user.ID == 0 { // 没查到数据
|
||||
continue
|
||||
}
|
||||
|
||||
user.ID = uint32(i) + 1
|
||||
user.MemberLevel = MemberLevelTest
|
||||
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
return users, nil
|
||||
}
|
||||
|
|
|
@ -275,6 +275,7 @@ func CreateErpMarketingCoupon(req *ErpMarketingCouponCreateReq) error {
|
|||
CategoryNumber: req.CategoryNumber,
|
||||
ActivityType: 666,
|
||||
ErpCouponId: erpCoupon.ID,
|
||||
ActiveStart: Now(),
|
||||
ActiveEnd: Now().AddDate(0, 0, int(req.ActiveDate)),
|
||||
Limit: req.Limit,
|
||||
}
|
||||
|
@ -337,6 +338,8 @@ func EditErpMarketingCoupon(req *ErpMarketingCouponEditReq) error {
|
|||
coupon.Describe = req.Describe
|
||||
coupon.Rule = req.Rule
|
||||
coupon.Value = req.Amount * 100
|
||||
coupon.ActiveStart = Now()
|
||||
coupon.ActiveEnd = Now().AddDate(0, 0, int(req.ActiveDate))
|
||||
|
||||
err = begin.Model(&Coupon{}).Where("erp_coupon_id = ?", req.ErpCouponId).
|
||||
Omit("created_at").Save(coupon).Error
|
||||
|
@ -530,17 +533,46 @@ func GetTaskProgress(erpCouponId []uint32) ([]CouponIssuanceTask, error) {
|
|||
func getUsersAfterID(lastUserID, userType uint32) ([]UserInfo, error) {
|
||||
var err error
|
||||
var users []UserInfo
|
||||
// 获取尊享会员信息
|
||||
var privilegeUserList []PrivilegeMember
|
||||
|
||||
switch userType {
|
||||
case 2: // 2-未付费用户:MemberLevel 不能是 (2, 3, 4, 5),不包含已过期的租卡用户
|
||||
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level not in ? and member_expire = ?", lastUserID, []uint32{
|
||||
MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold}, "0000-00-00 00:00:00").
|
||||
Order("id asc").Limit(100).Find(&users).Error
|
||||
case 3:
|
||||
// 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
||||
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level not in ? and member_expire = ?",
|
||||
lastUserID, []uint32{MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold},
|
||||
"0000-00-00 00:00:00").Order("id asc").Limit(100).Find(&users).Error
|
||||
|
||||
case 3: // 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
||||
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level in ?", lastUserID, []uint32{
|
||||
MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold}).
|
||||
Order("id asc").Limit(100).Find(&users).Error
|
||||
|
||||
case 4: // 尊享会员
|
||||
err = orm.Eloquent.Model(&PrivilegeMember{}).Where("id > ? and member_level = ?",
|
||||
lastUserID, MemberLevelPrivilege).Order("id asc").Limit(100).Find(&privilegeUserList).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, privilegeUser := range privilegeUserList {
|
||||
user, _ := GetUserInfoByUid(privilegeUser.Uid)
|
||||
if user.ID == 0 { // 没查到数据
|
||||
user.Uid = privilegeUser.Uid
|
||||
user.Tel = privilegeUser.Tel
|
||||
}
|
||||
|
||||
user.ID = privilegeUser.ID
|
||||
user.MemberLevel = MemberLevelPrivilege
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
case 5: // 测试用户
|
||||
if lastUserID == 0 {
|
||||
users, err = GetTestUserConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
case 1: // 1-所有人:不限制会员等级,所有人均可领取
|
||||
fallthrough
|
||||
default:
|
||||
|
@ -551,6 +583,7 @@ func getUsersAfterID(lastUserID, userType uint32) ([]UserInfo, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return users, nil
|
||||
}
|
||||
|
||||
|
@ -595,19 +628,6 @@ func markTaskAsCompleted(erpCouponId []uint32, nTotalCount int) error {
|
|||
|
||||
// 校验用户是否符合领取优惠券的条件
|
||||
func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
||||
// 获取尊享会员信息
|
||||
var privilegeUserInfo PrivilegeMember
|
||||
if err := orm.Eloquent.Table("privilege_member").Where("uid = ?", user.Uid).Find(&privilegeUserInfo).Error; err != nil {
|
||||
logger.Errorf("获取尊享会员信息出错:", logger.Field("err", err))
|
||||
return false
|
||||
}
|
||||
|
||||
// 如果是尊享会员,将其视为付费会员
|
||||
if privilegeUserInfo.MemberLevel == MemberLevelPrivilege {
|
||||
// 尊享会员归类为已付费用户
|
||||
user.MemberLevel = MemberLevelGold // 可以选择将尊享会员设为任意一个付费会员等级,通常设为黄金会员
|
||||
}
|
||||
|
||||
switch erpCoupon.UserType {
|
||||
case 1:
|
||||
// 1-所有人:不限制会员等级,所有人均可领取
|
||||
|
@ -620,6 +640,11 @@ func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
|||
user.MemberLevel == MemberLevelBlackGold {
|
||||
return false
|
||||
}
|
||||
|
||||
if IsValidPrivilegeMember(user.Uid) { // 如果是尊享会员
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
case 3:
|
||||
// 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
||||
|
@ -629,6 +654,26 @@ func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
|||
user.MemberLevel == MemberLevelBlackGold {
|
||||
return true
|
||||
}
|
||||
|
||||
if IsValidPrivilegeMember(user.Uid) { // 如果是尊享会员
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
case 4: // 尊享会员
|
||||
if user.MemberLevel == MemberLevelPrivilege {
|
||||
return true
|
||||
}
|
||||
|
||||
if IsValidPrivilegeMember(user.Uid) { // 如果是尊享会员
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
case 5: // 测试用户
|
||||
if user.MemberLevel == MemberLevelTest {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
default:
|
||||
// 未知类型,不发放
|
||||
|
@ -657,6 +702,7 @@ func issueCouponsToUsers(users []UserInfo, erpCouponId []uint32) (int, error) {
|
|||
}
|
||||
|
||||
for _, coupon := range coupons {
|
||||
duration := coupon.ActiveEnd.Sub(coupon.ActiveStart).Hours() / 24
|
||||
couponCode, _ := utils.GenerateRandomNumber19()
|
||||
userCoupon := &UserCoupon{
|
||||
Uid: user.Uid,
|
||||
|
@ -665,7 +711,7 @@ func issueCouponsToUsers(users []UserInfo, erpCouponId []uint32) (int, error) {
|
|||
Value: coupon.Value,
|
||||
State: 1,
|
||||
ActiveStart: time.Now(),
|
||||
ActiveEnd: coupon.ActiveEnd,
|
||||
ActiveEnd: time.Now().Add(time.Duration(duration) * 24 * time.Hour),
|
||||
RedeemCode: "",
|
||||
CategoryNumber: coupon.CategoryNumber,
|
||||
Code: couponCode,
|
||||
|
|
|
@ -59,6 +59,7 @@ const (
|
|||
MemberLevelPlatinum = 4 // 白金会员
|
||||
MemberLevelBlackGold = 5 // 黑金会员
|
||||
MemberLevelPrivilege = 6 // 尊享会员
|
||||
MemberLevelTest = 99 // 测试用户
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -4741,3 +4742,19 @@ func GetUserTypeString(userType int) string {
|
|||
return "普通会员"
|
||||
}
|
||||
}
|
||||
|
||||
func IsValidPrivilegeMember(uid uint32) bool {
|
||||
// 获取尊享会员信息
|
||||
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 false
|
||||
}
|
||||
|
||||
// 如果是尊享会员
|
||||
if privilegeUserInfo.MemberLevel == MemberLevelPrivilege {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user