autoreply.go 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package autoreply
  2. import (
  3. "errors"
  4. "strings"
  5. "wechat-conf/models"
  6. "wechat-conf/models/autoreply"
  7. "wechat-conf/models/model"
  8. "wechat-conf/service"
  9. "wechat-conf/utils"
  10. )
  11. // AutoreplyServ 用户
  12. type AutoreplyServ struct {
  13. ctx *utils.Context
  14. dao *autoreply.AutoreplyDAO
  15. }
  16. // NewAutoreplyServ 初始化
  17. func NewAutoreplyServ(ctx *utils.Context) *AutoreplyServ {
  18. return &AutoreplyServ{
  19. ctx: ctx,
  20. dao: autoreply.NewAutoreplyDAO(ctx),
  21. }
  22. }
  23. func (s *AutoreplyServ) GetAutoReplyList(orgId, autoType string, page, pageSize int) (map[string]interface{}, error) {
  24. if pageSize == 0 {
  25. pageSize = service.PAGENUM
  26. }
  27. autoreply, err := s.dao.GetAutoReplyList(orgId, autoType, page, pageSize)
  28. if err != nil {
  29. utils.LogError("获取自动回复列表失败: " + err.Error())
  30. return nil, errors.New("获取自动回复列表失败")
  31. }
  32. total, err := s.dao.GetAutoReplyListCount(orgId, autoType)
  33. if err != nil {
  34. utils.LogError("获取自动回复列表失败: " + err.Error())
  35. return nil, errors.New("获取自动回复列表失败")
  36. }
  37. return map[string]interface{}{
  38. "list": autoreply,
  39. "pageSize": pageSize,
  40. "pagenum": total,
  41. "page": page,
  42. }, nil
  43. }
  44. func (s *AutoreplyServ) GetAutoReplyById(autoReplyId string) (*model.TaAutoReply, error) {
  45. autoreply, err := s.dao.GetAutoReplyById(autoReplyId)
  46. if err != nil {
  47. utils.LogError("获取自动回复详情失败: " + err.Error())
  48. return nil, errors.New("获取自动回复详情失败")
  49. }
  50. return autoreply, nil
  51. }
  52. func (s *AutoreplyServ) SaveAutoReply(autoreply model.TaAutoReply, orgId string) (*model.TaAutoReply, error) {
  53. var newAutoreply *model.TaAutoReply
  54. var err error
  55. // if autoreply.RuleName == "" {
  56. // return nil, errors.New("规则名不能为空")
  57. // }
  58. // if autoreply.AutoType == models.AUTOREPLY_KEYWORDS && autoreply.Keywords == "" {
  59. // return nil, errors.New("关键词不能为空")
  60. // }
  61. // if autoreply.PairType == "" {
  62. // return nil, errors.New("匹配规则不能为空")
  63. // }
  64. // if autoreply.MessageType == models.MESSAGE_TYPE_CONTENT && autoreply.MessageContent == "" {
  65. // return nil, errors.New("图文不能为空")
  66. // }
  67. // if autoreply.MessageType == models.MESSAGE_TYPE_IMG && autoreply.MessageImg == "" {
  68. // return nil, errors.New("图片不能为空")
  69. // }
  70. if autoreply.AutoReplyId == "" {
  71. autoreply.OrgId = orgId
  72. newAutoreply, err = s.dao.AddAutoReply(autoreply)
  73. } else {
  74. err = s.dao.DeleteKeywords(autoreply.AutoReplyId)
  75. err = s.dao.UpdateAutoRelpy(autoreply)
  76. newAutoreply = &autoreply
  77. }
  78. if autoreply.AutoType == models.AUTOREPLY_KEYWORDS {
  79. keywords := strings.Split(autoreply.Keywords, ",")
  80. for i := 0; i < len(keywords); i++ {
  81. var keyword = model.TaAutoReplyKeywords{
  82. AutoReplyId: newAutoreply.AutoReplyId,
  83. Keywords: keywords[i],
  84. }
  85. err = s.dao.AddKeyword(keyword)
  86. }
  87. if err != nil {
  88. utils.LogError("保存自动回复失败: " + err.Error())
  89. return nil, errors.New("保存自动回复失败")
  90. }
  91. }
  92. return newAutoreply, nil
  93. }
  94. func (s *AutoreplyServ) DeleteAutoReply(autoreplyId string) error {
  95. err := s.dao.DeleteAutoReply(autoreplyId)
  96. err = s.dao.DeleteKeywords(autoreplyId)
  97. if err != nil {
  98. utils.LogError("删除自动回复失败: " + err.Error())
  99. return errors.New("删除自动回复失败")
  100. }
  101. return nil
  102. }
  103. // GetAutoReplayByAppID 获取自动回复消息
  104. func (s *AutoreplyServ) GetAutoReplayByAppID(appid, val string) (*model.TaAutoReply, error) {
  105. autoReplay, err := s.dao.GetAutoReplayByAppID(appid, val)
  106. if err != nil {
  107. utils.LogError("获取自动回复消息失败: " + err.Error())
  108. return nil, errors.New("获取自动回复消息失败")
  109. }
  110. return autoReplay, err
  111. }
  112. // GetSubscribeByAppID 获取关注回复消息
  113. func (s *AutoreplyServ) GetSubscribeByAppID(appid string) (*model.TaAutoReply, error) {
  114. autoReplay, err := s.dao.GetSubscribeByAppID(appid)
  115. if err != nil {
  116. utils.LogError("获取关注回复消息失败: " + err.Error())
  117. return nil, errors.New("获取关注回复消息失败")
  118. }
  119. return autoReplay, err
  120. }
  121. func (s *AutoreplyServ) DisableAutoreply(autoType, orgId, isUse string) error {
  122. err := s.dao.DisableAutoreply(autoType, orgId, isUse)
  123. if err != nil {
  124. utils.LogError("修改状态失败: " + err.Error())
  125. return errors.New("修改状态失败")
  126. }
  127. return nil
  128. }