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" // 合作商支付设置
|
ConfigCooperativePayInfo = "cooperative_pay_info" // 合作商支付设置
|
||||||
ConfigErpOrderShowInfo = "erp_order_show_config" // 零售订单显示设置
|
ConfigErpOrderShowInfo = "erp_order_show_config" // 零售订单显示设置
|
||||||
ConfigSystemSmsCount = "sms_config" // 获取系统每月短信限额
|
ConfigSystemSmsCount = "sms_config" // 获取系统每月短信限额
|
||||||
|
ConfigTestUserInfo = "test_user_Info" // 获取测试用户uid
|
||||||
)
|
)
|
||||||
|
|
||||||
func PayConfigInfo() (*PayConfig, error) {
|
func PayConfigInfo() (*PayConfig, error) {
|
||||||
|
@ -382,6 +383,10 @@ type SystemSmsConfig struct {
|
||||||
MonthFreeCount uint32 `json:"month_free_count" ` // 每月短信免费额度
|
MonthFreeCount uint32 `json:"month_free_count" ` // 每月短信免费额度
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TestUserInfoConfig struct {
|
||||||
|
Uid []uint32 `json:"uid" ` // 测试用户uid
|
||||||
|
}
|
||||||
|
|
||||||
// SetErpOrderShowConfig 设置零售订单展示配置信息
|
// SetErpOrderShowConfig 设置零售订单展示配置信息
|
||||||
func SetErpOrderShowConfig(req *ErpOrderShowConfig) error {
|
func SetErpOrderShowConfig(req *ErpOrderShowConfig) error {
|
||||||
showInfo := ErpOrderShowConfig{
|
showInfo := ErpOrderShowConfig{
|
||||||
|
@ -592,3 +597,35 @@ func GetSystemSmsConfig() (int, error) {
|
||||||
|
|
||||||
return int(smsConfig.MonthFreeCount), nil
|
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,
|
CategoryNumber: req.CategoryNumber,
|
||||||
ActivityType: 666,
|
ActivityType: 666,
|
||||||
ErpCouponId: erpCoupon.ID,
|
ErpCouponId: erpCoupon.ID,
|
||||||
|
ActiveStart: Now(),
|
||||||
ActiveEnd: Now().AddDate(0, 0, int(req.ActiveDate)),
|
ActiveEnd: Now().AddDate(0, 0, int(req.ActiveDate)),
|
||||||
Limit: req.Limit,
|
Limit: req.Limit,
|
||||||
}
|
}
|
||||||
|
@ -337,6 +338,8 @@ func EditErpMarketingCoupon(req *ErpMarketingCouponEditReq) error {
|
||||||
coupon.Describe = req.Describe
|
coupon.Describe = req.Describe
|
||||||
coupon.Rule = req.Rule
|
coupon.Rule = req.Rule
|
||||||
coupon.Value = req.Amount * 100
|
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).
|
err = begin.Model(&Coupon{}).Where("erp_coupon_id = ?", req.ErpCouponId).
|
||||||
Omit("created_at").Save(coupon).Error
|
Omit("created_at").Save(coupon).Error
|
||||||
|
@ -530,17 +533,46 @@ func GetTaskProgress(erpCouponId []uint32) ([]CouponIssuanceTask, error) {
|
||||||
func getUsersAfterID(lastUserID, userType uint32) ([]UserInfo, error) {
|
func getUsersAfterID(lastUserID, userType uint32) ([]UserInfo, error) {
|
||||||
var err error
|
var err error
|
||||||
var users []UserInfo
|
var users []UserInfo
|
||||||
|
// 获取尊享会员信息
|
||||||
|
var privilegeUserList []PrivilegeMember
|
||||||
|
|
||||||
switch userType {
|
switch userType {
|
||||||
case 2: // 2-未付费用户:MemberLevel 不能是 (2, 3, 4, 5),不包含已过期的租卡用户
|
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{
|
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level not in ? and member_expire = ?",
|
||||||
MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold}, "0000-00-00 00:00:00").
|
lastUserID, []uint32{MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold},
|
||||||
Order("id asc").Limit(100).Find(&users).Error
|
"0000-00-00 00:00:00").Order("id asc").Limit(100).Find(&users).Error
|
||||||
case 3:
|
|
||||||
// 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
case 3: // 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
||||||
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level in ?", lastUserID, []uint32{
|
err = orm.Eloquent.Model(&UserInfo{}).Where("id > ? and member_level in ?", lastUserID, []uint32{
|
||||||
MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold}).
|
MemberLevelGold, MemberLevelPeriod, MemberLevelPlatinum, MemberLevelBlackGold}).
|
||||||
Order("id asc").Limit(100).Find(&users).Error
|
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-所有人:不限制会员等级,所有人均可领取
|
case 1: // 1-所有人:不限制会员等级,所有人均可领取
|
||||||
fallthrough
|
fallthrough
|
||||||
default:
|
default:
|
||||||
|
@ -551,6 +583,7 @@ func getUsersAfterID(lastUserID, userType uint32) ([]UserInfo, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return users, nil
|
return users, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -595,19 +628,6 @@ func markTaskAsCompleted(erpCouponId []uint32, nTotalCount int) error {
|
||||||
|
|
||||||
// 校验用户是否符合领取优惠券的条件
|
// 校验用户是否符合领取优惠券的条件
|
||||||
func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
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 {
|
switch erpCoupon.UserType {
|
||||||
case 1:
|
case 1:
|
||||||
// 1-所有人:不限制会员等级,所有人均可领取
|
// 1-所有人:不限制会员等级,所有人均可领取
|
||||||
|
@ -620,6 +640,11 @@ func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
||||||
user.MemberLevel == MemberLevelBlackGold {
|
user.MemberLevel == MemberLevelBlackGold {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if IsValidPrivilegeMember(user.Uid) { // 如果是尊享会员
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
case 3:
|
case 3:
|
||||||
// 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
// 3-已付费用户:MemberLevel 必须是 (2, 3, 4, 5)
|
||||||
|
@ -629,6 +654,26 @@ func isEligibleForCoupon(user UserInfo, erpCoupon ErpCoupon) bool {
|
||||||
user.MemberLevel == MemberLevelBlackGold {
|
user.MemberLevel == MemberLevelBlackGold {
|
||||||
return true
|
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
|
return false
|
||||||
default:
|
default:
|
||||||
// 未知类型,不发放
|
// 未知类型,不发放
|
||||||
|
@ -657,6 +702,7 @@ func issueCouponsToUsers(users []UserInfo, erpCouponId []uint32) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, coupon := range coupons {
|
for _, coupon := range coupons {
|
||||||
|
duration := coupon.ActiveEnd.Sub(coupon.ActiveStart).Hours() / 24
|
||||||
couponCode, _ := utils.GenerateRandomNumber19()
|
couponCode, _ := utils.GenerateRandomNumber19()
|
||||||
userCoupon := &UserCoupon{
|
userCoupon := &UserCoupon{
|
||||||
Uid: user.Uid,
|
Uid: user.Uid,
|
||||||
|
@ -665,7 +711,7 @@ func issueCouponsToUsers(users []UserInfo, erpCouponId []uint32) (int, error) {
|
||||||
Value: coupon.Value,
|
Value: coupon.Value,
|
||||||
State: 1,
|
State: 1,
|
||||||
ActiveStart: time.Now(),
|
ActiveStart: time.Now(),
|
||||||
ActiveEnd: coupon.ActiveEnd,
|
ActiveEnd: time.Now().Add(time.Duration(duration) * 24 * time.Hour),
|
||||||
RedeemCode: "",
|
RedeemCode: "",
|
||||||
CategoryNumber: coupon.CategoryNumber,
|
CategoryNumber: coupon.CategoryNumber,
|
||||||
Code: couponCode,
|
Code: couponCode,
|
||||||
|
|
|
@ -59,6 +59,7 @@ const (
|
||||||
MemberLevelPlatinum = 4 // 白金会员
|
MemberLevelPlatinum = 4 // 白金会员
|
||||||
MemberLevelBlackGold = 5 // 黑金会员
|
MemberLevelBlackGold = 5 // 黑金会员
|
||||||
MemberLevelPrivilege = 6 // 尊享会员
|
MemberLevelPrivilege = 6 // 尊享会员
|
||||||
|
MemberLevelTest = 99 // 测试用户
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -4741,3 +4742,19 @@ func GetUserTypeString(userType int) string {
|
||||||
return "普通会员"
|
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