feat: deposit退款

master
howell 3 years ago
parent 168cac9edb
commit 4242a73434

@ -369,9 +369,17 @@ func payDeposit(tx *gorm.DB, orderInfo order.Information, wallet *jyy.UserWallet
if r := tx.Model(wallet).Where("version = ?", wallet.Version).Updates(map[string]interface{}{
"deposit": gorm.Expr("deposit - ?", orderInfo.ActualTotalAmount),
"version": gorm.Expr("version + 1"),
}).RowsAffected; r == 00 {
}).RowsAffected; r == 0 {
return errors.New("账户扣款失败")
}
if e := tx.Create(&jyy.UserWalletRecord{
WalletID: wallet.ID,
UserID: int(orderInfo.UserID),
Amount: orderInfo.ActualTotalAmount.Neg(),
Current: wallet.Deposit,
Kind: 1,
}).Error; e != nil {
return e
}
if err := public.PaySuccessCallback(tx, orderInfo, formatime.NewSecondNow()); err != nil {

@ -467,6 +467,11 @@ type UpdateOrderCheckStatusReq struct {
func refundWithType(tx *gorm.DB, asGoods after.RecookAfterSalesGoodsModel) error {
switch asGoods.PayMethod {
case manage.Deposit:
// 预存款支付退款
if err := recook.RefundDeposit(tx, &asGoods); err != nil {
return err
}
case manage.RecookOrderInfoPayMethodRecookPay:
if err := recook.Refund(tx, &asGoods); err != nil {
return err

@ -2,11 +2,13 @@ package recook
import (
"errors"
"github.com/jinzhu/gorm"
"github.com/shopspring/decimal"
"recook/internal/v2/logic/pay"
"recook/internal/v2/model/jyy"
"recook/internal/v2/model/recook/after"
user2 "recook/internal/v2/model/recook/user"
"github.com/jinzhu/gorm"
"github.com/shopspring/decimal"
)
func Refund(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error {
@ -39,3 +41,29 @@ func Refund(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error {
return pay.SyncRefundSuccessCallback(tx, asGoods)
}
func RefundDeposit(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error {
var wallet jyy.UserWallet
tx.First(&wallet, "user_id = ?", asGoods.UserId)
if asGoods.RefundAmount.GreaterThan(decimal.NewFromFloat(0.0)) {
if err := tx.Model(&wallet).Updates(map[string]interface{}{
"balance": wallet.Deposit.Add(asGoods.RefundAmount),
"version": wallet.Version + 1,
}).Error; err != nil {
return err
}
if err := tx.Create(&jyy.UserWalletRecord{
WalletID: wallet.ID,
UserID: int(asGoods.UserId),
Amount: asGoods.RefundAmount,
Current: wallet.Deposit,
Kind: 2,
}).Error; err != nil {
return err
}
}
return pay.SyncRefundSuccessCallback(tx, asGoods)
}

@ -27,6 +27,7 @@ const (
RecookOrderInfoPayMethodWechatH5Pay = 6 // 微信h5支付
RecookOrderInfoPayMethodWechatH5Inner = 7 // 微信公众号内支付
RecookOrderInfoPayMethodUnionPay = 8 // 银联支付
Deposit = 10
RecookOrderInfoStatusNone = 0 // 未付款
RecookOrderInfoStatusSuc = 1 // 支付成功

Loading…
Cancel
Save