66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package financial
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
|
|
"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"
|
|
)
|
|
|
|
type PayHandler struct {
|
|
PayType int `json:"-"` //支付方式
|
|
Ctx *jxcontext.Context
|
|
Order *model.Order
|
|
VendorPayType string
|
|
}
|
|
|
|
type PayHandlerInterface interface {
|
|
CreatePay() (err error)
|
|
CreateRefund() (err error)
|
|
}
|
|
|
|
func OnPayFinished(order *model.Order) (err error) {
|
|
var (
|
|
db = dao.GetDB()
|
|
billID int64
|
|
)
|
|
globals.SugarLogger.Debugf("OnPayFinished begin modify account order: %v", utils.Format4Output(order, false))
|
|
dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
dao.Rollback(db)
|
|
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)
|
|
}
|
|
//根据订单类型来操作账户
|
|
switch order.Type {
|
|
case model.OrderTypeAccount:
|
|
//如果是账户充值(发布任务等)
|
|
//1、账户收入表增加一条保证金记录
|
|
if err = AddBillIncome(db, billID, order.Type, order.PayPrice); err != nil {
|
|
dao.Rollback(db)
|
|
}
|
|
//2、账户表账户余额增加相应值
|
|
userBill.AccountBalance += order.PayPrice
|
|
if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil {
|
|
dao.Rollback(db)
|
|
}
|
|
default:
|
|
globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
|
|
return fmt.Errorf("暂不支持此订单类型!")
|
|
}
|
|
dao.Commit(db)
|
|
globals.SugarLogger.Debugf("OnPayFinished end modify account ...")
|
|
return err
|
|
}
|