117 lines
3.0 KiB
Go
117 lines
3.0 KiB
Go
package biz
|
|
|
|
import (
|
|
"context"
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
"sync"
|
|
v1 "voucher/api/v1"
|
|
"voucher/internal/biz/bo"
|
|
"voucher/internal/biz/cmb"
|
|
"voucher/internal/biz/mixrepos"
|
|
"voucher/internal/biz/repo"
|
|
"voucher/internal/biz/vo"
|
|
"voucher/internal/biz/wechatrepo"
|
|
"voucher/internal/conf"
|
|
"voucher/internal/data"
|
|
)
|
|
|
|
type VoucherBiz struct {
|
|
bc *conf.Bootstrap
|
|
rdb *data.Rdb
|
|
Cmb *cmb.Cmb
|
|
ProductRepo repo.ProductRepo
|
|
OrderRepo repo.OrderRepo
|
|
OrderNotifyRepo repo.OrderNotifyRepo
|
|
WechatNotifyRegisterTagRepo repo.WechatNotifyRegisterTagRepo
|
|
MqSendMixRepo mixrepos.MQSendMixRepo
|
|
GenerateMixRepo mixrepos.GenerateMixRepo
|
|
WechatCpnRepo wechatrepo.WechatCpnRepo
|
|
DingMixRepo mixrepos.DingMixRepo
|
|
CmbMixRepo mixrepos.CmbMixRepo
|
|
KxMixRepo mixrepos.KxMixRepo
|
|
UseLogRepo repo.UseLogRepo
|
|
|
|
mu sync.RWMutex
|
|
queryMap map[string]bool
|
|
}
|
|
|
|
func NewVoucherBiz(
|
|
bc *conf.Bootstrap,
|
|
rdb *data.Rdb,
|
|
Cmb *cmb.Cmb,
|
|
ProductRepo repo.ProductRepo,
|
|
OrderRepo repo.OrderRepo,
|
|
OrderNotifyRepo repo.OrderNotifyRepo,
|
|
WechatNotifyRegisterTagRepo repo.WechatNotifyRegisterTagRepo,
|
|
MqSendMixRepo mixrepos.MQSendMixRepo,
|
|
GenerateMixRepo mixrepos.GenerateMixRepo,
|
|
WechatCpnRepo wechatrepo.WechatCpnRepo,
|
|
DingMixRepo mixrepos.DingMixRepo,
|
|
CmbMixRepo mixrepos.CmbMixRepo,
|
|
KxMixRepo mixrepos.KxMixRepo,
|
|
UseLogRepo repo.UseLogRepo,
|
|
) *VoucherBiz {
|
|
return &VoucherBiz{
|
|
bc: bc,
|
|
rdb: rdb,
|
|
Cmb: Cmb,
|
|
ProductRepo: ProductRepo,
|
|
OrderRepo: OrderRepo,
|
|
OrderNotifyRepo: OrderNotifyRepo,
|
|
WechatNotifyRegisterTagRepo: WechatNotifyRegisterTagRepo,
|
|
MqSendMixRepo: MqSendMixRepo,
|
|
GenerateMixRepo: GenerateMixRepo,
|
|
WechatCpnRepo: WechatCpnRepo,
|
|
DingMixRepo: DingMixRepo,
|
|
CmbMixRepo: CmbMixRepo,
|
|
KxMixRepo: KxMixRepo,
|
|
UseLogRepo: UseLogRepo,
|
|
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(uid string) {
|
|
this.mu.Lock()
|
|
defer this.mu.Unlock()
|
|
|
|
this.queryMap[uid] = true
|
|
}
|
|
|
|
func (this *VoucherBiz) Remove(uid string) {
|
|
|
|
this.mu.Lock()
|
|
defer this.mu.Unlock()
|
|
|
|
if _, ok := this.queryMap[uid]; ok {
|
|
delete(this.queryMap, uid)
|
|
}
|
|
}
|
|
|
|
func (c *VoucherBiz) GetResponse(ctx context.Context, replyBizContent []byte) (*v1.CmbReply, error) {
|
|
|
|
req := &bo.CmbResponseBo{
|
|
RespCode: vo.CmbResponseStatusSuccess.GetValue(),
|
|
RespMsg: "成功",
|
|
BizContent: string(replyBizContent),
|
|
}
|
|
|
|
reply, err := c.CmbMixRepo.GetResponse(ctx, req)
|
|
if err != nil {
|
|
log.Errorf("build cmb response fail: %v", err)
|
|
return nil, err
|
|
}
|
|
|
|
return reply, nil
|
|
}
|