123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- package comment
- import (
- "errors"
- "fmt"
- "hongze/hongze_yb/global"
- reqComment "hongze/hongze_yb/models/request/comment"
- "hongze/hongze_yb/models/response"
- "hongze/hongze_yb/models/tables/wx_user"
- "hongze/hongze_yb/models/tables/yb_comment"
- "hongze/hongze_yb/services"
- "hongze/hongze_yb/services/user"
- "hongze/hongze_yb/services/wx_app"
- "hongze/hongze_yb/utils"
- "strconv"
- "time"
- )
- // Comment 发布留言
- func Comment(user user.UserInfo, req reqComment.ReqComment) (ret response.RespCommentAdd, err error) {
- var errMsg string
- defer func() {
- if err != nil {
- global.LOG.Critical(fmt.Sprintf("Comment: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
- }
- }()
- //校验请求入参
- if req.IsShowName != 0 && req.IsShowName != 1 {
- err = errors.New("匿名设置出错")
- return
- }
- if req.Content == "" {
- err = errors.New("请输入留言内容")
- return
- }
- reportId := req.ReportId
- reportChapterId := req.ReportChapterId
- if req.SourceAgent == 0 {
- err = errors.New("请输入留言来源")
- return
- }
- if req.ReportChapterId <=0 && req.ReportId <=0 && req.OldReportId <=0 && req.OldReportChapterId <=0{
- err = errors.New("请输入报告ID")
- return
- }
- if req.ReportId <=0 && req.OldReportId <= 0 {
- err = errors.New("请输入报告ID")
- return
- }
- // 敏感词过滤
- if user.RecordInfo.OpenID != "" && user.RecordInfo.CreatePlatform == 6 { //只有小程序的用户才能走敏感词过滤接口
- checkResult, tErr := wx_app.MsgSecCheck(user.RecordInfo.OpenID, req.Content)
- /*if tErr != nil {
- errMsg = "敏感词过滤失败" + tErr.Error()
- err = errors.New("敏感词过滤失败")
- return
- }*/
- if tErr == nil {
- if checkResult.Result != nil {
- if checkResult.Result.Suggest != "pass" {
- errMsg = "含有违禁词,不允许发布:" + checkResult.Result.Suggest +".命中标签:"+strconv.Itoa(checkResult.Result.Label)
- err = errors.New("含有违禁词,不允许发布。")
- return
- }
- }
- }
- }
- // 判断是否有留言权限
- err, errMsg = services.CheckSimpleCompanyProduct(user)
- if err != nil {
- return
- }
- //处理老报告, 转化成新报告ID
- if req.ReportChapterId <=0 && req.ReportId <=0 && (req.OldReportId >0 || req.OldReportChapterId > 0) {
- reportId, reportChapterId, err, errMsg = services.GetReportIdReportChapterIdByOldReportId(uint64(req.OldReportId), uint64(req.OldReportChapterId))
- if err != nil {
- return
- }
- } else {
- // 判断报告ID是否正确
- err, errMsg = services.CheckReportExistByReportIdReportChapterId(reportId, reportChapterId)
- if err != nil {
- return
- }
- }
- //新增留言
- now := time.Now()
- commentInfo := &yb_comment.YbComment{
- UserId: user.UserID,
- RealName: user.RealName,
- Content: req.Content,
- ReportId: reportId,
- ReportChapterId: reportChapterId,
- IsShowName: req.IsShowName,
- SourceAgent: req.SourceAgent,
- Type: 1,
- Enabled: 1,
- CreateTime: now,
- ModifyTime: now,
- OldReportId: req.OldReportId,
- OldReportChapterId: req.OldReportChapterId,
- IsHot: 1,
- HotTopTime: time.Now(),
- }
- err = commentInfo.Create()
- if err != nil {
- errMsg = err.Error()
- err = errors.New("新增留言出错")
- return
- }
- ret.CommentId = commentInfo.CommentId
- return
- }
- // Delete 删除留言
- func Delete(user user.UserInfo, req *reqComment.ReqDel) (err error) {
- var errMsg string
- defer func() {
- if err != nil {
- global.LOG.Critical(fmt.Sprintf("comment Delete: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
- }
- }()
- if req.CommentId <= 0 {
- err = errors.New("请输入留言ID")
- return
- }
- //校验请求入参
- commentInfo, err := yb_comment.GetSimpleByCommentId(req.CommentId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询留言出错")
- return
- }
- if commentInfo.CommentId <= 0 {
- err = errors.New("留言不存在")
- return
- }
- if commentInfo.UserId != user.UserID {
- err = errors.New("不允许删除他人的留言")
- return
- }
- if commentInfo.Type != 1 {
- err = errors.New("不允许删除回复")
- return
- }
- err = yb_comment.Delete(user.UserID, commentInfo.CommentId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("删除留言出错")
- return
- }
- return
- }
- // MyList 我的留言列表
- func MyList(user user.UserInfo, reportId, reportChapterId, oldReportId, oldReportChapterId int) (ret response.RespMyCommentList, err error) {
- list, err := List(user, reportId, reportChapterId, oldReportId, oldReportChapterId, false, 0, 0)
- if err != nil {
- return
- }
- //查询我的最新一条留言是否勾选匿名的设置
- lastComment, tErr := yb_comment.GetMyLatestComment(user.UserID)
- if tErr == nil {
- ret.IsShowName = lastComment.IsShowName
- }
- ret.List = list.List
- return
- }
- // List 查询精选留言列表或我的留言列表
- func List(user user.UserInfo, reportId, reportChapterId, oldReportId, oldReportChapterId int, hotFlag bool, pageIndex, pageSize int) (ret response.RespCommentList, err error) {
- var errMsg string
- defer func() {
- if err != nil {
- global.LOG.Critical(fmt.Sprintf("comment List: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
- }
- }()
- if reportId <=0 && reportChapterId <=0 && oldReportId <=0 && oldReportChapterId <=0{
- err = errors.New("请输入报告ID")
- return
- }
- if reportId <=0 && oldReportId <= 0 {
- err = errors.New("请输入报告ID")
- return
- }
- //处理老报告, 转化成新报告ID
- if reportId <=0 && reportChapterId <=0 && (oldReportId >0 || oldReportChapterId > 0) {
- reportId, reportChapterId, err, errMsg = services.GetReportIdReportChapterIdByOldReportId(uint64(oldReportId), uint64(oldReportChapterId))
- if err != nil {
- return
- }
- } else {
- // 判断报告ID是否正确
- err, errMsg = services.CheckReportExistByReportIdReportChapterId(reportId, reportChapterId)
- if err != nil {
- return
- }
- }
- offset := (pageIndex -1)*pageSize
- var commentList []*yb_comment.YbComment
- var total int64
- //查询精选留言
- if hotFlag {
- if reportId > 0 {
- commentList, err = yb_comment.GetHotListByReportId(reportId, reportChapterId, offset, pageSize)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言列表出错")
- return
- }
- total, err = yb_comment.GetHotListTotalByReportId(reportId, reportChapterId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言总数出错")
- return
- }
- }else {
- commentList, err = yb_comment.GetHotListByOldReportId(oldReportId, oldReportChapterId, offset, pageSize)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言列表出错")
- return
- }
- total, err = yb_comment.GetHotListTotalByOldReportId(oldReportId, oldReportChapterId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言总数出错")
- return
- }
- }
- } else {
- //查询个人留言
- if reportId > 0{
- commentList, err = yb_comment.GetListByUserIdReportId(user.UserID, reportId, reportChapterId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言列表出错")
- return
- }
- }else {
- commentList, err = yb_comment.GetListByUserIdOldReportId(user.UserID, oldReportId, oldReportChapterId)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言列表出错")
- return
- }
- }
- }
- var commentIds []uint64
- var userIds []uint64
- for _, v := range commentList {
- commentIds = append(commentIds, v.CommentId)
- userIds = append(userIds, v.UserId)
- }
- // 查询所有的回复列表
- replyListMap := make(map[uint64][]*response.ReplyItem)
- if len(commentIds) > 0 {
- replyList, tErr := yb_comment.GetReplyListByReplyCommentId(commentIds)
- if tErr != nil {
- errMsg = tErr.Error()
- err = errors.New("查询回复出错")
- return
- }
- for _, v := range replyList {
- t := new(response.ReplyItem)
- t.CommentId = v.CommentId
- t.Content = v.Content
- t.AdminId = v.AdminId
- t.CreateTime = v.CreateTime
- t.ReplyCommentId = v.ReplyCommentId
- t.AdminName = "弘则研究"
- t.AdminImgUrl = utils.DEFAULT_HONGZE_SYS_LOGO
- replyListMap[v.ReplyCommentId] = append(replyListMap[v.ReplyCommentId], t)
- }
- }
- // 查询精选留言相关的用户
- var userOthers []*wx_user.WxUser
- if len(userIds) > 0 {
- userOthers, err = wx_user.GetByUserIds(userIds)
- if err != nil {
- errMsg = err.Error()
- err = errors.New("查询精选留言用户出错")
- return
- }
- }
- usersMap := make(map[uint64]*wx_user.WxUser)
- for _, v := range userOthers {
- usersMap[v.UserID] = v
- }
- var list []*response.RespCommentItem
- for _, v := range commentList {
- tmp := new(response.RespCommentItem)
- tmp.CommentId = v.CommentId
- tmp.UserId = v.UserId
- tmp.UserName = "匿名用户"+strconv.Itoa(int(3333+v.UserId))
- tmp.UserImgUrl = utils.DEFAULT_HONGZE_USER_LOGO
- if info, ok := usersMap[v.UserId]; ok && v.IsShowName == 1{
- tmp.UserName = info.NickName
- tmp.UserImgUrl = info.Headimgurl
- }
- tmp.Content = v.Content
- tmp.IsHot = v.IsHot
- tmp.IsTop = v.IsTop
- tmp.HotTopTime = v.HotTopTime
- tmp.CreateTime = v.CreateTime
- tmp.IsShowName = v.IsShowName
- if existList, ok := replyListMap[v.CommentId]; ok {
- tmp.ReplyList = existList
- }
- list = append(list, tmp)
- }
- ret.List = list
- if hotFlag {
- ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
- }
- return
- }
|