From 92dffeba1d8f46322303a870568368bd7f7ec036 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 22 Jul 2022 11:46:41 +0800 Subject: [PATCH] add --- business/jxstore/financial/bill.go | 87 ++++++++++++++++++++++++++++++ business/jxstore/financial/pay.go | 3 +- 2 files changed, 88 insertions(+), 2 deletions(-) diff --git a/business/jxstore/financial/bill.go b/business/jxstore/financial/bill.go index e5ef71dad..17b479047 100644 --- a/business/jxstore/financial/bill.go +++ b/business/jxstore/financial/bill.go @@ -1,7 +1,9 @@ package financial import ( + "fmt" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -165,3 +167,88 @@ func SettleUnionOrders(ctx *jxcontext.Context, vendorIDs []int) (err error) { dao.Commit(db, txDB) return err } + +func WXInvestMember(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 + ) + 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, userIDReal, "") + if len(configList) <= 0 { + return "", fmt.Errorf("未找到会员卡配置!") + } + config := configList[0] + err = jxutils.Strings2Objs(config.Value, &memberCards) + if err != nil { + return "", err + } + for _, v := range memberCards { + if v.ID == memberID { + memberCard = v + } + } + if !isFree { + //验证微信绑定 + if err = auth2.CheckWeixinminiAuthBind(userIDReal); err != nil { + return "", err + } + if userBill.AccountBalance < memberCard.ActPrice { + return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") + } + } + txDB, _ := dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db, txDB) + panic(r) + } + }() + //证明已经开了会员了,相当于续费 + if len(userMembers) > 0 { + userMember := userMembers[0] + if memberID == model.MemberCardTypeMonth { + userMember.EndAt = userMember.EndAt.AddDate(0, 1, 0) + } else { + userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0) + } + if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil { + dao.Rollback(db, txDB) + return + } + } else { + userMember2 := &model.UserMember{ + UserID: userIDReal, + MemberType: model.MemberTypeNormal, + MemberTypeID: memberID, + } + if memberID == model.MemberCardTypeMonth { + userMember2.EndAt = time.Now().AddDate(0, 1, 0) + } else { + userMember2.EndAt = time.Now().AddDate(1, 0, 0) + } + dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName()) + if err = dao.CreateEntity(db, userMember2); err != nil { + dao.Rollback(db, txDB) + return + } + } + if !isFree { + + //支出明细 + if err = AddExpendUpdateAccount(txDB, userBill, model.BillTypeMember, memberCard.ActPrice, 0); err != nil { + dao.Rollback(db, txDB) + return + } + } + dao.Commit(db, txDB) + return errCode, err +} diff --git a/business/jxstore/financial/pay.go b/business/jxstore/financial/pay.go index 1584983aa..a463d936c 100644 --- a/business/jxstore/financial/pay.go +++ b/business/jxstore/financial/pay.go @@ -5,7 +5,6 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -129,7 +128,7 @@ func OnWXPayFinished(order *model.Order) (err error) { switch order.Type { case model.OrderTpyeMember: //微信支付充值会员 - if _, err = cms.InvestMember(ctx, userMember[0].MemberType, order.UserID, true); err != nil { + if _, err = WXInvestMember(ctx, userMember[0].MemberType, order.UserID, true); err != nil { dao.Rollback(db, txDB) } default: