mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +08:00
100 lines
2.7 KiB
Go
100 lines
2.7 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
|
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
)
|
|
|
|
// MessageTaskLogService 消息发送日志相关服务
|
|
type MessageTaskLogService struct {
|
|
BaseService
|
|
}
|
|
|
|
// CountMessageTaskLogs 计算日志数量
|
|
func (this *MessageTaskLogService) CountMessageTaskLogs(ctx context.Context, req *pb.CountMessageTaskLogsRequest) (*pb.RPCCountResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tx = this.NullTx()
|
|
count, err := models.SharedMessageTaskLogDAO.CountLogs(tx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return this.SuccessCount(count)
|
|
}
|
|
|
|
// ListMessageTaskLogs 列出当页日志
|
|
func (this *MessageTaskLogService) ListMessageTaskLogs(ctx context.Context, req *pb.ListMessageTaskLogsRequest) (*pb.ListMessageTaskLogsResponse, error) {
|
|
_, err := this.ValidateAdmin(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tx = this.NullTx()
|
|
var cacheMap = utils.NewCacheMap()
|
|
logs, err := models.SharedMessageTaskLogDAO.ListLogs(tx, req.Offset, req.Size)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
pbLogs := []*pb.MessageTaskLog{}
|
|
for _, log := range logs {
|
|
task, err := models.SharedMessageTaskDAO.FindEnabledMessageTask(tx, int64(log.TaskId))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if task == nil {
|
|
continue
|
|
}
|
|
|
|
var pbRecipient *pb.MessageRecipient
|
|
if task.RecipientId > 0 {
|
|
recipient, err := models.SharedMessageRecipientDAO.FindEnabledMessageRecipient(tx, int64(task.RecipientId), cacheMap)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if recipient != nil {
|
|
pbRecipient = &pb.MessageRecipient{
|
|
Id: int64(recipient.Id),
|
|
User: recipient.User,
|
|
}
|
|
task.InstanceId = recipient.InstanceId
|
|
}
|
|
}
|
|
|
|
instance, err := models.SharedMessageMediaInstanceDAO.FindEnabledMessageMediaInstance(tx, int64(task.InstanceId), cacheMap)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if instance == nil {
|
|
continue
|
|
}
|
|
|
|
pbLogs = append(pbLogs, &pb.MessageTaskLog{
|
|
Id: int64(log.Id),
|
|
CreatedAt: int64(log.CreatedAt),
|
|
IsOk: log.IsOk,
|
|
Error: log.Error,
|
|
Response: log.Response,
|
|
MessageTask: &pb.MessageTask{
|
|
Id: int64(task.Id),
|
|
MessageRecipient: pbRecipient,
|
|
MessageMediaInstance: &pb.MessageMediaInstance{
|
|
Id: int64(instance.Id),
|
|
Name: instance.Name,
|
|
},
|
|
User: task.User,
|
|
Subject: task.Subject,
|
|
Body: task.Body,
|
|
CreatedAt: int64(task.CreatedAt),
|
|
Status: int32(task.Status),
|
|
SentAt: int64(task.SentAt),
|
|
Result: nil,
|
|
},
|
|
})
|
|
}
|
|
return &pb.ListMessageTaskLogsResponse{MessageTaskLogs: pbLogs}, nil
|
|
}
|