You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.5 KiB
101 lines
2.5 KiB
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 |
|
|
|
}
|
|
|