邀请4人得会员

This commit is contained in:
苏尹岚
2020-11-24 08:42:25 +08:00
parent 6d54e23321
commit ec97835313
7 changed files with 76 additions and 22 deletions

View File

@@ -71,7 +71,7 @@ func TransferLegacyWeixins(mobile string) (err error) {
if user.Name == "" {
user.Name = user.GetMobile()
}
userList, _, err2 := dao.GetUsers(db, 0, "", nil, nil, []string{v.Tel}, 0, -1)
userList, _, err2 := dao.GetUsers(db, 0, "", "", nil, nil, []string{v.Tel}, 0, -1)
if err = err2; err != nil {
return err
}

View File

@@ -180,7 +180,7 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) {
errList := errlist.New()
userIDs, err2 := api2.RoleMan.GetRoleUserList(autils.NewRole(key, 0))
if err = err2; err == nil && len(userIDs) > 0 {
userList, totalCount, err2 := dao.GetUsers(dao.GetDB(), 0, "", userIDs, nil, nil, 0, -1)
userList, totalCount, err2 := dao.GetUsers(dao.GetDB(), 0, "", "", userIDs, nil, nil, 0, -1)
if err = err2; err == nil && totalCount > 0 {
// todo
// err = fmt.Errorf("还有人员在使用角色:%s人员信息:%s", key, utils.MustMarshal(utils.Struct2Map(userList, "compact")))

View File

@@ -6,6 +6,8 @@ import (
"sync"
"time"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"git.rosy.net.cn/jx-callback/business/jxstore/financial"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
@@ -273,7 +275,7 @@ func OnDingDingMsg(msg map[string]interface{}) (callbackResponse *dingdingapi.Ca
}
func GetUsers(ctx *jxcontext.Context, userType int, keyword string, userIDs []string, userID2, mobile string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
userList, totalCount, err := dao.GetUsers(dao.GetDB(), userType, keyword, userIDs, jxutils.BatchString2Slice(userID2), jxutils.BatchString2Slice(mobile), offset, pageSize)
userList, totalCount, err := dao.GetUsers(dao.GetDB(), userType, keyword, "", userIDs, jxutils.BatchString2Slice(userID2), jxutils.BatchString2Slice(mobile), offset, pageSize)
if err == nil {
pagedInfo = &model.PagedInfo{
TotalCount: totalCount,
@@ -288,7 +290,7 @@ func GetUser(ctx *jxcontext.Context, userID string) (user *model.GetUserResult,
}
func checkUserType(userID string, userType int8) (err error) {
userList, _, err := dao.GetUsers(dao.GetDB(), 0, "", []string{userID}, nil, nil, 0, 0)
userList, _, err := dao.GetUsers(dao.GetDB(), 0, "", "", []string{userID}, nil, nil, 0, 0)
if err != nil {
return err
}
@@ -525,15 +527,21 @@ func RefreshUserMemberStatus(ctx *jxcontext.Context) (err error) {
return err
}
func InvestMember(ctx *jxcontext.Context, memberID int) (errCode string, err error) {
func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bool) (errCode string, err error) {
var (
db = dao.GetDB()
memberCards []*model.MemberCard
memberCard *model.MemberCard
userIDReal string
)
userMembers, err := dao.GetUserMember(db, ctx.GetUserID(), model.MemberTypeNormal)
if !isFree {
userIDReal = ctx.GetUserID()
} else {
userIDReal = userID
}
userMembers, err := dao.GetUserMember(db, userIDReal, model.MemberTypeNormal)
configList, err := dao.QueryConfigs(db, model.ConfigTypeName[model.ConfigTypeMemberCard], model.ConfigTypeMemberCard, "")
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
userBill, err := dao.GetUserBill(db, userIDReal, "")
if len(configList) <= 0 {
return "", fmt.Errorf("未找到会员卡配置!")
}
@@ -547,12 +555,14 @@ func InvestMember(ctx *jxcontext.Context, memberID int) (errCode string, err err
memberCard = v
}
}
//验证微信绑定
if err = auth2.CheckWeixinminiAuthBind(ctx.GetUserID()); err != nil {
return "", err
}
if userBill.AccountBalance < memberCard.Price {
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
if !isFree {
//验证微信绑定
if err = auth2.CheckWeixinminiAuthBind(userIDReal); err != nil {
return "", err
}
if userBill.AccountBalance < memberCard.Price {
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
}
}
dao.Begin(db)
defer func() {
@@ -575,7 +585,7 @@ func InvestMember(ctx *jxcontext.Context, memberID int) (errCode string, err err
}
} else {
userMember2 := &model.UserMember{
UserID: ctx.GetUserID(),
UserID: userIDReal,
MemberType: model.MemberTypeNormal,
MemberTypeID: memberID,
}
@@ -590,10 +600,12 @@ func InvestMember(ctx *jxcontext.Context, memberID int) (errCode string, err err
return
}
}
//支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeMember, memberCard.Price); err != nil {
dao.Rollback(db)
return
if !isFree {
//支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeMember, memberCard.Price); err != nil {
dao.Rollback(db)
return
}
}
dao.Commit(db)
return errCode, err
@@ -650,5 +662,36 @@ func UpdateUser(ctx *jxcontext.Context, payload map[string]interface{}) (err err
}
dao.Commit(db)
}
if payload["popUser"] != "" {
user2, err2 := dao.GetUserByID(db, "user_id", payload["popUser"].(string))
err = err2
if user2 != nil {
user2.PopCount++
//邀请过4人直接开通一个月会员并创建群组
if user2.PopCount >= 4 && user2.PopFlag == model.NO {
_, err = InvestMember(ctx, 1, user2.UserID, true)
//如果他已经有群了,被邀请人直接进群
//如果他没群,自动创一个群,所有被邀请人打上标志
messageGroupsResult, err3 := dao.GetMessageGroups(db, user2.UserID, 0, model.GroupTypeMulit, false, "")
err = err3
if len(messageGroupsResult) > 0 {
err = event.AddMessageGroup(ctx, messageGroupsResult[0].GroupID, user.UserID)
} else {
_, err = event.CreateMessageGroup(ctx, user2.UserID, "", "", 5, 100)
user.PopedFlag = model.YES
}
user2.PopFlag = model.YES
dao.UpdateEntity(db, user2, "PopFlag")
if users, _, err := dao.GetUsers(db, 0, "", user2.UserID, nil, nil, nil, 0, 999); err == nil {
for _, v := range users {
v.PopedFlag = model.YES
dao.UpdateEntity(db, v, "PopedFlag")
}
}
} else {
dao.UpdateEntity(db, user2, "PopCount")
}
}
}
return err
}