Merge branch 'rsm' of e.coding.net:rosydev/jx-callback into rsm
This commit is contained in:
@@ -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("未找到会员卡配置!")
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
14
business/jxstore/financial/bill_test.go
Normal file
14
business/jxstore/financial/bill_test.go
Normal 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("微信购买会员失败")
|
||||
//}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"` // 支付金额
|
||||
|
||||
Reference in New Issue
Block a user