From d647df736773a45b4f71df45f613a80da1a96b84 Mon Sep 17 00:00:00 2001 From: mofangmin Date: Thu, 15 Aug 2024 17:19:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E7=8E=B0=E6=9D=83=E9=87=8D=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- call/pay.go | 9 +------- modules/pay/base/callback.go | 2 ++ modules/pay/values/values.go | 44 ++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/call/pay.go b/call/pay.go index b513193..81b83c0 100644 --- a/call/pay.go +++ b/call/pay.go @@ -381,7 +381,7 @@ func WithdrawCallback(order *common.WithdrawOrder) error { } } // util.Go(func() { - // SendRealWithdrawMail(order) + // SendRealWithdrawMail(order) // }) } if err != nil { @@ -464,13 +464,6 @@ func ReturnBackWithdraw(or *common.WithdrawOrder, originStatus, status uint8, pa tx.Rollback() return err } - // 失败的时候才发送邮件 - // if status == common.StatusROrderFail { - // util.Go(func() { - // SendWithdrawMail(uid, MailWithdrawType3) - // SendRealWithdrawMail(or) - // }) - // } return nil } diff --git a/modules/pay/base/callback.go b/modules/pay/base/callback.go index bbfd0e7..6bb49d8 100644 --- a/modules/pay/base/callback.go +++ b/modules/pay/base/callback.go @@ -95,6 +95,8 @@ func (b *Base) WithdrawCallback(c *gin.Context) { } if !success { values.WithdrawAmount(values.PayWay(or.PayChannel), false, or.Amount*100) + } else { + values.WithdrawSuccess(values.PayWay(or.PayChannel)) } } diff --git a/modules/pay/values/values.go b/modules/pay/values/values.go index 2db9ac3..b0eda17 100644 --- a/modules/pay/values/values.go +++ b/modules/pay/values/values.go @@ -159,6 +159,44 @@ func GetPayWayWeight(all []*common.ConfigPayChannels) PayWay { // return GetPayWayWeight(GetValidPayChannels(amount)) // } +func WithdrawFail(w PayWay) { + failWeight := config.GetConfig().Pay.PayFailWeight + if failWeight <= 0 { + return + } + PayWeightLock.Lock() + for _, v := range call.ConfigPayChannels { + if v.ChannelID == int(w) { + v.PayPer -= failWeight + break + } + } + sort.Slice(call.ConfigPayChannels, func(i, j int) bool { + return call.ConfigPayChannels[i].PayPer > call.ConfigPayChannels[j].PayPer + }) + PayWeightLock.Unlock() + AddWithdrawChannel(int(w), -failWeight) +} + +func WithdrawSuccess(w PayWay) { + successWeight := config.GetConfig().Pay.PaySuccessWeight + if successWeight <= 0 { + return + } + PayWeightLock.Lock() + for _, v := range call.ConfigPayChannels { + if v.ChannelID == int(w) { + v.PayPer += successWeight + break + } + } + sort.Slice(call.ConfigPayChannels, func(i, j int) bool { + return call.ConfigPayChannels[i].PayPer > call.ConfigPayChannels[j].PayPer + }) + PayWeightLock.Unlock() + AddWithdrawChannel(int(w), successWeight) +} + func PayFail(w PayWay) { failWeight := config.GetConfig().Pay.PayFailWeight if failWeight <= 0 { @@ -404,6 +442,12 @@ func Post(req *http.Request, ret interface{}) int { return 0 } +func AddWithdrawChannel(p int, amount int) { + if err := db.Mysql().C().Model(&common.ConfigWithdrawChannels{}).Where("channel_id = ?", p).Updates(map[string]interface{}{"withdraw_per": gorm.Expr("withdraw_per + ?", amount)}).Error; err != nil { + log.Error("err:%v", err) + } +} + func AddPayChannel(p int, amount int) { if err := db.Mysql().C().Model(&common.ConfigPayChannels{}).Where("channel_id = ?", p).Updates(map[string]interface{}{"pay_per": gorm.Expr("pay_per + ?", amount)}).Error; err != nil { log.Error("err:%v", err)