add
This commit is contained in:
@@ -1,9 +1,8 @@
|
|||||||
package financial
|
package financial
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
_ "fmt"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"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"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"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"
|
||||||
@@ -169,42 +168,8 @@ func SettleUnionOrders(ctx *jxcontext.Context, vendorIDs []int) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bool) (errCode string, err error) {
|
func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bool) (errCode string, err error) {
|
||||||
var (
|
var db = dao.GetDB()
|
||||||
db = dao.GetDB()
|
userMembers, err := dao.GetUserMember(db, userID, model.MemberTypeNormal)
|
||||||
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)
|
txDB, _ := dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
@@ -212,7 +177,7 @@ func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree
|
|||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
//证明已经开了会员了,相当于续费
|
//当前状态是否是会员 续费/开通
|
||||||
if len(userMembers) > 0 {
|
if len(userMembers) > 0 {
|
||||||
userMember := userMembers[0]
|
userMember := userMembers[0]
|
||||||
if memberID == model.MemberCardTypeMonth {
|
if memberID == model.MemberCardTypeMonth {
|
||||||
@@ -226,7 +191,7 @@ func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
userMember2 := &model.UserMember{
|
userMember2 := &model.UserMember{
|
||||||
UserID: userIDReal,
|
UserID: userID,
|
||||||
MemberType: model.MemberTypeNormal,
|
MemberType: model.MemberTypeNormal,
|
||||||
MemberTypeID: memberID,
|
MemberTypeID: memberID,
|
||||||
}
|
}
|
||||||
@@ -241,14 +206,6 @@ func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !isFree {
|
|
||||||
|
|
||||||
//支出明细
|
|
||||||
if err = AddExpendUpdateAccount(txDB, userBill, model.BillTypeMember, memberCard.ActPrice, 0); err != nil {
|
|
||||||
dao.Rollback(db, txDB)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dao.Commit(db, txDB)
|
dao.Commit(db, txDB)
|
||||||
return errCode, err
|
return errCode, err
|
||||||
}
|
}
|
||||||
|
|||||||
15
business/jxstore/financial/bill_test.go
Normal file
15
business/jxstore/financial/bill_test.go
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package financial
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestOnWXPayFinished(t *testing.T) {
|
||||||
|
var (
|
||||||
|
ctx *jxcontext.Context
|
||||||
|
)
|
||||||
|
if _, err := WXInvestMember(ctx, 1, "1303D7B2096011ED9A4C525400C36BDA", true); err != nil {
|
||||||
|
t.Logf("微信购买会员失败")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -116,12 +116,6 @@ func OnWXPayFinished(order *model.Order) (err error) {
|
|||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
//如果用户没有对应账单信息就给他生成一条
|
|
||||||
userBill, err := dao.GetUserBill(db, order.UserID, "")
|
|
||||||
if userBill == nil {
|
|
||||||
globals.SugarLogger.Debugf("OnPayFinished 未找到该用户的账单 order: %v", utils.Format4Output(order, false))
|
|
||||||
return fmt.Errorf("未找到该用户的账单!%v", order.UserID)
|
|
||||||
}
|
|
||||||
//获取用户会员信息
|
//获取用户会员信息
|
||||||
userMember, err := dao.GetUserMember(db, order.UserID, model.UserStatusNormal)
|
userMember, err := dao.GetUserMember(db, order.UserID, model.UserStatusNormal)
|
||||||
//根据订单类型来操作账户
|
//根据订单类型来操作账户
|
||||||
@@ -132,7 +126,7 @@ func OnWXPayFinished(order *model.Order) (err error) {
|
|||||||
dao.Rollback(db, txDB)
|
dao.Rollback(db, txDB)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
|
globals.SugarLogger.Debugf("OnWXPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
|
||||||
return fmt.Errorf("暂不支持此订单类型!")
|
return fmt.Errorf("暂不支持此订单类型!")
|
||||||
}
|
}
|
||||||
dao.Commit(db, txDB)
|
dao.Commit(db, txDB)
|
||||||
|
|||||||
Reference in New Issue
Block a user