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, 0); 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, 0); 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 }