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, model.BillTypeInvest, 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 } func OnCashFinished(order *model.Order) (err error) { var ( db = dao.GetDB() billID int64 ) 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.OrderTypeAccount: //如果是账户提现 //1、账户支出明细增加一条 if err = AddBillExpend(db, billID, model.BillTypeCash, 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("OnCashFinished end modify account ...") return err }