fix: 修改零食提现逻辑

master
howell 3 years ago committed by howell
parent e002561585
commit 6a1ac673e2

@ -5,6 +5,7 @@ import (
"path/filepath"
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/order"
"recook/internal/model/user"
"recook/internal/static_path"
user2 "recook/internal/v2/model/recook/user"
@ -89,18 +90,6 @@ func UploadExcel(c *gin.Context) {
return
}
dbc.DB.Find(&d)
//fmt.Println("----------------------")
//fmt.Println(d.UserId)
//这边将提现的金额退回原路,修改提现记录的接口,新增资金变动的接口
//walletList := user.WalletBalanceList{
// UserID: d.UserId,
// IncomeType: 4, // 退款
// Amount: decimal.NewFromFloat(d.Amount),
// Style: d.FailReason,
// Comment: "打款失败",
//}
//dbc.DB.Create(&walletList)
recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{
UserId: d.UserId,
IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdrawFail, // 提现失败
@ -116,6 +105,9 @@ func UploadExcel(c *gin.Context) {
return
}
// 更新profit_id 的记录
tx.Table((&order.Profit{}).TableName()).Where("is_enterprise = 0").Where("deal_id = ?", id).Update("deal_id = ?", 0)
//退回到余额
var wallet user.Wallet
tx.First(&wallet, "user_id = ?", d.UserId)

@ -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()

@ -6,15 +6,17 @@ import (
)
type Profit struct {
ID int `json:"id"`
OrderID uint `json:"order_id"`
Base decimal.Decimal `json:"base"`
Type IncomeType `json:"type"`
Income decimal.Decimal `json:"income"`
UserID uint `json:"user_id"`
CreatedAt formatime.Second `json:"created_at"`
Status int `json:"status"`
Version int `json:"-"`
ID int `json:"id"`
OrderID uint `json:"order_id"`
Base decimal.Decimal `json:"base"`
Type IncomeType `json:"type"`
Income decimal.Decimal `json:"income"`
UserID uint `json:"user_id"`
CreatedAt formatime.Second `json:"created_at"`
Status int `json:"status"`
Version int `json:"-"`
DealID int `json:"-"`
IsEnterprise bool `json:"is_enterprise"`
}
func (o Profit) TableName() string {

@ -17,6 +17,7 @@ type WalletBalanceList struct {
OrderTime formatime.Second `gorm:"column:order_time" json:"orderTime,omitempty"`
CreatedAt formatime.Second `gorm:"column:created_at" json:"createdAt,omitempty"`
ProfitID uint `json:"profit_id"`
ApplyID int `json:"apply_id"`
}
func (r *WalletBalanceList) TableName() string {

@ -723,28 +723,31 @@ type Data struct {
}
func (o logic) CompanyAllAmount(id uint) (res Data) {
var record []user.RecookUserWalletBalanceListModel
mysql.Db.Where("user_id = ?", id).Where("statsu = 0").Find(&record)
var u user2.Information
mysql.Db.First(&u, "id = ?", id)
var record []order.Profit
mysql.Db.Where("user_id = ?", id).Where("status = 2").Where("deal_id = 0").Find(&record)
var enterprise company.Info
mysql.Db.First(&enterprise, "user_id = ?", id)
if enterprise.ID == 0 {
return
}
rate := decimal.NewFromFloat(0.13)
if enterprise.TaxType == "一般纳税人" {
rate = decimal.NewFromFloat(0.07)
}
for _, v := range record {
res.Balance = res.Balance.Add(v.Amount)
if v.IncomeType > 10 {
// 收益算税
res.TaxAmount = res.TaxAmount.Add(v.Amount.
Div(decimal.NewFromFloat(1.13)).Mul(rate).
Mul(decimal.NewFromFloat(1.12)).Round(2))
if !u.IsEnterprise {
// 普通用户
rate := decimal.NewFromFloat(0.13)
for _, v := range record {
res.Balance = res.Balance.Add(v.Income)
res.TaxAmount = v.Income.Mul(rate).Round(2)
}
res.ActualAmount = res.Balance.Sub(res.TaxAmount)
} else {
rate := decimal.NewFromFloat(0.13)
if enterprise.TaxType == "一般纳税人" {
rate = decimal.NewFromFloat(0.07)
}
for _, v := range record {
res.Balance = res.Balance.Add(v.Income)
res.TaxAmount = res.TaxAmount.
Add(v.Income.Div(decimal.NewFromFloat(1.13)).Mul(rate).Mul(decimal.NewFromFloat(1.12)).Round(2))
}
res.ActualAmount = res.Balance.Sub(res.TaxAmount)
}
res.ActualAmount = res.Balance.Sub(res.TaxAmount)
// res.ActualAmount = res.Withdrawal.Mul(decimal.NewFromFloat(1.06)).Round(2)
return
}

@ -30,7 +30,7 @@ func (o logic) SetFee(args ArgsLogisticsFee) error {
}).RowsAffected; row == 0 {
return errors.New("更新失败")
}
message := "已录入订单物流费用"
message := "物流费已确认, 请立即支付"
if e := tx.Create(&jyy.AppUserMessage{
UserID: int(od.UserID),
Message: message,
@ -40,13 +40,12 @@ func (o logic) SetFee(args ArgsLogisticsFee) error {
}).Error; e != nil {
return e
}
// 确认收益
var ju jpush.JPush
mysql.Db.First(&ju, "user_id = ?", od.UserID)
if ju.RegistrationId != "" {
client := jpush2.GetClient()
client.PushMsgWithRegister(ju.RegistrationId, "收益到账", message)
client.PushMsgWithRegister(ju.RegistrationId, "物流费确认", message)
}
return nil
})

@ -299,7 +299,7 @@ func routerApp(appRouter *gin.RouterGroup) {
companyController.POST("info", proxy.CompanyInfo)
companyController.POST("apply/list", proxy.CompanyApplyList) // 提现列表
companyController.POST("apply/all_amount", proxy.CompanyAllAmount)
companyController.POST("apply", proxy.CompanyApply) // 提现
// companyController.POST("apply", proxy.CompanyApply) // 提现
companyController.POST("deposit", proxy.CompanyDespoit) // 充值
companyController.POST("deposit/list", proxy.DespoitInfo) // 充值列表

Loading…
Cancel
Save