From c65c993a25fc5486c89e4e764eb4a36bed973962 Mon Sep 17 00:00:00 2001 From: ziming Date: Wed, 17 Dec 2025 15:21:49 +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/bo/wechat_notify_bo.go | 2 +- internal/biz/multi.go | 13 ++++++++++++- internal/pkg/helper/utils_test.go | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/biz/bo/wechat_notify_bo.go b/internal/biz/bo/wechat_notify_bo.go index e26d5ef..26c4007 100644 --- a/internal/biz/bo/wechat_notify_bo.go +++ b/internal/biz/bo/wechat_notify_bo.go @@ -13,7 +13,7 @@ type ConsumeInformation struct { ConsumeTime time.Time `json:"consume_time" validate:"required"` // 核销时间 ConsumeMchid string `json:"consume_mchid"` // 核销商户号 TransactionID string `json:"transaction_id" validate:"required"` // 微信支付交易单号 - ConsumeAmount int `json:"consume_amount" validate:"required"` // 核销金额(单位:分) + ConsumeAmount int `json:"consume_amount"` // 核销金额(单位:分) // 多笔立减金必须 validate:"required" } // PlainText 定义明文数据结构体 diff --git a/internal/biz/multi.go b/internal/biz/multi.go index bf0dedf..224f6e5 100644 --- a/internal/biz/multi.go +++ b/internal/biz/multi.go @@ -89,8 +89,9 @@ func (biz *MultiBiz) Notify(ctx context.Context, ip, source string, req *bo.Wech return lock.NewMutex(biz.rdb.Rdb, cl.TTL).Lock(ctx, cl.Key, func(ctx context.Context) error { - _, err := biz.ProductRepo.GetByBatchNo(ctx, req.PlainText.StockID) + product, err := biz.ProductRepo.GetByBatchNo(ctx, req.PlainText.StockID) if err != nil { + // 数据库不存在该活动批次,过滤掉 if errors.Is(err, gorm.ErrRecordNotFound) { biz.Add(req.PlainText.StockID) return nil @@ -102,6 +103,16 @@ func (biz *MultiBiz) Notify(ctx context.Context, ip, source string, req *bo.Wech return err } + // 不是多笔立减金,过滤掉 + if product.ActivityId == "" { + biz.Add(req.PlainText.StockID) + return nil + } + + if req.PlainText.ConsumeInformation.ConsumeAmount == 0 { + return fmt.Errorf("消费金额不能为0") + } + order, err := biz.order(ctx, req) if err != nil { return err diff --git a/internal/pkg/helper/utils_test.go b/internal/pkg/helper/utils_test.go index 82d4a7d..b46d992 100644 --- a/internal/pkg/helper/utils_test.go +++ b/internal/pkg/helper/utils_test.go @@ -52,7 +52,7 @@ func TestMd5(t *testing.T) { } func Test_DecodeString(t *testing.T) { - wxNotifyData, _ := base64.StdEncoding.DecodeString("eyJzdW1tYXJ5Ijoi5Luj6YeR5Yi45qC46ZSA6YCa55+lIiwiYXNzb2NpYXRlZF9kYXRhIjoiY291cG9uIiwiZXZlbnRfdHlwZSI6IkNPVVBPTi5VU0UiLCJjcmVhdGVfdGltZSI6IjIwMjUtMTItMTdUMTQ6MjQ6MDQrMDg6MDAiLCJwbGFpbl90ZXh0Ijp7InN0b2NrX2NyZWF0b3JfbWNoaWQiOiIxNzE1MzQ5NTc4Iiwic3RvY2tfaWQiOiIyMTM1NTI5OSIsImNvdXBvbl9pZCI6IjE0MzIxODQzNzA3NSIsInNpbmdsZWl0ZW1fZGlzY291bnRfb2ZmIjpudWxsLCJkaXNjb3VudF90byI6bnVsbCwiY291cG9uX25hbWUiOiLpk7booYzljaHlpJrnrJTnq4vlh48iLCJzdGF0dXMiOiJTRU5ERUQiLCJkZXNjcmlwdGlvbiI6IiIsImNyZWF0ZV90aW1lIjoiMjAyNS0xMi0xMlQyMTo0OTozMiswODowMCIsImNvdXBvbl90eXBlIjoiTk9STUFMIiwibm9fY2FzaCI6ZmFsc2UsImF2YWlsYWJsZV9iZWdpbl90aW1lIjoiMjAyNS0xMi0xMlQwMDowMDowMCswODowMCIsImF2YWlsYWJsZV9lbmRfdGltZSI6IjIwMjUtMTItMThUMjM6NTk6NTkrMDg6MDAiLCJzaW5nbGVpdGVtIjpmYWxzZSwibm9ybWFsX2NvdXBvbl9pbmZvcm1hdGlvbiI6eyJjb3Vwb25fYW1vdW50Ijo4NCwidHJhbnNhY3Rpb25fbWluaW11bSI6MX0sImNvbnN1bWVfaW5mb3JtYXRpb24iOnsiY29uc3VtZV90aW1lIjoiMjAyNS0xMi0xN1QxNDoyNDowNCswODowMCIsImNvbnN1bWVfbWNoaWQiOiIxNDA1MzEyNzAyIiwidHJhbnNhY3Rpb25faWQiOiI0MjAwMDAyOTk4MjAyNTEyMTcxMDI0MDI4OTQzIiwiY29uc3VtZV9hbW91bnQiOjE4LCJnb29kc19kZXRhaWwiOm51bGx9fSwicmVzb3VyY2VfdHlwZSI6ImVuY3J5cHQtcmVzb3VyY2UiLCJvcmlnaW5hbF90eXBlIjoiY291cG9uIiwiaWQiOiIyNmZhMGQ2ZC02NjM0LTU5ZGYtOWU0Yi00M2JjYmFiY2I4OGIifQ==") + wxNotifyData, _ := base64.StdEncoding.DecodeString("eyJzdW1tYXJ5Ijoi5Luj6YeR5Yi45qC46ZSA6YCa55+lIiwiYXNzb2NpYXRlZF9kYXRhIjoiY291cG9uIiwiZXZlbnRfdHlwZSI6IkNPVVBPTi5VU0UiLCJjcmVhdGVfdGltZSI6IjIwMjUtMTItMTdUMTU6MDc6MDkrMDg6MDAiLCJwbGFpbl90ZXh0Ijp7InN0b2NrX2NyZWF0b3JfbWNoaWQiOiIxNzE1MzQ5NTc4Iiwic3RvY2tfaWQiOiIyMTM0NjE1OSIsImNvdXBvbl9pZCI6IjE0NDI4NzM1NDEyNCIsInNpbmdsZWl0ZW1fZGlzY291bnRfb2ZmIjpudWxsLCJkaXNjb3VudF90byI6bnVsbCwiY291cG9uX25hbWUiOiLkvJfpgqbpk7booYwzMDDlhYNMUyIsInN0YXR1cyI6IlVTRUQiLCJkZXNjcmlwdGlvbiI6IiIsImNyZWF0ZV90aW1lIjoiMjAyNS0xMi0xN1QxNTowNjo0MCswODowMCIsImNvdXBvbl90eXBlIjoiTk9STUFMIiwibm9fY2FzaCI6ZmFsc2UsImF2YWlsYWJsZV9iZWdpbl90aW1lIjoiMjAyNS0xMi0xN1QwMDowMDowMCswODowMCIsImF2YWlsYWJsZV9lbmRfdGltZSI6IjIwMjYtMDItMjZUMjM6NTk6NTkrMDg6MDAiLCJzaW5nbGVpdGVtIjpmYWxzZSwibm9ybWFsX2NvdXBvbl9pbmZvcm1hdGlvbiI6eyJjb3Vwb25fYW1vdW50IjozMDAwMCwidHJhbnNhY3Rpb25fbWluaW11bSI6MzAwMDF9LCJjb25zdW1lX2luZm9ybWF0aW9uIjp7ImNvbnN1bWVfdGltZSI6IjIwMjUtMTItMTdUMTU6MDc6MDkrMDg6MDAiLCJjb25zdW1lX21jaGlkIjoiMzQwNzU3MTI3MCIsInRyYW5zYWN0aW9uX2lkIjoiNDIwMDAwMjkwMTIwMjUxMjE3ODEzODYyODM4MiIsImNvbnN1bWVfYW1vdW50IjpudWxsLCJnb29kc19kZXRhaWwiOm51bGx9fSwicmVzb3VyY2VfdHlwZSI6ImVuY3J5cHQtcmVzb3VyY2UiLCJvcmlnaW5hbF90eXBlIjoiY291cG9uIiwiaWQiOiJiYTZkYWNiNi01MDllLTU1ZTMtOGYwMi1iM2YwNDJkZWViNTIifQ==") t.Log(string(wxNotifyData)) }