From 976da30c7e2f670888c37ba267e62a46c99007d8 Mon Sep 17 00:00:00 2001 From: howell <2827207845@qq.com> Date: Mon, 21 Mar 2022 12:51:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/v2/logic/app/jyy/jyy.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/internal/v2/logic/app/jyy/jyy.go b/internal/v2/logic/app/jyy/jyy.go index beb4f8c..aa790f4 100644 --- a/internal/v2/logic/app/jyy/jyy.go +++ b/internal/v2/logic/app/jyy/jyy.go @@ -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)