85 lines
1.5 KiB
Go
85 lines
1.5 KiB
Go
package timeslicequery
|
|
|
|
import (
|
|
"github.com/nacos-group/nacos-sdk-go/util"
|
|
"sync"
|
|
"voucher/internal/biz/cmb"
|
|
"voucher/internal/biz/mixrepos"
|
|
"voucher/internal/biz/repo"
|
|
"voucher/internal/biz/wechatrepo"
|
|
"voucher/internal/conf"
|
|
"voucher/internal/data"
|
|
)
|
|
|
|
type Query struct {
|
|
mu sync.RWMutex
|
|
queryMap map[string]bool
|
|
|
|
bc *conf.Bootstrap
|
|
rdb *data.Rdb
|
|
cmb *cmb.Cmb
|
|
|
|
productRepo repo.ProductRepo
|
|
orderRepo repo.OrderRepo
|
|
|
|
wechatCpnRepo wechatrepo.WechatCpnRepo
|
|
mqSendMixRepo mixrepos.MQSendMixRepo
|
|
}
|
|
|
|
func NewQuery(
|
|
bc *conf.Bootstrap,
|
|
rdb *data.Rdb,
|
|
cmb *cmb.Cmb,
|
|
productRepo repo.ProductRepo,
|
|
orderRepo repo.OrderRepo,
|
|
wechatCpnRepo wechatrepo.WechatCpnRepo,
|
|
mqSendMixRepo mixrepos.MQSendMixRepo) *Query {
|
|
return &Query{
|
|
queryMap: make(map[string]bool),
|
|
bc: bc,
|
|
rdb: rdb,
|
|
cmb: cmb,
|
|
productRepo: productRepo,
|
|
orderRepo: orderRepo,
|
|
wechatCpnRepo: wechatCpnRepo,
|
|
mqSendMixRepo: mqSendMixRepo}
|
|
}
|
|
|
|
func (v *Query) uid(no string) string {
|
|
return util.Md5("query" + no)
|
|
}
|
|
|
|
func (this *Query) GetAll() map[string]bool {
|
|
return this.queryMap
|
|
}
|
|
|
|
func (this *Query) Get(uid string) bool {
|
|
|
|
this.mu.Lock()
|
|
defer this.mu.Unlock()
|
|
|
|
if _, ok := this.queryMap[uid]; ok {
|
|
return ok
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func (this *Query) Add(uid string) {
|
|
|
|
this.mu.Lock()
|
|
defer this.mu.Unlock()
|
|
|
|
this.queryMap[uid] = true
|
|
}
|
|
|
|
func (this *Query) Remove(uid string) {
|
|
|
|
this.mu.Lock()
|
|
defer this.mu.Unlock()
|
|
|
|
if _, ok := this.queryMap[uid]; ok {
|
|
delete(this.queryMap, uid)
|
|
}
|
|
}
|