sendwxtmplmsglogic.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/MessageCenter/rpc/internal/common"
  4. "app.yhyue.com/moapp/MessageCenter/util"
  5. "context"
  6. "strings"
  7. "app.yhyue.com/moapp/MessageCenter/rpc/internal/svc"
  8. "app.yhyue.com/moapp/MessageCenter/rpc/type/message"
  9. "github.com/zeromicro/go-zero/core/logx"
  10. )
  11. type SendWxTmplMsgLogic struct {
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. logx.Logger
  15. }
  16. func NewSendWxTmplMsgLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SendWxTmplMsgLogic {
  17. return &SendWxTmplMsgLogic{
  18. ctx: ctx,
  19. svcCtx: svcCtx,
  20. Logger: logx.WithContext(ctx),
  21. }
  22. }
  23. // SendWxTmplMsg 发送剑鱼微信模版消息
  24. func (l *SendWxTmplMsgLogic) SendWxTmplMsg(in *message.WxTmplMsgRequest) (*message.SendMsgResponse, error) {
  25. uFlag := 0
  26. var userArr []string
  27. if in.UserIds != "" {
  28. userArr, uFlag = strings.Split(in.UserIds, ","), 1
  29. } else if in.PositionIds != "" {
  30. userArr, uFlag = strings.Split(in.PositionIds, ","), 2
  31. }
  32. messageTotal, messageSendOk := len(userArr), 0
  33. if len(userArr) == 0 {
  34. return &message.SendMsgResponse{
  35. Total: 0,
  36. Message: "用户列表为空",
  37. }, nil
  38. }
  39. pushConfig, err := common.GetWxTmplConfig(in.MessageClass)
  40. if err != nil {
  41. return &message.SendMsgResponse{
  42. Total: 0,
  43. Message: err.Error(),
  44. }, nil
  45. }
  46. for index, uId := range userArr {
  47. if uId == "" {
  48. continue
  49. }
  50. p := &common.WxTmplPush{
  51. Config: pushConfig,
  52. }
  53. if uFlag == 1 {
  54. p.MgoId = uId
  55. } else if uFlag == 2 {
  56. p.Position = uId
  57. }
  58. // 消息模版 工单类型 {{thing19.DATA}} 工单标题 {{thing6.DATA}} 项目名称 {{thing13.DATA}} 服务时间 {{time25.DATA}} 服务地址 {{thing26.DATA}}
  59. err = p.SendMsg(in.Url, in.Title, in.Detail, in.Date)
  60. if err != nil {
  61. logx.Error(err)
  62. } else {
  63. messageSendOk++
  64. }
  65. if index%10 == 0 {
  66. logx.Infof("共%d条,已送达%d条,失败%d条", messageTotal, messageSendOk, messageTotal-messageSendOk)
  67. }
  68. }
  69. if messageTotal == 1 {
  70. return &message.SendMsgResponse{
  71. Total: util.Int64All(messageSendOk),
  72. Message: err.Error(),
  73. }, nil
  74. } else {
  75. logx.Infof("共%d条,已送达%d条,失败%d条", messageTotal, messageSendOk, messageTotal-messageSendOk)
  76. return &message.SendMsgResponse{
  77. Total: util.Int64All(messageSendOk),
  78. }, nil
  79. }
  80. return &message.SendMsgResponse{}, nil
  81. }