From a7a2fb88edb153c746249458427a91c4506d40f8 Mon Sep 17 00:00:00 2001 From: ziming Date: Fri, 19 Dec 2025 14:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E7=AC=94=E7=AB=8B=E5=87=8F=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/biz/multi.go | 22 ++++++++++++++-------- internal/biz/repo/order.go | 4 ++-- internal/data/repoimpl/order.go | 6 +++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/internal/biz/multi.go b/internal/biz/multi.go index 7b8c45b..45d5f1e 100644 --- a/internal/biz/multi.go +++ b/internal/biz/multi.go @@ -186,12 +186,18 @@ func (biz *MultiBiz) RetryRunByMultiNotifyDataId(ctx context.Context, multiNotif func (biz *MultiBiz) run(ctx context.Context, req *bo.WechatVoucherNotifyBo, mnd *bo.MultiNotifyDataBo, order *bo.OrderBo) error { if req.PlainText.Status.IsUsed() { - if err := biz.OrderRepo.OverUsed(ctx, order.ID, req.PlainText.ConsumeInformation.ConsumeTime); err != nil { - return fmt.Errorf("订单使用完成修改发生错误 error: %v", err) + if order.Status.IsUse() { + if err := biz.OrderRepo.MultiOverUsed(ctx, order.ID, req.PlainText.ConsumeInformation.ConsumeTime, "再次核销完成"); err != nil { + return fmt.Errorf("订单再次核销完成修改发生错误 error: %v", err) + } + } else { + if err := biz.OrderRepo.MultiOverUsed(ctx, order.ID, req.PlainText.ConsumeInformation.ConsumeTime, "核销完成"); err != nil { + return fmt.Errorf("订单核销完成修改发生错误 error: %v", err) + } } } else { - if err := biz.OrderRepo.LastUsed(ctx, order.ID, req.PlainText.ConsumeInformation.ConsumeTime); err != nil { - return fmt.Errorf("订单使用修改发生错误 error: %v", err) + if err := biz.OrderRepo.MultiLastUsed(ctx, order.ID, req.PlainText.ConsumeInformation.ConsumeTime); err != nil { + return fmt.Errorf("订单核销修改发生错误 error: %v", err) } } @@ -269,7 +275,7 @@ func (biz *MultiBiz) bizContent(nl *bo.MultiNotifyLogBo, order *bo.OrderBo) (str ActivityId: nl.ActivityNo, // 批次活动号 CouponId: nl.CouponID, // 微信券券号 AcquiredDate: order.ReceiveSuccessTime.Format("2006-01-02 15:04:05.000"), // 券领取时间 - Status: "0", // 券状态 0:可使用,1:已使用 + Status: "1", // 券状态 0:可使用,1:已使用 TransDate: nl.ConsumeTime.Format("2006-01-02 15:04:05.000"), // 核销时间,验券时间,格式yyyy-mm-dd hh:mm:ss.sss TransAmount: fmt.Sprintf("%d", nl.ConsumeAmount), OrderId: nl.TransactionID, // 券核销支付单号 @@ -279,9 +285,9 @@ func (biz *MultiBiz) bizContent(nl *bo.MultiNotifyLogBo, order *bo.OrderBo) (str Ext: "", } - if nl.Status.IsUsed() { - req.Status = "1" - } + //if nl.Status.IsUsed() { + // req.Status = "1" + //} bizJsonBytes, err := json.Marshal(req) if err != nil { diff --git a/internal/biz/repo/order.go b/internal/biz/repo/order.go index 08f920e..b0e26f4 100644 --- a/internal/biz/repo/order.go +++ b/internal/biz/repo/order.go @@ -26,8 +26,8 @@ type OrderRepo interface { Fail(ctx context.Context, id uint64, remark string) error Used(ctx context.Context, id uint64) error NotifyUsed(ctx context.Context, id uint64, transactionId string) error - LastUsed(ctx context.Context, id uint64, lastUseTime time.Time) error - OverUsed(ctx context.Context, id uint64, lastUseTime time.Time) error + MultiLastUsed(ctx context.Context, id uint64, lastUseTime time.Time) error + MultiOverUsed(ctx context.Context, id uint64, lastUseTime time.Time, remark string) error Available(ctx context.Context, id uint64) error Expired(ctx context.Context, id uint64) error } diff --git a/internal/data/repoimpl/order.go b/internal/data/repoimpl/order.go index e1d53c6..0ba1690 100644 --- a/internal/data/repoimpl/order.go +++ b/internal/data/repoimpl/order.go @@ -453,7 +453,7 @@ func (p *OrderRepoImpl) Used(ctx context.Context, id uint64) error { return nil } -func (p *OrderRepoImpl) LastUsed(ctx context.Context, id uint64, lastUseTime time.Time) error { +func (p *OrderRepoImpl) MultiLastUsed(ctx context.Context, id uint64, lastUseTime time.Time) error { now := time.Now() tx := p.DB(ctx). @@ -473,7 +473,7 @@ func (p *OrderRepoImpl) LastUsed(ctx context.Context, id uint64, lastUseTime tim return nil } -func (p *OrderRepoImpl) OverUsed(ctx context.Context, id uint64, lastUseTime time.Time) error { +func (p *OrderRepoImpl) MultiOverUsed(ctx context.Context, id uint64, lastUseTime time.Time, remark string) error { now := time.Now() tx := p.DB(ctx). @@ -482,7 +482,7 @@ func (p *OrderRepoImpl) OverUsed(ctx context.Context, id uint64, lastUseTime tim }). Updates(model.Order{ Status: vo.OrderStatusUse.GetValue(), - Remark: "核销完成", + Remark: remark, LastUseTime: &lastUseTime, UpdateTime: &now, })