|
|
|
@ -3,6 +3,7 @@ package jyy
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"recook/internal/dbc"
|
|
|
|
|
"recook/internal/libs/bean"
|
|
|
|
|
"recook/internal/model/order"
|
|
|
|
|
"recook/internal/model/order_preview"
|
|
|
|
@ -676,10 +677,23 @@ func (o logic) CompanyApplyList(args ApplyListReq) (res []company.Apply, total i
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (o logic) CompanyApply(args company.Apply) error {
|
|
|
|
|
key := fmt.Sprintf("user:withdrawal:%d", args.UserID)
|
|
|
|
|
lock := dbc.Rds.SetNX(key, 1, time.Second*15)
|
|
|
|
|
defer dbc.Rds.Del(key)
|
|
|
|
|
if !lock.Val() {
|
|
|
|
|
return errors.New("请勿重复操作")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var wallet user.RecookUserWalletModel
|
|
|
|
|
mysql.Db.First(&wallet, "user_id = ?", args.UserID)
|
|
|
|
|
if args.Amount.GreaterThan(wallet.Balance) {
|
|
|
|
|
return errors.New("提现过多")
|
|
|
|
|
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 company company.Info
|
|
|
|
|
mysql.Db.First(&company, "user_id = ?", args.UserID)
|
|
|
|
|