pro order use notify

This commit is contained in:
ziming 2025-06-09 17:45:34 +08:00
parent a1271d1fc8
commit 8dc9431614
5 changed files with 47 additions and 5 deletions

View File

@ -8,13 +8,13 @@ server:
data: data:
db: db:
driver: mysql driver: mysql
source: root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local source: root:lansexiongdi6,@tcp(47.108.53.72:3306)/voucher?parseTime=True&loc=Local
maxIdle: 200 #最大的空闲连接数 maxIdle: 200 #最大的空闲连接数
maxOpen: 1000 #最大连接数0表示不受限制 maxOpen: 1000 #最大连接数0表示不受限制
maxLifetime: 300s #连接复用的最大生命周期 maxLifetime: 300s #连接复用的最大生命周期
isDebug: false isDebug: false
redis: #没有则注释此属性 redis: #没有则注释此属性
addr: 47.97.27.195:6379 addr: 47.108.53.72:6379
password: lansexiongdi@666 password: lansexiongdi@666
readTimeout: 5s readTimeout: 5s
writeTimeout: 5s writeTimeout: 5s

View File

@ -1,6 +1,7 @@
package biz package biz
import ( import (
"sync"
"voucher/internal/biz/cmb" "voucher/internal/biz/cmb"
"voucher/internal/biz/mixrepos" "voucher/internal/biz/mixrepos"
"voucher/internal/biz/repo" "voucher/internal/biz/repo"
@ -22,6 +23,9 @@ type VoucherBiz struct {
WechatCpnRepo wechatrepo.WechatCpnRepo WechatCpnRepo wechatrepo.WechatCpnRepo
DingMixRepo mixrepos.DingMixRepo DingMixRepo mixrepos.DingMixRepo
CmbMixRepo mixrepos.CmbMixRepo CmbMixRepo mixrepos.CmbMixRepo
mu sync.RWMutex
queryMap map[string]bool
} }
func NewVoucherBiz( func NewVoucherBiz(
@ -51,5 +55,35 @@ func NewVoucherBiz(
WechatCpnRepo: WechatCpnRepo, WechatCpnRepo: WechatCpnRepo,
DingMixRepo: DingMixRepo, DingMixRepo: DingMixRepo,
CmbMixRepo: CmbMixRepo, CmbMixRepo: CmbMixRepo,
queryMap: make(map[string]bool),
}
}
func (this *VoucherBiz) Get(stockNo string) bool {
this.mu.Lock()
defer this.mu.Unlock()
if _, ok := this.queryMap[stockNo]; ok {
return ok
}
return false
}
func (this *VoucherBiz) Add(stockNo string) {
this.mu.Lock()
defer this.mu.Unlock()
this.queryMap[stockNo] = true
}
func (this *VoucherBiz) Remove(stockNo string) {
this.mu.Lock()
defer this.mu.Unlock()
if _, ok := this.queryMap[stockNo]; ok {
delete(this.queryMap, stockNo)
} }
} }

View File

@ -12,6 +12,10 @@ import (
func (v *VoucherBiz) PushWechatQuery(ctx context.Context, req *do.WechatQuery) error { func (v *VoucherBiz) PushWechatQuery(ctx context.Context, req *do.WechatQuery) error {
if v.Get(req.ProductNo) {
return fmt.Errorf("正在处理中")
}
_, err := v.ProductRepo.GetByProductNo(ctx, req.ProductNo) _, err := v.ProductRepo.GetByProductNo(ctx, req.ProductNo)
if err != nil { if err != nil {
return err return err
@ -32,6 +36,8 @@ func (v *VoucherBiz) PushWechatQuery(ctx context.Context, req *do.WechatQuery) e
return fmt.Errorf("添加到队列失败:%v", err) return fmt.Errorf("添加到队列失败:%v", err)
} }
v.Add(req.ProductNo)
return nil return nil
} }
@ -43,6 +49,8 @@ func (v *VoucherBiz) WechatQuery(ctx context.Context, msg string) error {
return err return err
} }
defer v.Remove(req.ProductNo)
start := time.Now() start := time.Now()
log.Warnf("微信券查询处理开始:%s,msg:%s", start.String(), msg) log.Warnf("微信券查询处理开始:%s,msg:%s", start.String(), msg)
fmt.Printf("微信券查询处理开始:%s,msg:%s", start.String(), msg) fmt.Printf("微信券查询处理开始:%s,msg:%s", start.String(), msg)

View File

@ -48,8 +48,8 @@ func Test_WechatNotifyProducer2(t *testing.T) {
"associated_data":"coupon", "associated_data":"coupon",
"plain_text":{ "plain_text":{
"stock_creator_mchid":"1652465541", "stock_creator_mchid":"1652465541",
"stock_id":"20393435", "stock_id":"20393759",
"coupon_id":"101423873113", "coupon_id":"104611498109",
"coupon_name":"test", "coupon_name":"test",
"description":"","status":"USED", "description":"","status":"USED",
"create_time":"2025-03-07T15:49:31+08:00", "create_time":"2025-03-07T15:49:31+08:00",

View File

@ -40,7 +40,7 @@ func (r *ConsumeConfig) init(_ context.Context) {
} }
func (r *ConsumeConfig) Start(ctx context.Context) { func (r *ConsumeConfig) Start(ctx context.Context) {
fmt.Printf("RdsMQ Starting to dequeue from [%s]", r.QueueName) fmt.Printf("RdsMQ Starting to dequeue from [%s] \n", r.QueueName)
r.init(ctx) r.init(ctx)
defer r.close(ctx) defer r.close(ctx)