get_whatcapp_batch_msg_logic.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package batch_msg
  2. import (
  3. "context"
  4. "encoding/json"
  5. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  6. "github.com/suyuan32/simple-admin-common/utils/pointy"
  7. "github.com/zeromicro/go-zero/core/errorx"
  8. "wechat-api/ent"
  9. "wechat-api/ent/batchmsg"
  10. "wechat-api/internal/utils/dberrorhandler"
  11. "wechat-api/internal/svc"
  12. "wechat-api/internal/types"
  13. "github.com/zeromicro/go-zero/core/logx"
  14. )
  15. type GetWhatcappBatchMsgLogic struct {
  16. logx.Logger
  17. ctx context.Context
  18. svcCtx *svc.ServiceContext
  19. }
  20. func NewGetWhatcappBatchMsgLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetWhatcappBatchMsgLogic {
  21. return &GetWhatcappBatchMsgLogic{
  22. Logger: logx.WithContext(ctx),
  23. ctx: ctx,
  24. svcCtx: svcCtx}
  25. }
  26. func (l *GetWhatcappBatchMsgLogic) GetWhatcappBatchMsg(req *types.IDReq) (*types.BatchMsgInfoResp, error) {
  27. organizationId := l.ctx.Value("organizationId").(uint64)
  28. data, err := l.svcCtx.DB.BatchMsg.Query().Where(
  29. batchmsg.ID(req.Id),
  30. batchmsg.OrganizationID(organizationId),
  31. batchmsg.Ctype(2),
  32. ).First(l.ctx)
  33. if err != nil {
  34. if ent.IsNotFound(err) {
  35. return nil, errorx.NewInvalidArgumentError("群发消息不存在")
  36. }
  37. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  38. }
  39. labels, groupLables := make([]uint64, 0), make([]uint64, 0)
  40. tagMap := make(map[string][]uint64)
  41. err = json.Unmarshal([]byte(data.Tagids), &tagMap)
  42. if err != nil {
  43. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  44. }
  45. labels = tagMap["contact_tag"]
  46. groupLables = tagMap["group_tag"]
  47. return &types.BatchMsgInfoResp{
  48. BaseDataInfo: types.BaseDataInfo{
  49. Code: 0,
  50. Msg: errormsg.Success,
  51. },
  52. Data: types.BatchMsgInfo{
  53. BaseIDInfo: types.BaseIDInfo{
  54. Id: &data.ID,
  55. CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
  56. UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
  57. },
  58. Phone: &data.Phone,
  59. Cc: &data.Cc,
  60. Status: &data.Status,
  61. BatchNo: &data.BatchNo,
  62. TaskName: &data.TaskName,
  63. Fromwxid: &data.Fromwxid,
  64. Msg: &data.Msg,
  65. Tag: &data.Tag,
  66. Total: &data.Total,
  67. Success: &data.Success,
  68. Fail: &data.Fail,
  69. Type: &data.Type,
  70. Ctype: &data.Ctype,
  71. TemplateName: &data.TemplateName,
  72. TemplateCode: &data.TemplateCode,
  73. Lang: &data.Lang,
  74. StartTime: pointy.GetUnixMilliPointer(data.StartTime.UnixMilli()),
  75. StopTime: pointy.GetUnixMilliPointer(data.StopTime.UnixMilli()),
  76. SendTime: pointy.GetUnixMilliPointer(data.SendTime.UnixMilli()),
  77. StartTimeStr: pointy.GetPointer(data.StartTime.Format("2006-01-02 15:04:05")),
  78. Labels: labels,
  79. GroupLabels: groupLables,
  80. },
  81. }, nil
  82. }