package autoreply import ( "errors" "strings" "wechat-conf/models" "wechat-conf/models/autoreply" "wechat-conf/models/model" "wechat-conf/service" "wechat-conf/utils" ) // AutoreplyServ 用户 type AutoreplyServ struct { ctx *utils.Context dao *autoreply.AutoreplyDAO } // NewAutoreplyServ 初始化 func NewAutoreplyServ(ctx *utils.Context) *AutoreplyServ { return &AutoreplyServ{ ctx: ctx, dao: autoreply.NewAutoreplyDAO(ctx), } } func (s *AutoreplyServ) GetAutoReplyList(orgId, autoType string, page, pageSize int) (map[string]interface{}, error) { if pageSize == 0 { pageSize = service.PAGENUM } autoreply, err := s.dao.GetAutoReplyList(orgId, autoType, page, pageSize) if err != nil { utils.LogError("获取自动回复列表失败: " + err.Error()) return nil, errors.New("获取自动回复列表失败") } total, err := s.dao.GetAutoReplyListCount(orgId, autoType) if err != nil { utils.LogError("获取自动回复列表失败: " + err.Error()) return nil, errors.New("获取自动回复列表失败") } return map[string]interface{}{ "list": autoreply, "pageSize": pageSize, "pagenum": total, "page": page, }, nil } func (s *AutoreplyServ) GetAutoReplyById(autoReplyId string) (*model.TaAutoReply, error) { autoreply, err := s.dao.GetAutoReplyById(autoReplyId) if err != nil { utils.LogError("获取自动回复详情失败: " + err.Error()) return nil, errors.New("获取自动回复详情失败") } return autoreply, nil } func (s *AutoreplyServ) SaveAutoReply(autoreply model.TaAutoReply, orgId string) (*model.TaAutoReply, error) { var newAutoreply *model.TaAutoReply var err error if autoreply.AutoReplyId == "" { autoreply.OrgId = orgId newAutoreply, err = s.dao.AddAutoReply(autoreply) } else { err = s.dao.DeleteKeywords(autoreply.AutoReplyId) err = s.dao.UpdateAutoRelpy(autoreply) newAutoreply = &autoreply } if autoreply.AutoType == models.AUTOREPLY_KEYWORDS { keywords := strings.Split(autoreply.Keywords, ",") for i := 0; i < len(keywords); i++ { var keyword = model.TaAutoReplyKeywords{ AutoReplyId: newAutoreply.AutoReplyId, Keywords: keywords[i], } err = s.dao.AddKeyword(keyword) } if err != nil { utils.LogError("保存自动回复失败: " + err.Error()) return nil, errors.New("保存自动回复失败") } } return newAutoreply, nil } func (s *AutoreplyServ) DeleteAutoReply(autoreplyId string) error { err := s.dao.DeleteAutoReply(autoreplyId) err = s.dao.DeleteKeywords(autoreplyId) if err != nil { utils.LogError("删除自动回复失败: " + err.Error()) return errors.New("删除自动回复失败") } return nil } // GetAutoReplayByAppID 获取自动回复消息 func (s *AutoreplyServ) GetAutoReplayByAppID(appid, val string) (*model.TaAutoReply, error) { autoReplay, err := s.dao.GetAutoReplayByAppID(appid, val) if err != nil { utils.LogError("获取自动回复消息失败: " + err.Error()) return nil, errors.New("获取自动回复消息失败") } return autoReplay, err } // GetSubscribeByAppID 获取关注回复消息 func (s *AutoreplyServ) GetSubscribeByAppID(appid string) (*model.TaAutoReply, error) { autoReplay, err := s.dao.GetSubscribeByAppID(appid) if err != nil { utils.LogError("获取关注回复消息失败: " + err.Error()) return nil, errors.New("获取关注回复消息失败") } return autoReplay, err } func (s *AutoreplyServ) DisableAutoreply(autoType, orgId, isUse string) error { err := s.dao.DisableAutoreply(autoType, orgId, isUse) if err != nil { utils.LogError("修改状态失败: " + err.Error()) return errors.New("修改状态失败") } return nil }