From b720a9ccf0d47688ba0c4ab334ac10a76defe275 Mon Sep 17 00:00:00 2001 From: jiangyong27 Date: Wed, 9 Apr 2025 14:56:16 +0800 Subject: [PATCH] paylimit2 --- common/dao/staff_pay_log.go | 16 ++++++++++++++++ service/pay.go | 15 +++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/common/dao/staff_pay_log.go b/common/dao/staff_pay_log.go index f6af0e8..0cd2f14 100644 --- a/common/dao/staff_pay_log.go +++ b/common/dao/staff_pay_log.go @@ -3,6 +3,7 @@ package dao import ( "enterprise/common/model" "github.com/spf13/cast" + "gorm.io/gorm" "time" ) @@ -23,6 +24,21 @@ func (d *StaffPayLogDao) Create(o *model.StaffPayLog) (int64, error) { return o.Id, res.Error } +func (d *StaffPayLogDao) GetByOutTradeNo(outTradeNo string) (*model.StaffPayLog, error) { + var u model.StaffPayLog + tx := GetDB().Table(d.TableName()) + tx = tx.Where("out_trade_no = ?", outTradeNo) + res := tx.First(&u) + if res.Error == gorm.ErrRecordNotFound { + return nil, nil + } + + if res.Error != nil { + return nil, res.Error + } + return &u, nil +} + func (d *StaffPayLogDao) QueryAdmin(page, size int, corpId int64, staffId string) ([]*model.StaffPayLog, int64, error) { var u []*model.StaffPayLog tx := GetDB().Table(d.TableName()) diff --git a/service/pay.go b/service/pay.go index 59e910b..8bd6eec 100644 --- a/service/pay.go +++ b/service/pay.go @@ -27,7 +27,17 @@ func (p *Pay) Pay(corp *model.Corp, user *model.StaffUser, title, payType string if outTradeNo == "" { outTradeNo = fmt.Sprintf("%d_%s_%s", corp.Id, time.Now().Format("200601020304"), user.Id) } - var err error + + plog, err := dao.NewStaffPayLogDao().GetByOutTradeNo(outTradeNo) + if err != nil { + log.Errorf("db error :%s", err.Error()) + return err + } + if plog != nil { + log.Errorf("ouTradeNo[%s] paylog[%s] exist!", outTradeNo, goutil.EncodeJSON(plog)) + return nil + } + realPayType := "" payee := user.GetPayee() if payType == "alipay" { @@ -54,7 +64,8 @@ func (p *Pay) Pay(corp *model.Corp, user *model.StaffUser, title, payType string return err } - plog := new(model.StaffPayLog) + plog = new(model.StaffPayLog) + plog.OutTradeNo = outTradeNo plog.Title = title plog.PayType = realPayType plog.StaffId = user.Id