|
|
|
@ -686,24 +686,52 @@ func (o logic) CompanyApply(args company.Apply) error {
|
|
|
|
|
|
|
|
|
|
var wallet user.RecookUserWalletModel
|
|
|
|
|
mysql.Db.First(&wallet, "user_id = ?", args.UserID)
|
|
|
|
|
var apply []company.Apply
|
|
|
|
|
mysql.Db.Find(&apply, "user_id = ? and state = 1", args.UserID)
|
|
|
|
|
applied := decimal.Zero
|
|
|
|
|
for _, v := range apply {
|
|
|
|
|
applied = applied.Add(v.Amount)
|
|
|
|
|
}
|
|
|
|
|
if args.Amount.Add(applied).GreaterThan(wallet.Balance) {
|
|
|
|
|
return fmt.Errorf("余额不足,已申请%f, 全部%f", applied.BigFloat(), wallet.Balance.BigFloat())
|
|
|
|
|
|
|
|
|
|
var a company.Apply
|
|
|
|
|
mysql.Db.Where("state in (1, 2)").First(&a, "user_id = ?", args.UserID) // 带审核提现
|
|
|
|
|
if a.ID > 0 {
|
|
|
|
|
return errors.New("有待审核的记录,不需要重试")
|
|
|
|
|
}
|
|
|
|
|
res := o.CompanyAllAmount(uint(args.UserID))
|
|
|
|
|
args.Balance = res.Balance
|
|
|
|
|
args.Withdrawal = res.Withdrawal
|
|
|
|
|
args.TaxAmount = res.TaxAmount
|
|
|
|
|
args.ActualAmount = res.ActualAmount
|
|
|
|
|
|
|
|
|
|
var company company.Info
|
|
|
|
|
mysql.Db.First(&company, "user_id = ?", args.UserID)
|
|
|
|
|
args.CompanyID = int(company.ID)
|
|
|
|
|
return mysql.Db.Create(&args).Error
|
|
|
|
|
return mysql.Db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
|
if e := tx.Create(&args).Error; e != nil {
|
|
|
|
|
return e
|
|
|
|
|
}
|
|
|
|
|
if e := tx.Table((&user.RecookUserWalletBalanceListModel{}).TableName()).
|
|
|
|
|
Where("user_id = ?", args.UserID).Where("statsu = 0").Update("status", 1).Error; e != nil {
|
|
|
|
|
return e
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Data struct {
|
|
|
|
|
Balance decimal.Decimal `json:"balance"`
|
|
|
|
|
TaxAmount decimal.Decimal `json:"tax_amount"`
|
|
|
|
|
Withdrawal decimal.Decimal `json:"withdrawal"`
|
|
|
|
|
ActualAmount decimal.Decimal `json:"actual_amount"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (o logic) CompanyAllAmount(id uint) error {
|
|
|
|
|
return nil
|
|
|
|
|
func (o logic) CompanyAllAmount(id uint) (res Data) {
|
|
|
|
|
var record []user.RecookUserWalletBalanceListModel
|
|
|
|
|
mysql.Db.Where("user_id = ?", id).Where("statsu = 0").Find(&record)
|
|
|
|
|
for _, v := range record {
|
|
|
|
|
res.Balance = res.Balance.Add(v.Amount)
|
|
|
|
|
}
|
|
|
|
|
res.TaxAmount = res.Balance.
|
|
|
|
|
Div(decimal.NewFromFloat(1.13)).
|
|
|
|
|
Mul(decimal.NewFromFloat(0.13)).
|
|
|
|
|
Mul(decimal.NewFromFloat(1.12)).Round(2)
|
|
|
|
|
res.Withdrawal = res.Balance.Sub(res.ActualAmount)
|
|
|
|
|
res.ActualAmount = res.Withdrawal.Mul(decimal.NewFromFloat(1.06)).Round(2)
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|