package serviceGame import ( "context" "encoding/json" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/guid" "strings" "time" "tyj_admin/api/v1/game" "tyj_admin/internal/model/entity" "tyj_admin/internal/serviceGame/internal" ) type IGameMail interface { GetMailList(ctx context.Context, req *game.MailsSearchReq) (res *game.MailsSearchRes, err error) SendMail(ctx context.Context, req *game.MailSendReq) (res *game.MailSendRes, err error) } type gameMailImpl struct { } var gameMailService = gameMailImpl{} func GameMail() IGameMail { return &gameMailService } func (m *gameMailImpl) GetMailList(ctx context.Context, req *game.MailsSearchReq) (res *game.MailsSearchRes, err error) { res = new(game.MailsSearchRes) g.Try(ctx, func(ctx context.Context) { res.Mails, err = internal.GetMails(ctx, req.Uid, req.ServerId, req.LowTime, req.UpperTime) }) return } func (m *gameMailImpl) SendMail(ctx context.Context, req *game.MailSendReq) (res *game.MailSendRes, err error) { res = new(game.MailSendRes) mqttMail := internal.MqttMail{} //mail := entity.Mail{} mqttMail.Body.Mail.C_date = time.Now().UnixMilli() mqttMail.Body.Mail.Id = guid.S() mqttMail.Body.Mail.ServerId = req.ServerId mqttMail.Body.Mail.Time = req.Time mqttMail.Body.Mail.To = req.To mqttMail.Body.Mail.From = "陶渊明" mqttMail.Body.Mail.GmName = req.GmName mqttMail.Body.Mail.Type = req.Type mqttMail.Body.Mail.Expired = req.Expired mqttMail.Body.Mail.NewGet = req.NewGet mqttMail.Body.Mail.RepeatedCollection = req.RepeatedCollection mqttMail.Body.Mail.Title = req.Title mqttMail.Body.Mail.Content = req.Content mqttMail.Body.Mail.Drops = GetDrops(req.Drops) mqttMail.Body.Mail.Remark = req.Remark mqttMail.Body.ModuleType = "sendMail" mqttMail.ModuleId = "webadmin" mqttMail.ReqId = 1 js, err := json.Marshal(mqttMail) connectCh := make(chan bool) server := "192.168.2.100:3005" defer close(connectCh) internal.SendMqtt(js, connectCh, server) var result bool for { select { case result = <-connectCh: if result == false { err = gerror.New("失败") return } else { return } } } internal.AddMail(ctx, mqttMail.Body.Mail) return } func GetDrops(drop string) []entity.Drop { var realDrops []entity.Drop if len(drop) == 0 { return realDrops } drops := strings.Split(drop, ",") for _, v := range drops { temp := strings.Split(v, ":") if len(temp) != 2 { continue } ss := entity.Drop{temp[0], temp[1]} realDrops = append(realDrops, ss) } return realDrops }