fix: 修改零食提现逻辑

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

@ -5,6 +5,7 @@ import (
"path/filepath" "path/filepath"
"recook/internal/back" "recook/internal/back"
"recook/internal/dbc" "recook/internal/dbc"
"recook/internal/model/order"
"recook/internal/model/user" "recook/internal/model/user"
"recook/internal/static_path" "recook/internal/static_path"
user2 "recook/internal/v2/model/recook/user" user2 "recook/internal/v2/model/recook/user"
@ -89,18 +90,6 @@ func UploadExcel(c *gin.Context) {
return return
} }
dbc.DB.Find(&d) 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{ recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{
UserId: d.UserId, UserId: d.UserId,
IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdrawFail, // 提现失败 IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdrawFail, // 提现失败
@ -116,6 +105,9 @@ func UploadExcel(c *gin.Context) {
return return
} }
// 更新profit_id 的记录
tx.Table((&order.Profit{}).TableName()).Where("is_enterprise = 0").Where("deal_id = ?", id).Update("deal_id = ?", 0)
//退回到余额 //退回到余额
var wallet user.Wallet var wallet user.Wallet
tx.First(&wallet, "user_id = ?", d.UserId) tx.First(&wallet, "user_id = ?", d.UserId)

@ -3,6 +3,7 @@ package wallet
import ( import (
"recook/internal/back" "recook/internal/back"
"recook/internal/dbc" "recook/internal/dbc"
"recook/internal/model/order"
"recook/internal/model/user" "recook/internal/model/user"
"recook/internal/service/comFunc" "recook/internal/service/comFunc"
user2 "recook/internal/v2/model/recook/user" user2 "recook/internal/v2/model/recook/user"
@ -89,22 +90,44 @@ func SubmitWithdraw(c *gin.Context) {
} else { } else {
t = user.BankType t = user.BankType
} }
if userInfo.IsEnterprise {
back.Fail(c, "企业用户无法提现")
return
}
tx := dbc.DB.Begin() 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)) var record []order.Profit
err := tx.Create(&user.Withdraw{ 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, UserId: p.UserID,
UserName: userInfo.RealName, UserName: userInfo.RealName,
Type: t, Type: t,
Amount: p.Amount, Amount: amount,
Alipay: p.Alipay, Alipay: p.Alipay,
BankAccount: p.BankAccount, BankAccount: p.BankAccount,
BankName: p.BankName, BankName: p.BankName,
AuditTime: formatime.NewSecondFrom(getNextTenOrTwentyFive()), AuditTime: formatime.NewSecondFrom(getNextTenOrTwentyFive()),
Status: user.UndoneWithdrawStatus, Status: user.UndoneWithdrawStatus,
TaxFee: fee, TaxFee: fee,
ActualAmount: amount.Sub(fee), ActualAmount: balance.Sub(fee),
}).Error }
err := tx.Create(withdrawl).Error
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
@ -115,7 +138,7 @@ func SubmitWithdraw(c *gin.Context) {
recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{ recookUserWalletBalanceListModel := &user2.RecookUserWalletBalanceListModel{
UserId: p.UserID, UserId: p.UserID,
IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdraw, // 提现 IncomeType: user2.RecookUserWalletBalanceListIncomeTypeWithdraw, // 提现
Amount: decimal.NewFromFloat(p.Amount), Amount: balance,
Title: "卡号:" + p.BankAccount + p.Alipay, Title: "卡号:" + p.BankAccount + p.Alipay,
Comment: "提现", Comment: "提现",
} }
@ -126,8 +149,17 @@ func SubmitWithdraw(c *gin.Context) {
tx.Rollback() tx.Rollback()
return 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 err = tx.Save(&userWallet).Error
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()

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

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

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

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

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

Loading…
Cancel
Save