|
|
|
@ -3,6 +3,7 @@ package wallet
|
|
|
|
|
import (
|
|
|
|
|
"recook/internal/back"
|
|
|
|
|
"recook/internal/dbc"
|
|
|
|
|
"recook/internal/model/order"
|
|
|
|
|
"recook/internal/model/user"
|
|
|
|
|
"recook/internal/service/comFunc"
|
|
|
|
|
user2 "recook/internal/v2/model/recook/user"
|
|
|
|
@ -89,22 +90,44 @@ func SubmitWithdraw(c *gin.Context) {
|
|
|
|
|
} else {
|
|
|
|
|
t = user.BankType
|
|
|
|
|
}
|
|
|
|
|
if userInfo.IsEnterprise {
|
|
|
|
|
back.Fail(c, "企业用户无法提现")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
tx := dbc.DB.Begin()
|
|
|
|
|
amount := decimal.NewFromFloat(p.Amount)
|
|
|
|
|
fee := amount.Div(decimal.NewFromFloat(1.13)).Mul(decimal.NewFromFloat(0.13)).Mul(decimal.NewFromFloat(1.12))
|
|
|
|
|
err := tx.Create(&user.Withdraw{
|
|
|
|
|
|
|
|
|
|
var record []order.Profit
|
|
|
|
|
tx.Where("user_id = ?", p.UserID).Where("deal = 0").Where("status = 2").Find(&record)
|
|
|
|
|
|
|
|
|
|
// 普通用户
|
|
|
|
|
rate := decimal.NewFromFloat(0.13)
|
|
|
|
|
balance := decimal.Zero
|
|
|
|
|
fee := decimal.Zero
|
|
|
|
|
for _, v := range record {
|
|
|
|
|
balance = balance.Add(v.Income)
|
|
|
|
|
fee = fee.Add(v.Income.Mul(rate).Round(2))
|
|
|
|
|
}
|
|
|
|
|
if balance.IsZero() {
|
|
|
|
|
back.Fail(c, "余额不足")
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
amount, _ := balance.Float64()
|
|
|
|
|
withdrawl := &user.Withdraw{
|
|
|
|
|
UserId: p.UserID,
|
|
|
|
|
UserName: userInfo.RealName,
|
|
|
|
|
Type: t,
|
|
|
|
|
Amount: p.Amount,
|
|
|
|
|
Amount: amount,
|
|
|
|
|
Alipay: p.Alipay,
|
|
|
|
|
BankAccount: p.BankAccount,
|
|
|
|
|
BankName: p.BankName,
|
|
|
|
|
AuditTime: formatime.NewSecondFrom(getNextTenOrTwentyFive()),
|
|
|
|
|
Status: user.UndoneWithdrawStatus,
|
|
|
|
|
TaxFee: fee,
|
|
|
|
|
ActualAmount: amount.Sub(fee),
|
|
|
|
|
}).Error
|
|
|
|
|
ActualAmount: balance.Sub(fee),
|
|
|
|
|
}
|
|
|
|
|
err := tx.Create(withdrawl).Error
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
@ -115,7 +138,7 @@ func SubmitWithdraw(c *gin.Context) {
|
|
|
|
|
recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{
|
|
|
|
|
UserId: p.UserID,
|
|
|
|
|
IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdraw, // 提现
|
|
|
|
|
Amount: decimal.NewFromFloat(p.Amount),
|
|
|
|
|
Amount: balance,
|
|
|
|
|
Title: "卡号:" + p.BankAccount + p.Alipay,
|
|
|
|
|
Comment: "提现",
|
|
|
|
|
}
|
|
|
|
@ -126,8 +149,17 @@ func SubmitWithdraw(c *gin.Context) {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if err := tx.Table((&order.Profit{}).TableName()).
|
|
|
|
|
Where("user_id = ?", p.UserID).
|
|
|
|
|
Where("status = 2").
|
|
|
|
|
Where("deal_id = 0").
|
|
|
|
|
Update("deal_id = ?", withdrawl.ID).Error; err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
back.Fail(c, "提现错误")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userWallet.Balance = userWallet.Balance.Sub(decimal.NewFromFloat(p.Amount))
|
|
|
|
|
userWallet.Balance = userWallet.Balance.Sub(balance)
|
|
|
|
|
err = tx.Save(&userWallet).Error
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|