| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package sender
- import (
- "dsbqj-admin/model/mongo/subscribe"
- "dsbqj-admin/pkg/helper/wechat"
- "dsbqj-admin/pkg/logger"
- "fmt"
- "github.com/kamva/mgm/v3"
- "go.mongodb.org/mongo-driver/bson"
- "log"
- )
- type SubscribeSend struct {
- DeviceId string
- OpenIds []string
- Module string
- }
- type SubscribeSender struct {
- workerNum int
- queue chan *SubscribeSend
- wxHelper *wechat.WechatHelper
- }
- func NewSubscribeSender(workerNum int) *SubscribeSender {
- return &SubscribeSender{
- workerNum: workerNum,
- queue: make(chan *SubscribeSend, 1000),
- wxHelper: wechat.NewWechatHelper(),
- }
- }
- func (this *SubscribeSender) Send(send *SubscribeSend) {
- select {
- case this.queue <- send:
- default:
- logger.Info("subscribe sender queue full, drop task=%+v", send)
- }
- }
- func (this *SubscribeSender) Start() {
- for i := 0; i < this.workerNum; i++ {
- go this.worker(i)
- }
- }
- func (this *SubscribeSender) worker(id int) {
- for task := range this.queue {
- this.safeSend(task)
- }
- }
- func (this *SubscribeSender) safeSend(send *SubscribeSend) {
- defer func() {
- if r := recover(); r != nil {
- log.Printf("send subscribe panic: %v", r)
- }
- }()
- switch send.Module {
- case "hangup":
- this.SendHangupSubscribe(send.DeviceId)
- case "autofight":
- this.SendHangupSubscribe(send.DeviceId)
- case "guildgame":
- this.SendGuildGameSubscribe(send.OpenIds)
- default:
- log.Printf("[push] unknown type=%s, openId=%s",
- send.Module, send.DeviceId)
- }
- }
- func (this *SubscribeSender) SendHangupSubscribe(deviceId string) {
- subscribeOne := new(subscribe.Subscribe)
- err := mgm.Coll(&subscribe.Subscribe{}).First(bson.M{"device_id": deviceId, "modules.hangup.enabled": true}, subscribeOne)
- if err != nil {
- return
- }
- msg := make(map[string]map[string]string)
- msg["thing12"] = make(map[string]string)
- msg["thing12"]["value"] = "天气不错"
- msg["thing13"] = make(map[string]string)
- msg["thing13"]["value"] = "明天下雨"
- fmt.Println(this.wxHelper.SendWechatSubscribe(subscribeOne.OpenId, "UeiRSO8hHAFvTodH3SlWb_KoqT3Z2F2MoSvsDkZv7AE", msg))
- }
- func (this *SubscribeSender) SendAutoFightSubscribe(deviceId string) {
- subscribeOne := new(subscribe.Subscribe)
- err := mgm.Coll(&subscribe.Subscribe{}).First(bson.M{"device_id": deviceId, "modules.hangup.enabled": true}, subscribeOne)
- if err != nil {
- return
- }
- msg := make(map[string]map[string]string)
- msg["thing12"] = make(map[string]string)
- msg["thing12"]["value"] = "天气不错"
- msg["thing13"] = make(map[string]string)
- msg["thing13"]["value"] = "明天下雨"
- fmt.Println(this.wxHelper.SendWechatSubscribe(subscribeOne.OpenId, "UeiRSO8hHAFvTodH3SlWb_KoqT3Z2F2MoSvsDkZv7AE", msg))
- }
- func (this *SubscribeSender) SendGuildGameSubscribe(openIds []string) {
- }
|