add
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user