1.优化会员邀请流程;
This commit is contained in:
parent
5794d4c69f
commit
7f8d1ba8e7
|
@ -79,12 +79,18 @@ func AuthLogin(c *gin.Context) {
|
||||||
|
|
||||||
fmt.Println("InviteUid:", req.InviteUid)
|
fmt.Println("InviteUid:", req.InviteUid)
|
||||||
nowTime := time.Now()
|
nowTime := time.Now()
|
||||||
// 不存在则创建 新用户
|
|
||||||
if req.InviteUid != 0 && req.InviteUid != user.Uid { // 入参有邀请人id且非本人
|
if req.InviteUid != 0 && req.InviteUid != user.Uid && user.Uid != 0 { // 入参有邀请人id且非本人
|
||||||
inviteUser := model.GetUserByUid(req.InviteUid)
|
inviteUser := model.GetUserByUid(req.InviteUid)
|
||||||
user.StoreId = inviteUser.StoreId
|
effectiveStoreInfo, err := model.GetUserEffectiveStore(req.InviteUid)
|
||||||
if user.StoreId == 0 { // 用户所属门店id为空则更新
|
if err != nil {
|
||||||
_, err = model.NewUserQuerySet(model.DB).UidEq(user.Uid).GetUpdater().SetStoreId(inviteUser.StoreId).
|
RespJson(c, status.InviteUserFail, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//user.StoreId = uint64(effectiveStoreInfo.StoreID)
|
||||||
|
|
||||||
|
if user.StoreId == 0 && user.Uid != 0 { // 用户所属门店id为空则更新
|
||||||
|
_, err = model.NewUserQuerySet(model.DB).UidEq(user.Uid).GetUpdater().SetStoreId(effectiveStoreInfo.StoreID).
|
||||||
UpdateNum()
|
UpdateNum()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("update err:", err)
|
logger.Error("update err:", err)
|
||||||
|
@ -104,6 +110,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
firstInviteRecord := &model.UserInviteRecord{
|
firstInviteRecord := &model.UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: req.InviteUid,
|
FromUid: req.InviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 2, // 激活邀请
|
Action: 2, // 激活邀请
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0, // 0,未开通会员
|
MemberLevel: 0, // 0,未开通会员
|
||||||
|
@ -120,6 +127,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
inviteRecord := &model.UserInviteRecord{
|
inviteRecord := &model.UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: req.InviteUid,
|
FromUid: req.InviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 1, // 未激活
|
Action: 1, // 未激活
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0,
|
MemberLevel: 0,
|
||||||
|
@ -144,21 +152,21 @@ func AuthLogin(c *gin.Context) {
|
||||||
if inviteErr == model.RecordNotFound { // 邀请表没记录
|
if inviteErr == model.RecordNotFound { // 邀请表没记录
|
||||||
memberLevel := user.MemberLevel
|
memberLevel := user.MemberLevel
|
||||||
if memberLevel == 0 {
|
if memberLevel == 0 {
|
||||||
memberLevel = model.MemberTypeConsumer // 普通用户
|
memberLevel = model.MemberLevelUser // 普通会员
|
||||||
}
|
}
|
||||||
invite := &model.UserInvite{
|
invite := &model.UserInvite{
|
||||||
FromUid: req.InviteUid, // 邀请人用户id
|
FromUid: req.InviteUid, // 邀请人用户id
|
||||||
UserType: inviteUser.UserType, // 邀请人用户类型
|
UserType: inviteUser.UserType, // 邀请人用户类型
|
||||||
StoreId: inviteUser.StoreId, // 邀请人门店ID
|
StoreId: effectiveStoreInfo.StoreID, // 邀请人门店ID --- 邀请人如果有多家门店:优先取有效期短的门店,如果有效期相同则取门店id小的门店
|
||||||
MemberOpenTime: time.Time{}, // 开通会员时间
|
MemberOpenTime: time.Time{}, // 开通会员时间
|
||||||
MemberType: memberLevel, // 被邀请用户类型
|
MemberType: memberLevel, // 被邀请用户类型
|
||||||
MemberStatus: 1, // 被邀请用户会员状态 1-未开通
|
MemberStatus: 1, // 被邀请用户会员状态 1-未开通
|
||||||
ToUid: user.Uid, // 被邀请用户id
|
ToUid: user.Uid, // 被邀请用户id
|
||||||
Action: 1, // 未激活
|
Action: 1, // 未激活
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
UserInviteRecordId: inviteRecord.ID, // 邀请记录id
|
UserInviteRecordId: inviteRecord.ID, // 邀请记录id
|
||||||
FirstInvite: 0, // TODO 首次邀请id
|
FirstInvite: 1, // 首次邀请标志:1 首次邀请 0 非首次
|
||||||
Scan: 1, // 扫码次数
|
Scan: 1, // 扫码次数
|
||||||
}
|
}
|
||||||
fmt.Println("创建邀请:", invite)
|
fmt.Println("创建邀请:", invite)
|
||||||
//count, err := model.NewUserInviteQuerySet(model.DB).FromUidEq(req.InviteUid).ToUidEq(user.Uid).Count()
|
//count, err := model.NewUserInviteQuerySet(model.DB).FromUidEq(req.InviteUid).ToUidEq(user.Uid).Count()
|
||||||
|
@ -187,6 +195,8 @@ func AuthLogin(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 不存在则创建新用户
|
||||||
if sqlErr == model.RecordNotFound {
|
if sqlErr == model.RecordNotFound {
|
||||||
// 通过手机号判断之前是否有数据
|
// 通过手机号判断之前是否有数据
|
||||||
sqlErr = model.NewUserQuerySet(model.DB).TelEq(phone.PhoneNumber).One(&user)
|
sqlErr = model.NewUserQuerySet(model.DB).TelEq(phone.PhoneNumber).One(&user)
|
||||||
|
@ -201,7 +211,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
user.WxOpenID = resp.OpenID
|
user.WxOpenID = resp.OpenID
|
||||||
user.WxUnionID = resp.UnionID
|
user.WxUnionID = resp.UnionID
|
||||||
user.LastLoginAt = nowTime
|
user.LastLoginAt = nowTime
|
||||||
user.MemberLevel = 1 // 普通会员
|
user.MemberLevel = model.MemberLevelUser // 普通会员
|
||||||
//user.WxName = userInfo.Nickname
|
//user.WxName = userInfo.Nickname
|
||||||
//user.WxAvatar = userInfo.Avatar
|
//user.WxAvatar = userInfo.Avatar
|
||||||
user.CreatedAt = nowTime
|
user.CreatedAt = nowTime
|
||||||
|
@ -217,18 +227,24 @@ func AuthLogin(c *gin.Context) {
|
||||||
WxOpenID: resp.OpenID,
|
WxOpenID: resp.OpenID,
|
||||||
WxUnionID: resp.UnionID,
|
WxUnionID: resp.UnionID,
|
||||||
LastLoginAt: nowTime,
|
LastLoginAt: nowTime,
|
||||||
MemberLevel: 1,
|
MemberLevel: model.MemberLevelUser, // 普通会员
|
||||||
//Notify: common.Yes,
|
Tel: phone.PhoneNumber,
|
||||||
}
|
}
|
||||||
user.Uid = createUid() // 新建uid
|
user.Uid = createUid() // 新建uid
|
||||||
|
|
||||||
inviteUser := model.GetUserByUid(req.InviteUid)
|
inviteUser := model.GetUserByUid(req.InviteUid)
|
||||||
|
effectiveStoreInfo, err := model.GetUserEffectiveStore(req.InviteUid)
|
||||||
|
if err != nil {
|
||||||
|
RespJson(c, status.InviteUserFail, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var eg errgroup.Group
|
var eg errgroup.Group
|
||||||
if req.InviteUid != 0 && inviteUser.UserType == 2 { // 如果入参有邀请人id,并且是店员,则新增2条邀请记录
|
if req.InviteUid != 0 && inviteUser.UserType == model.UserTypeShopAssistant { // 如果入参有邀请人id,并且是店员,则新增2条邀请记录
|
||||||
inviteRecordFirst := &model.UserInviteRecord{
|
inviteRecordFirst := &model.UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: req.InviteUid,
|
FromUid: req.InviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 2, // 激活邀请
|
Action: 2, // 激活邀请
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0, // 未开通会员
|
MemberLevel: 0, // 未开通会员
|
||||||
|
@ -244,6 +260,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
inviteRecord := &model.UserInviteRecord{
|
inviteRecord := &model.UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: req.InviteUid,
|
FromUid: req.InviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 1, // 1-未激活
|
Action: 1, // 1-未激活
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0, // 未开通会员
|
MemberLevel: 0, // 未开通会员
|
||||||
|
@ -257,7 +274,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
inviteUser := model.GetUserByUid(req.InviteUid)
|
inviteUser := model.GetUserByUid(req.InviteUid)
|
||||||
user.StoreId = inviteUser.StoreId
|
user.StoreId = effectiveStoreInfo.StoreID
|
||||||
user.UserType = model.UserTypeConsumer
|
user.UserType = model.UserTypeConsumer
|
||||||
user.CooperativeBusinessId = inviteUser.CooperativeBusinessId
|
user.CooperativeBusinessId = inviteUser.CooperativeBusinessId
|
||||||
user.CooperativeName = inviteUser.CooperativeName
|
user.CooperativeName = inviteUser.CooperativeName
|
||||||
|
@ -265,8 +282,8 @@ func AuthLogin(c *gin.Context) {
|
||||||
invite := &model.UserInvite{
|
invite := &model.UserInvite{
|
||||||
FromUid: req.InviteUid,
|
FromUid: req.InviteUid,
|
||||||
UserType: inviteUser.UserType,
|
UserType: inviteUser.UserType,
|
||||||
StoreId: inviteUser.StoreId,
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
MemberType: model.MemberTypeConsumer,
|
MemberType: model.MemberLevelUser,
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
MemberStatus: 1, // 1-未开通
|
MemberStatus: 1, // 1-未开通
|
||||||
Action: 1, // 1-未激活
|
Action: 1, // 1-未激活
|
||||||
|
@ -293,7 +310,7 @@ func AuthLogin(c *gin.Context) {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
err := eg.Wait()
|
err = eg.Wait()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
|
|
@ -448,14 +448,14 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
remark := ""
|
remark := ""
|
||||||
if record.MemberLevel == 2 {
|
if record.MemberLevel == model.MemberLevelGold {
|
||||||
if record.MemberGenre != 201 && record.MemberGenre != 202 {
|
if record.MemberGenre != model.MemberGenreQuarter && record.MemberGenre != model.MemberGenreHalfYear {
|
||||||
record.MemberGenre = 200 // 新增:如果是年费黄金会员则member_genre设置为200
|
record.MemberGenre = model.MemberGenreYear // 新增:如果是年费黄金会员则member_genre设置为200
|
||||||
}
|
}
|
||||||
remark = "黄金会员费"
|
remark = "黄金会员费"
|
||||||
} else if record.MemberLevel == 4 {
|
} else if record.MemberLevel == model.MemberLevelPlatinum {
|
||||||
remark = "白金会员费"
|
remark = "白金会员费"
|
||||||
} else if record.MemberLevel == 5 {
|
} else if record.MemberLevel == model.MemberLevelBlackGold {
|
||||||
remark = "黑金会员费"
|
remark = "黑金会员费"
|
||||||
}
|
}
|
||||||
fundRecord.Uid = uint32(record.Uid)
|
fundRecord.Uid = uint32(record.Uid)
|
||||||
|
@ -480,9 +480,9 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
isShopAssistantCode := false
|
isShopAssistantCode := false
|
||||||
|
|
||||||
var expireTime time.Time
|
var expireTime time.Time
|
||||||
if record.MemberGenre == 201 { // 季度黄金
|
if record.MemberGenre == model.MemberGenreQuarter { // 季度黄金
|
||||||
expireTime = newTime.AddDate(0, 0, 90)
|
expireTime = newTime.AddDate(0, 0, 90)
|
||||||
} else if record.MemberGenre == 202 { // 半年黄金
|
} else if record.MemberGenre == model.MemberGenreHalfYear { // 半年黄金
|
||||||
expireTime = newTime.AddDate(0, 0, 180)
|
expireTime = newTime.AddDate(0, 0, 180)
|
||||||
} else {
|
} else {
|
||||||
expireTime = newTime.AddDate(1, 0, 0)
|
expireTime = newTime.AddDate(1, 0, 0)
|
||||||
|
@ -490,14 +490,15 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
|
|
||||||
if user.MemberExpire.After(newTime) {
|
if user.MemberExpire.After(newTime) {
|
||||||
//expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
//expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
||||||
if record.MemberGenre == 201 {
|
if record.MemberGenre == model.MemberGenreQuarter {
|
||||||
expireTime = user.MemberExpire.AddDate(0, 0, 90)
|
expireTime = user.MemberExpire.AddDate(0, 0, 90)
|
||||||
} else if record.MemberGenre == 202 {
|
} else if record.MemberGenre == model.MemberGenreHalfYear {
|
||||||
expireTime = user.MemberExpire.AddDate(0, 0, 180)
|
expireTime = user.MemberExpire.AddDate(0, 0, 180)
|
||||||
} else {
|
} else {
|
||||||
expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memberRecord.BeforeMemberLevel = user.MemberLevel
|
memberRecord.BeforeMemberLevel = user.MemberLevel
|
||||||
memberRecord.BeforeMemberExpire = user.MemberExpire
|
memberRecord.BeforeMemberExpire = user.MemberExpire
|
||||||
memberRecord.Serial = uint32(user.MemberExpire.Unix())
|
memberRecord.Serial = uint32(user.MemberExpire.Unix())
|
||||||
|
@ -520,9 +521,9 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
if user.OpenMemberTime.IsZero() {
|
if user.OpenMemberTime.IsZero() {
|
||||||
//openMemberTime = user.OpenMemberTime
|
//openMemberTime = user.OpenMemberTime
|
||||||
userUpdateQs = userUpdateQs.SetOpenMemberTime(newTime).SetOpenMemberLevel(record.MemberLevel)
|
userUpdateQs = userUpdateQs.SetOpenMemberTime(newTime).SetOpenMemberLevel(record.MemberLevel)
|
||||||
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 1)
|
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 1) // 开通会员类型
|
||||||
} else {
|
} else {
|
||||||
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 2)
|
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 2) // 续费会员类型
|
||||||
}
|
}
|
||||||
_, err = userUpdateQs.UpdateNum()
|
_, err = userUpdateQs.UpdateNum()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -561,7 +562,7 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
//qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
|
//qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
|
||||||
if invite.Action != 2 {
|
if invite.Action != 2 { // 2-激活邀请
|
||||||
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
|
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
|
||||||
// SpendType 类型
|
// SpendType 类型
|
||||||
//if user.MemberLevel != 2 {
|
//if user.MemberLevel != 2 {
|
||||||
|
@ -699,7 +700,6 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
}
|
}
|
||||||
fmt.Println("notify.TotalFee:", notifyInfo.TotalFee)
|
fmt.Println("notify.TotalFee:", notifyInfo.TotalFee)
|
||||||
fmt.Println("notify.OutTradeNo:", notifyInfo.OutTradeNo)
|
fmt.Println("notify.OutTradeNo:", notifyInfo.OutTradeNo)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if notifyInfo.Attach == wxpay.WxPayDeposit {
|
if notifyInfo.Attach == wxpay.WxPayDeposit {
|
||||||
|
@ -1386,14 +1386,14 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
logger.Info("用户uid:", outOrderNo)
|
logger.Info("用户uid:", outOrderNo)
|
||||||
|
|
||||||
remark := ""
|
remark := ""
|
||||||
if record.MemberLevel == 2 {
|
if record.MemberLevel == model.MemberLevelGold {
|
||||||
if record.MemberGenre != 201 && record.MemberGenre != 202 {
|
if record.MemberGenre != model.MemberGenreQuarter && record.MemberGenre != model.MemberGenreHalfYear {
|
||||||
record.MemberGenre = 200 // 新增:如果是年费黄金会员则member_genre设置为200
|
record.MemberGenre = model.MemberGenreYear // 新增:如果是年费黄金会员则member_genre设置为200
|
||||||
}
|
}
|
||||||
remark = "黄金会员费"
|
remark = "黄金会员费"
|
||||||
} else if record.MemberLevel == 4 {
|
} else if record.MemberLevel == model.MemberLevelPlatinum {
|
||||||
remark = "白金会员费"
|
remark = "白金会员费"
|
||||||
} else if record.MemberLevel == 5 {
|
} else if record.MemberLevel == model.MemberLevelBlackGold {
|
||||||
remark = "黑金会员费"
|
remark = "黑金会员费"
|
||||||
}
|
}
|
||||||
fundRecord.Uid = uint32(record.Uid)
|
fundRecord.Uid = uint32(record.Uid)
|
||||||
|
@ -1416,15 +1416,11 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
spendType = 3
|
spendType = 3
|
||||||
}
|
}
|
||||||
isShopAssistantCode := false
|
isShopAssistantCode := false
|
||||||
//expireTime := newTime.AddDate(1, 0, 0)
|
|
||||||
//if user.MemberExpire.After(newTime) {
|
|
||||||
// expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
|
||||||
//}
|
|
||||||
|
|
||||||
var expireTime time.Time
|
var expireTime time.Time
|
||||||
if record.MemberGenre == 201 {
|
if record.MemberGenre == model.MemberGenreQuarter {
|
||||||
expireTime = newTime.AddDate(0, 0, 90)
|
expireTime = newTime.AddDate(0, 0, 90)
|
||||||
} else if record.MemberGenre == 202 {
|
} else if record.MemberGenre == model.MemberGenreHalfYear {
|
||||||
expireTime = newTime.AddDate(0, 0, 180)
|
expireTime = newTime.AddDate(0, 0, 180)
|
||||||
} else {
|
} else {
|
||||||
expireTime = newTime.AddDate(1, 0, 0)
|
expireTime = newTime.AddDate(1, 0, 0)
|
||||||
|
@ -1432,9 +1428,9 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
|
|
||||||
if user.MemberExpire.After(newTime) {
|
if user.MemberExpire.After(newTime) {
|
||||||
//expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
//expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
||||||
if record.MemberGenre == 201 {
|
if record.MemberGenre == model.MemberGenreQuarter {
|
||||||
expireTime = user.MemberExpire.AddDate(0, 0, 90)
|
expireTime = user.MemberExpire.AddDate(0, 0, 90)
|
||||||
} else if record.MemberGenre == 202 {
|
} else if record.MemberGenre == model.MemberGenreHalfYear {
|
||||||
expireTime = user.MemberExpire.AddDate(0, 0, 180)
|
expireTime = user.MemberExpire.AddDate(0, 0, 180)
|
||||||
} else {
|
} else {
|
||||||
expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
||||||
|
@ -1502,37 +1498,16 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
if err != nil && err != model.RecordNotFound {
|
if err != nil && err != model.RecordNotFound {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
} else {
|
} else {
|
||||||
//if err == model.RecordNotFound {
|
|
||||||
// userInvite := &model.UserInvite{
|
|
||||||
// FromUid: 0,
|
|
||||||
// UserType: 0,
|
|
||||||
// StoreId: 0,
|
|
||||||
// MemberOpenTime: newTime,
|
|
||||||
// MemberType: 2,
|
|
||||||
// ToUid: record.Uid,
|
|
||||||
// MemberStatus: 2,
|
|
||||||
// MemberLevel: record.MemberLevel,
|
|
||||||
// Action: 1,
|
|
||||||
// SpendType: 1,
|
|
||||||
// }
|
|
||||||
// err := userInvite.Create(model.DB)
|
|
||||||
// if err != nil {
|
|
||||||
// logger.Error("err:", err)
|
|
||||||
// }
|
|
||||||
// err = model.SendUserVm(record.Uid, record.MemberLevel, 100)
|
|
||||||
// if err != nil {
|
|
||||||
// logger.Error("send user vm err:", err)
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
//qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
|
effectiveStoreInfo, err := model.GetUserEffectiveStore(invite.FromUid)
|
||||||
if invite.Action != 2 {
|
if err != nil {
|
||||||
|
logger.Error("GetUserEffectiveStore err:", err)
|
||||||
|
effectiveStoreInfo.StoreID = invite.StoreId
|
||||||
|
}
|
||||||
|
|
||||||
|
if invite.Action != 2 { // 首次开通会员
|
||||||
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
|
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
|
||||||
// SpendType 类型
|
|
||||||
//if user.MemberLevel != 2 {
|
|
||||||
// qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel)
|
|
||||||
//}
|
|
||||||
if isShopAssistantCode {
|
if isShopAssistantCode {
|
||||||
qs = qs.SetInviteForm(1)
|
qs = qs.SetInviteForm(1)
|
||||||
}
|
}
|
||||||
|
@ -1552,10 +1527,11 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
} else {
|
} else { // 续费会员-用户直接续费
|
||||||
inviteRecordNew := &model.UserInviteRecord{
|
inviteRecordNew := &model.UserInviteRecord{
|
||||||
ToUid: invite.ToUid,
|
ToUid: invite.ToUid,
|
||||||
FromUid: invite.FromUid,
|
FromUid: invite.FromUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 2,
|
Action: 2,
|
||||||
SpendType: spendType,
|
SpendType: spendType,
|
||||||
MemberLevel: record.MemberLevel,
|
MemberLevel: record.MemberLevel,
|
||||||
|
@ -1586,8 +1562,9 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
FirstInvite: 0,
|
FirstInvite: 0,
|
||||||
MemberGenre: record.MemberGenre,
|
MemberGenre: record.MemberGenre,
|
||||||
}
|
}
|
||||||
if isShopAssistantCode {
|
if isShopAssistantCode { // 如果使用了优惠券,则是店员邀请续费;否则是用户自己发起续费
|
||||||
userInviteNew.InviteForm = 1
|
userInviteNew.InviteForm = 1
|
||||||
|
userInviteNew.StoreId = effectiveStoreInfo.StoreID
|
||||||
}
|
}
|
||||||
err = model.DB.Create(userInviteNew).Error
|
err = model.DB.Create(userInviteNew).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1598,20 +1575,6 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
if invite.FromUid != 0 {
|
if invite.FromUid != 0 {
|
||||||
inviteUser := model.GetUserByUid(invite.FromUid)
|
inviteUser := model.GetUserByUid(invite.FromUid)
|
||||||
if inviteUser != nil {
|
if inviteUser != nil {
|
||||||
if inviteUser.UserType != 2 /*不是店员*/ && user.MemberLevel != 2 { // 邀请 新用户推送一次
|
|
||||||
//err = model.SendUserVm(inviteUser.Uid, record.MemberLevel, 1)
|
|
||||||
//if err != nil {
|
|
||||||
// logger.Error("send user vm err:", err)
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
if spendType == 2 {
|
|
||||||
//err = model.SendUserVm(user.Uid, record.MemberLevel, 0)
|
|
||||||
//if err != nil {
|
|
||||||
// logger.Error("send user vm err:", err)
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
openMemberChannel := model.OpenMemberChannelUserInvite
|
openMemberChannel := model.OpenMemberChannelUserInvite
|
||||||
userQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater()
|
userQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater()
|
||||||
|
|
||||||
|
@ -1621,14 +1584,19 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
userQs = userQs.SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
|
userQs = userQs.SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
|
||||||
SetCooperativeName(inviteUser.CooperativeName)
|
SetCooperativeName(inviteUser.CooperativeName)
|
||||||
|
|
||||||
|
effectiveStoreId := invite.StoreId
|
||||||
|
if isShopAssistantCode { // 如果使用了优惠券,则是店员邀请续费;否则是用户自己发起续费
|
||||||
|
effectiveStoreId = effectiveStoreInfo.StoreID
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Println("用户续费---")
|
fmt.Println("用户续费---")
|
||||||
model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId,
|
model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId,
|
||||||
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre))
|
uint32(effectiveStoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre))
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("用户开通------")
|
fmt.Println("用户开通------")
|
||||||
model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId,
|
model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId,
|
||||||
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre))
|
uint32(effectiveStoreInfo.StoreID), inviteUser.Uid, int(record.MemberLevel), int(record.MemberGenre))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type OpenMemberReq struct {
|
type OpenMemberReq struct {
|
||||||
MemberLevel uint32 `json:"member_level"` // 昵称
|
MemberLevel uint32 `json:"member_level"` // 会员等级
|
||||||
MemberGenre uint32 `json:"member_genre"` // 会员标记: 黄金会员:90天-201 180天-202
|
MemberGenre uint32 `json:"member_genre"` // 会员标记: 黄金会员:90天-201 180天-202
|
||||||
UserCouponId uint32 `json:"user_coupon_id"` // 优惠券id
|
UserCouponId uint32 `json:"user_coupon_id"` // 优惠券id
|
||||||
}
|
}
|
||||||
|
@ -260,7 +260,8 @@ func OpenMember(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.UserCouponId != 0 && req.MemberGenre == 0 { //短期会员不可用优惠券
|
//短期会员不可用优惠券
|
||||||
|
if req.UserCouponId != 0 && req.MemberGenre != model.MemberGenreQuarter && req.MemberGenre != model.MemberGenreHalfYear {
|
||||||
var coupon model.UserCoupon
|
var coupon model.UserCoupon
|
||||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -23,6 +23,8 @@ import (
|
||||||
|
|
||||||
const AppletCodeBaseUrl = "http://switch.deovo.com:8000/img/applet_code/"
|
const AppletCodeBaseUrl = "http://switch.deovo.com:8000/img/applet_code/"
|
||||||
|
|
||||||
|
//const AppletCodeBaseUrl = "http://dev.switch.deovo.com:8000/img/applet_code/"
|
||||||
|
|
||||||
func GetWxAccessToken(appId, secret string) string {
|
func GetWxAccessToken(appId, secret string) string {
|
||||||
//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
|
//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
|
||||||
response := struct {
|
response := struct {
|
||||||
|
@ -134,6 +136,7 @@ func GenDrawShareCode(Did string, appId, secret string, userID ...uint32) (strin
|
||||||
"width": 430,
|
"width": 430,
|
||||||
"auto_color": false,
|
"auto_color": false,
|
||||||
"is_hyaline": false,
|
"is_hyaline": false,
|
||||||
|
//"env_version": "trial", // 跳转版本,默认不传为正式版
|
||||||
}, requests.JSON)
|
}, requests.JSON)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|
|
@ -6,8 +6,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate goqueryset -in analyse.go
|
|
||||||
// gen:qs
|
// gen:qs
|
||||||
|
//
|
||||||
|
//go:generate goqueryset -in analyse.go
|
||||||
type Statistic struct {
|
type Statistic struct {
|
||||||
Model
|
Model
|
||||||
|
|
||||||
|
@ -80,30 +81,30 @@ type UserMemberRecord struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserMemberRecordType(level uint32, memberType uint32) uint32 {
|
func GetUserMemberRecordType(level uint32, memberType uint32) uint32 {
|
||||||
if memberType == 1 {
|
if memberType == 1 { // 开通会员
|
||||||
switch level {
|
switch level {
|
||||||
case 2:
|
case 2: // 黄金
|
||||||
return 1
|
return 1 //开通黄金
|
||||||
case 4:
|
case 4: // 白金
|
||||||
return 2
|
return 2 // 开通白金
|
||||||
case 5:
|
case 5: // 黑金
|
||||||
return 3
|
return 3 // 开通黑金
|
||||||
}
|
}
|
||||||
} else if memberType == 2 {
|
} else if memberType == 2 { // 续费会员
|
||||||
switch level {
|
switch level {
|
||||||
case 2:
|
case 2: // 黄金
|
||||||
return 4
|
return 4 //续费黄金
|
||||||
case 4:
|
case 4: // 白金
|
||||||
return 5
|
return 5 //续费白金
|
||||||
case 5:
|
case 5: // 黑金
|
||||||
return 6
|
return 6 //续费黑金
|
||||||
}
|
}
|
||||||
} else if memberType == 3 {
|
} else if memberType == 3 { // 升级会员
|
||||||
switch level {
|
switch level {
|
||||||
case 4:
|
case 4: // 白金
|
||||||
return 7
|
return 7 // 升级白金
|
||||||
case 5:
|
case 5: // 黑金
|
||||||
return 8
|
return 8 // 升级黑金
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ func GetMemberConfig(level uint32, genre uint32) (*MemberConfig, error) {
|
||||||
if level == 3 {
|
if level == 3 {
|
||||||
level = 2
|
level = 2
|
||||||
}
|
}
|
||||||
if level == 2 && genre != 0 { // 判断是否为黄金短期会员
|
if level == 2 && (genre == 201 || genre == 202) { // 判断是否为黄金短期会员
|
||||||
v, ok := ShortMemberConfigMap[genre]
|
v, ok := ShortMemberConfigMap[genre]
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Error("genre err")
|
logger.Error("genre err")
|
||||||
|
|
|
@ -24,6 +24,7 @@ type UserInviteRecord struct {
|
||||||
|
|
||||||
ToUid uint32 `json:"to_uid"` // 用户ID
|
ToUid uint32 `json:"to_uid"` // 用户ID
|
||||||
FromUid uint32 `json:"from_uid"` // 邀请人ID
|
FromUid uint32 `json:"from_uid"` // 邀请人ID
|
||||||
|
StoreId uint64 `json:"store_id"` // 门店id 邀请用户门店
|
||||||
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
||||||
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
||||||
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金
|
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金
|
||||||
|
|
|
@ -1973,7 +1973,7 @@ func TestNameScanInvite(t *testing.T) {
|
||||||
if inviteErr == RecordNotFound {
|
if inviteErr == RecordNotFound {
|
||||||
memberLevel := user.MemberLevel
|
memberLevel := user.MemberLevel
|
||||||
if memberLevel == 0 {
|
if memberLevel == 0 {
|
||||||
memberLevel = MemberTypeConsumer
|
memberLevel = MemberLevelUser
|
||||||
}
|
}
|
||||||
invite := &UserInvite{
|
invite := &UserInvite{
|
||||||
FromUid: InviteUid,
|
FromUid: InviteUid,
|
||||||
|
@ -2070,7 +2070,7 @@ func TestNewUser(t *testing.T) {
|
||||||
FromUid: InviteUid,
|
FromUid: InviteUid,
|
||||||
UserType: inviteUser.UserType,
|
UserType: inviteUser.UserType,
|
||||||
StoreId: inviteUser.StoreId,
|
StoreId: inviteUser.StoreId,
|
||||||
MemberType: MemberTypeConsumer,
|
MemberType: MemberLevelUser,
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
MemberStatus: 1,
|
MemberStatus: 1,
|
||||||
Action: 1,
|
Action: 1,
|
||||||
|
|
|
@ -43,7 +43,8 @@ func GetStoreList(cardInfos []CardInfo) ([]GameCardStock, error) {
|
||||||
storesCh := make(chan *[]Store, 0)
|
storesCh := make(chan *[]Store, 0)
|
||||||
eg.Go(func() error {
|
eg.Go(func() error {
|
||||||
gameStore := make([]Store, 0)
|
gameStore := make([]Store, 0)
|
||||||
err := NewStoreQuerySet(DB).IsOnlineEq(1).IsMemberServiceEq(1).OrderDescByCreatedAt().All(&gameStore)
|
err := NewStoreQuerySet(DB).IsMemberServiceEq(1).CooperativeBusinessIdEq(1).
|
||||||
|
OrderDescByCreatedAt().All(&gameStore)
|
||||||
if err != nil && err != RecordNotFound {
|
if err != nil && err != RecordNotFound {
|
||||||
logger.Errorf("err:%+v", err)
|
logger.Errorf("err:%+v", err)
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -56,7 +56,7 @@ type SysUserB struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type StoreInfo struct {
|
type StoreInfo struct {
|
||||||
StoreID int `json:"storeId"` //门店id
|
StoreID uint64 `json:"storeId"` //门店id
|
||||||
StoreName string `json:"storeName"` //门店名称
|
StoreName string `json:"storeName"` //门店名称
|
||||||
ExpireTime string `json:"expireTime"` //有效期
|
ExpireTime string `json:"expireTime"` //有效期
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"mh-server/lib/utils"
|
"mh-server/lib/utils"
|
||||||
"mh-server/lib/wxpay"
|
"mh-server/lib/wxpay"
|
||||||
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -86,16 +87,18 @@ func (o *User) TableName() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
MemberTypeConsumer = 1 // 普通用户
|
MemberGenreYear = 200 // 短期会员:黄金年费会员
|
||||||
MemberTypeMember = 2 // 黄金会员
|
MemberGenreQuarter = 201 // 短期会员:黄金季度会员
|
||||||
|
MemberGenreHalfYear = 202 // 短期会员:黄金半年会员
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
MemberLevelConsumer = 1 // 普通用户
|
MemberLevelConsumer = 10 // 普通用户:有开过零售单,留了手机号,但是小程序端未登陆过的,仍然是普通用户
|
||||||
MemberLevelGold = 2 // 黄金会员
|
MemberLevelUser = 1 // 普通会员:仅进入了小程序且授权过手机号的为会员用户,未开通租卡会员的为“普通会员”
|
||||||
MemberLevelPeriod = 3 // 短期会员
|
MemberLevelGold = 2 // 黄金会员
|
||||||
MemberLevelPlatinum = 4 // 白金会员
|
MemberLevelPeriod = 3 // 短期会员
|
||||||
MemberLevelBlackGold = 5 // 黑金会员
|
MemberLevelPlatinum = 4 // 白金会员
|
||||||
|
MemberLevelBlackGold = 5 // 黑金会员
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -125,7 +128,7 @@ type UserInvite struct {
|
||||||
MemberLevel uint32 `json:"member_level"` // 会员等级
|
MemberLevel uint32 `json:"member_level"` // 会员等级
|
||||||
MemberGenre uint32 `json:"member_genre"` // 会员类型
|
MemberGenre uint32 `json:"member_genre"` // 会员类型
|
||||||
UserInviteRecordId uint32 `json:"user_invite_record_id"` // 邀请记录
|
UserInviteRecordId uint32 `json:"user_invite_record_id"` // 邀请记录
|
||||||
FirstInvite uint32 `json:"first_invite"` // 首次
|
FirstInvite uint32 `json:"first_invite"` // 首次邀请标志:1 首次邀请 0 非首次
|
||||||
Scan uint32 `json:"scan"` // 扫码
|
Scan uint32 `json:"scan"` // 扫码
|
||||||
InviteForm uint32 `json:"invite_form"` // 邀请方式: 1-店员邀请码续费
|
InviteForm uint32 `json:"invite_form"` // 邀请方式: 1-店员邀请码续费
|
||||||
RenewHide uint32 `json:"renew_hide"` // 自动续费
|
RenewHide uint32 `json:"renew_hide"` // 自动续费
|
||||||
|
@ -255,6 +258,32 @@ func GetUserByUid(uid uint32) *User {
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserEffectiveStore 获取店员当前的有效门店(邀请客户时使用)
|
||||||
|
func GetUserEffectiveStore(uid uint32) (*StoreInfo, error) {
|
||||||
|
user := new(SysUser)
|
||||||
|
if err := NewSysUserQuerySet(DB).UidEq(uid).One(user); err != nil {
|
||||||
|
logger.Error(err, uid)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(user.StoreList) == 0 {
|
||||||
|
return nil, errors.New("no stores found")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析 StoreList 并找到有效时间最短的门店
|
||||||
|
sort.Slice(user.StoreList, func(i, j int) bool {
|
||||||
|
timeI, _ := time.Parse("2006.01.02", user.StoreList[i].ExpireTime)
|
||||||
|
timeJ, _ := time.Parse("2006.01.02", user.StoreList[j].ExpireTime)
|
||||||
|
|
||||||
|
if timeI.Equal(timeJ) {
|
||||||
|
return user.StoreList[i].StoreID < user.StoreList[j].StoreID
|
||||||
|
}
|
||||||
|
return timeI.Before(timeJ)
|
||||||
|
})
|
||||||
|
|
||||||
|
return &user.StoreList[0], nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetUserRentCard(uid uint32) *UserRentCard {
|
func GetUserRentCard(uid uint32) *UserRentCard {
|
||||||
userRent := new(UserRentCard)
|
userRent := new(UserRentCard)
|
||||||
if err := NewUserRentCardQuerySet(DB).UidEq(uid).One(userRent); err != nil {
|
if err := NewUserRentCardQuerySet(DB).UidEq(uid).One(userRent); err != nil {
|
||||||
|
@ -1200,6 +1229,11 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error {
|
||||||
}
|
}
|
||||||
nowTime := time.Now()
|
nowTime := time.Now()
|
||||||
|
|
||||||
|
effectiveStoreInfo, err := GetUserEffectiveStore(inviteUid)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if inviteUser.UserType == 2 && user.Uid != 0 { // 是店员邀请并且用户id不为空
|
if inviteUser.UserType == 2 && user.Uid != 0 { // 是店员邀请并且用户id不为空
|
||||||
exist, err := QueryRecordExist(
|
exist, err := QueryRecordExist(
|
||||||
fmt.Sprintf("SELECT * FROM user_invite_record WHERE to_uid = %d AND from_uid = %d ",
|
fmt.Sprintf("SELECT * FROM user_invite_record WHERE to_uid = %d AND from_uid = %d ",
|
||||||
|
@ -1212,6 +1246,7 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error {
|
||||||
firstInviteRecord := &UserInviteRecord{
|
firstInviteRecord := &UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: inviteUid,
|
FromUid: inviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 2, // 激活邀请
|
Action: 2, // 激活邀请
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0, // 未开通会员
|
MemberLevel: 0, // 未开通会员
|
||||||
|
@ -1228,6 +1263,7 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error {
|
||||||
inviteRecord := &UserInviteRecord{
|
inviteRecord := &UserInviteRecord{
|
||||||
ToUid: user.Uid,
|
ToUid: user.Uid,
|
||||||
FromUid: inviteUid,
|
FromUid: inviteUid,
|
||||||
|
StoreId: effectiveStoreInfo.StoreID,
|
||||||
Action: 1, // 未激活
|
Action: 1, // 未激活
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
MemberLevel: 0,
|
MemberLevel: 0,
|
||||||
|
@ -1252,22 +1288,22 @@ func StorePromotion(inviteUid, uid uint32, inviteUser, user *User) error {
|
||||||
if inviteErr == RecordNotFound {
|
if inviteErr == RecordNotFound {
|
||||||
memberLevel := user.MemberLevel
|
memberLevel := user.MemberLevel
|
||||||
if memberLevel == 0 {
|
if memberLevel == 0 {
|
||||||
memberLevel = MemberTypeConsumer
|
memberLevel = MemberLevelUser
|
||||||
}
|
}
|
||||||
invite := &UserInvite{
|
invite := &UserInvite{
|
||||||
FromUid: inviteUid, // 邀请人用户id
|
FromUid: inviteUid, // 邀请人用户id
|
||||||
UserType: inviteUser.UserType, // 邀请人用户类型
|
UserType: inviteUser.UserType, // 邀请人用户类型
|
||||||
StoreId: inviteUser.StoreId, // 邀请人门店id
|
StoreId: effectiveStoreInfo.StoreID, // 邀请人门店id
|
||||||
MemberOpenTime: nowTime, // 开通会员时间
|
MemberOpenTime: nowTime, // 开通会员时间
|
||||||
MemberType: memberLevel, // 被邀请用户类型
|
MemberType: memberLevel, // 被邀请用户类型
|
||||||
MemberStatus: 1, // 被邀请用户会员状态 1-未开通
|
MemberStatus: 1, // 被邀请用户会员状态 1-未开通
|
||||||
ToUid: user.Uid, // 被邀请用户id
|
ToUid: user.Uid, // 被邀请用户id
|
||||||
Action: 1, // 未激活
|
Action: 1, // 未激活
|
||||||
SpendType: 1, // 未开通
|
SpendType: 1, // 未开通
|
||||||
UserInviteRecordId: inviteRecord.ID, // 邀请记录id
|
UserInviteRecordId: inviteRecord.ID, // 邀请记录id
|
||||||
FirstInvite: 0, // TODO 首次邀请id
|
FirstInvite: 0, // TODO 首次邀请id
|
||||||
Scan: 1, // 扫码次数
|
Scan: 1, // 扫码次数
|
||||||
InviteForm: 1, // 1-店员邀请码续费
|
InviteForm: 1, // 1-店员邀请码续费
|
||||||
}
|
}
|
||||||
fmt.Println("创建邀请:", invite)
|
fmt.Println("创建邀请:", invite)
|
||||||
if err := invite.Create(DB); err != nil {
|
if err := invite.Create(DB); err != nil {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user