62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package cms
|
|
|
|
import (
|
|
"git.rosy.net.cn/jx-callback/business/jxstore/financial"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
)
|
|
|
|
func CreateOrder(ctx *jxcontext.Context, price, orderType int) (order *model.Order, err error) {
|
|
var (
|
|
db = dao.GetDB()
|
|
)
|
|
order = &model.Order{
|
|
OrderID: jxutils.GenOrderNo(),
|
|
UserID: ctx.GetUserID(),
|
|
Type: orderType,
|
|
Status: model.OrderStatusWait4Pay,
|
|
PayPrice: price,
|
|
}
|
|
dao.WrapAddIDCULEntity(order, ctx.GetUserName())
|
|
dao.Begin(db)
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
dao.Rollback(db)
|
|
panic(r)
|
|
}
|
|
}()
|
|
if err = dao.CreateEntity(db, order); err != nil {
|
|
dao.Rollback(db)
|
|
}
|
|
dao.Commit(db)
|
|
return order, err
|
|
}
|
|
|
|
func Pay(ctx *jxcontext.Context, orderID, payType int, vendorPayType string) (err error) {
|
|
var (
|
|
db = dao.GetDB()
|
|
order = &model.Order{
|
|
OrderID: int64(orderID),
|
|
}
|
|
payHandler = &financial.PayHandler{
|
|
PayType: payType,
|
|
Ctx: ctx,
|
|
VendorPayType: vendorPayType,
|
|
}
|
|
)
|
|
err = dao.GetEntity(db, order, "OrderID")
|
|
payHandler.Order = order
|
|
//如果用户没有对应账单信息就给他生成一条
|
|
userBill, err := dao.GetUserBill(db, order.UserID, "")
|
|
if userBill == nil {
|
|
err = financial.AddUserBill(db, jxutils.GenBillID(), order.UserID)
|
|
}
|
|
err = payHandler.CreatePay()
|
|
return err
|
|
}
|