107 lines
3.1 KiB
Go
107 lines
3.1 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
|
|
|
|
WxPayParam *WxPayParam `json:"wxPayParam"`
|
|
}
|
|
|
|
type WxPayParam struct {
|
|
Prepayid string `json:"prepayid"`
|
|
Noncestr string `json:"noncestr"`
|
|
Timestamp string `json:"timestamp"`
|
|
Package string `json:"package"`
|
|
Partnerid string `json:"partnerid"`
|
|
Appid string `json:"appid"`
|
|
Sign string `json:"sign"`
|
|
}
|
|
|
|
type PayHandlerInterface interface {
|
|
CreatePay() (err error)
|
|
CreateRefund() (err error)
|
|
}
|
|
|
|
func OnPayFinished(order *model.Order) (err error) {
|
|
var (
|
|
db = dao.GetDB()
|
|
)
|
|
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.OrderTypePay:
|
|
//如果是账户充值(发布任务等)
|
|
//账户收入
|
|
if err = AddIncomeUpdateAccount(db, userBill, model.BillTypeInvest, order.PayPrice); 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
|
|
}
|
|
|
|
func OnCashFinished(order *model.Order) (err error) {
|
|
var (
|
|
db = dao.GetDB()
|
|
)
|
|
globals.SugarLogger.Debugf("OnCashFinished 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("OnCashFinished 未找到该用户的账单 order: %v", utils.Format4Output(order, false))
|
|
return fmt.Errorf("未找到该用户的账单!%v", order.UserID)
|
|
}
|
|
//根据订单类型来操作账户
|
|
switch order.Type {
|
|
case model.OrderTypeCash:
|
|
//如果是账户提现
|
|
//账户支出
|
|
if err = AddExpendUpdateAccount(db, userBill, model.BillTypeCash, order.PayPrice); 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("OnCashFinished end modify account ...")
|
|
return err
|
|
}
|