Files
jx-callback/business/q_bida/withdrawal_record_utils.go
邹宗楠 7ddb256847 1
2022-07-12 17:41:22 +08:00

68 lines
2.0 KiB
Go

package q_bida
import (
"git.rosy.net.cn/baseapi/platformapi/alipayapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
)
// SendPayInfo2Ali 发起支付
func SendPayInfo2Ali(payOrder *model.WithdrawalRecord, param *model.AddWithdrawalRecordReq) (*model.WithdrawalRecord, error) {
if payOrder.WithdrawalMoney <= alipayapi.MinWithdrawalMoney {
aliResult, err := api.AliPayAPI.Withdrawal4AliPay(&alipayapi.WithdrawalParam{
OutBizNo: payOrder.OrderID,
TransAmount: utils.Int2Float64(payOrder.PayMoney) / 100,
OrderTitle: "京西生活提现成功",
PayeeInfo: &alipayapi.PayeeInfoParam{
Identity: param.AlipayAccount,
Name: param.AlipayName,
},
Remark: payOrder.Remark,
})
if err != nil || aliResult.Status != "SUCCESS" {
payOrder.OrderStatus = model.WithdrawalRecordPayFail // 支付失败
payOrder.Remark = "err:=" + err.Error()
} else {
payOrder.OrderStatus = model.WithdrawalRecordPaySuccess // 支付成功
payOrder.AlipayOrderId = aliResult.OrderId
payOrder.PayTime = utils.Str2Time(aliResult.TransDate)
}
}
return payOrder, nil
}
// UpdateUserMoney 修改数据库
func UpdateUserMoney(payOrder *model.WithdrawalRecord, userBill *model.UserBill) error {
// 如果支付成功
db := dao.GetDB()
tx, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
panic(r)
}
dao.Commit(db, tx)
}()
switch payOrder.OrderStatus {
case model.WithdrawalRecordPaySuccess:
userBill.AccountBalance = userBill.AccountBalance - payOrder.WithdrawalMoney
if _, err := dao.UpdateEntityTx(tx, userBill, "AccountBalance"); err != nil {
dao.Rollback(db, tx)
return err
}
if err := dao.CreateEntityTx(tx, payOrder); err != nil {
dao.Rollback(db, tx)
return err
}
case model.WithdrawalWaitRecord, model.WithdrawalRecordFail, model.WithdrawalRecordPayFail:
if err := dao.CreateEntityTx(tx, payOrder); err != nil {
dao.Rollback(db, tx)
return err
}
}
return nil
}