Merge branch 'rsm' of e.coding.net:rosydev/jx-callback into rsm

This commit is contained in:
邹宗楠
2022-07-22 18:21:00 +08:00
6 changed files with 117 additions and 30 deletions

View File

@@ -541,6 +541,7 @@ func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bo
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("未找到会员卡配置!")
}

View File

@@ -1,11 +1,13 @@
package financial
import (
_ "fmt"
"git.rosy.net.cn/baseapi/utils"
"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"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-print/globals"
"github.com/astaxie/beego/client/orm"
"time"
)
@@ -165,3 +167,43 @@ func SettleUnionOrders(ctx *jxcontext.Context, vendorIDs []int) (err error) {
dao.Commit(db, txDB)
return err
}
func WXInvestMember(ctx *jxcontext.Context, memberID int, userID string) (errCode string, err error) {
var db = dao.GetDB()
//获取用户 当前会员信息
userMembers, err := dao.GetUserMember(db, userID, model.MemberTypeNormal)
if err != nil {
return "获取用户会员信息失败", err
}
//当前状态是否是会员 续费/开通
var cnt = 0
if len(userMembers) > 0 {
userMember := userMembers[0]
if memberID == model.OrderTypeMember {
userMember.EndAt = userMember.EndAt.AddDate(0, 1, 0)
cnt++
} else {
userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0)
}
if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil {
return "更新会员到期时间失败", err
}
} else {
userMember2 := &model.UserMember{
UserID: userID,
MemberType: model.MemberTypeNormal,
MemberTypeID: memberID,
}
if memberID == model.OrderTypeMember {
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 {
return "开通会员失败", err
}
}
globals.SugarLogger.Debugf("==================== %d", cnt)
return errCode, err
}

View File

@@ -0,0 +1,14 @@
package financial
import (
"testing"
)
func TestOnWXPayFinished(t *testing.T) {
//var (
// ctx *jxcontext.Context
//)
//if _, err := WXInvestMember(ctx, 1, "1303D7B2096011ED9A4C525400C36BDA", true); err != nil {
// t.Logf("微信购买会员失败")
//}
}

View File

@@ -245,6 +245,7 @@ func OnTLPayCallback(call *tonglianpayapi.CallBackResult) (err error) {
}
func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) {
var count = 0
order := &model.Order{
OrderID: call.CusorderID,
}
@@ -268,39 +269,49 @@ func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) {
payStatus = model.OrderStatusFailPay
}
txdb, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
panic(r)
//充值会员 增加微信支付处理业务
if (order.OrderType == 2 || order.OrderType == 5) && call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
if err := OnWXPayFinished(order); err != nil {
return err
}
}()
if _, err := dao.UpdateEntityTx(txdb, order); err != nil {
dao.Rollback(db, txdb)
count++
return err
}
userOrder := model.UserVendorOrder{LocalWayBill: order.OrderID}
if err := dao.GetEntity(db, &userOrder, `LocalWayBill`); err != nil {
dao.Rollback(db, txdb)
return err
}
userOrder.OrderStatus = payStatus
if _, err := dao.UpdateEntityTx(txdb, &userOrder, "OrderStatus"); err != nil {
dao.Rollback(db, txdb)
return err
}
dao.Commit(db, txdb)
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
switch order.OrderType {
case model.PayType4Express:
err = q_bida.CreateOrder2QBiDa(&userOrder)
case model.PayType4Member, model.PayType4Recharge:
err = OnPayFinished(order)
} else if order.OrderType == 3 {
txdb, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
panic(r)
}
}()
if _, err := dao.UpdateEntityTx(txdb, order); err != nil {
dao.Rollback(db, txdb)
return err
}
userOrder := model.UserVendorOrder{LocalWayBill: order.OrderID}
if err := dao.GetEntity(db, &userOrder, `LocalWayBill`); err != nil {
dao.Rollback(db, txdb)
return err
}
userOrder.OrderStatus = payStatus
if _, err := dao.UpdateEntityTx(txdb, &userOrder, "OrderStatus"); err != nil {
dao.Rollback(db, txdb)
return err
}
dao.Commit(db, txdb)
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
switch order.OrderType {
case model.PayType4Express:
err = q_bida.CreateOrder2QBiDa(&userOrder)
case model.PayType4Member, model.PayType4Recharge:
err = OnPayFinished(order)
}
}
return err
}
} else {
globals.SugarLogger.Debugf("onTLpayFinished msg:%s, err:%v", utils.Format4Output(call, true), err)
}
globals.SugarLogger.Debugf("=============aaaaaaaaa========== %d", count)
return err
}

View File

@@ -2,7 +2,6 @@ package financial
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
@@ -102,3 +101,22 @@ func OnCashFinished(order *model.Order) (err error) {
globals.SugarLogger.Debugf("OnCashFinished end modify account ...")
return err
}
//微信支付充值会员
func OnWXPayFinished(order *model.Order) (err error) {
var (
ctx *jxcontext.Context
)
globals.SugarLogger.Debugf("OnWXPayFinished begin modify account order: %v", utils.Format4Output(order, false))
//根据订单类型来操作账户
if order.Type == model.OrderTypePay {
if _, err = WXInvestMember(ctx, order.OrderType, order.UserID); err != nil {
return err
}
} else {
globals.SugarLogger.Debugf("OnWXPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
return fmt.Errorf("暂不支持此订单类型!")
}
globals.SugarLogger.Debugf("OnWXPayFinished end modify account ...")
return err
}

View File

@@ -30,9 +30,10 @@ const (
OrderTypeCash = 2 //提现
OrderTypePublishJob = 1 //发布任务
OrderTpyeMember = 2 //充值会员
OrderTypeMember = 2 //充值会员月卡
OrderTypeMemberYear = 5 //充值会员年卡
OrderTypeDelivery = 3 //发快递
OrderTpyeDropShipping = 4 //一件代发交钱
OrderTypeDropShipping = 4 //一件代发交钱
)
var (
@@ -58,7 +59,7 @@ type Order struct {
OrderID string `orm:"column(order_id)" json:"orderID"` // 订单号
UserID string `orm:"column(user_id);size(48)" json:"userID"` // 用户ID
Type int `json:"type"` // 支付还是提现 1-支付2-提现
OrderType int `json:"orderType"` // 订单类型1-发任务2-会员3-发快递4-提现
OrderType int `json:"orderType"` // 订单类型1-发任务2-会员月卡3-发快递4-提现5-会员年卡
Way string `json:"way"` // weixinapp ,weixinmini
Status int `json:"status"` // 订单状态,待支付2已支付5支付成功110支付失败115,150取消
PayPrice int `json:"payPrice"` // 支付金额