多笔立减金

This commit is contained in:
ziming 2025-12-17 15:21:49 +08:00
parent 1f81565e15
commit c65c993a25
3 changed files with 14 additions and 3 deletions

View File

@ -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 定义明文数据结构体

View File

@ -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

View File

@ -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))
}