You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
package recook
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/jinzhu/gorm"
|
|
"github.com/shopspring/decimal"
|
|
"recook/internal/v2/logic/pay"
|
|
"recook/internal/v2/model/recook/after"
|
|
user2 "recook/internal/v2/model/recook/user"
|
|
)
|
|
|
|
func Refund(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error {
|
|
var wallet user2.RecookUserWalletModel
|
|
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.Balance.Add(asGoods.RefundAmount),
|
|
}).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{
|
|
UserId: wallet.UserId,
|
|
IncomeType: user2.RecookUserWalletBalanceListIncomeTypeRefund, // 订单退款
|
|
Amount: asGoods.RefundAmount,
|
|
Title: asGoods.GoodsName,
|
|
Comment: "商品退款-退回",
|
|
OrderId: asGoods.OrderId,
|
|
OrderGoodsId: asGoods.OrderGoodsId,
|
|
OrderTime: asGoods.OrderTime,
|
|
}
|
|
recookUserWalletBalanceListModel.SetDb(tx)
|
|
recookUserWalletBalanceListModel.Create(recookUserWalletBalanceListModel)
|
|
if recookUserWalletBalanceListModel.Id == 0 {
|
|
return errors.New("系统异常")
|
|
}
|
|
}
|
|
|
|
return pay.SyncRefundSuccessCallback(tx, asGoods)
|
|
}
|