123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- package yb
- import (
- "errors"
- "hongze/hz_crm_api/models"
- "hongze/hz_crm_api/models/company"
- "hongze/hz_crm_api/models/system"
- ybModels "hongze/hz_crm_api/models/yb"
- "hongze/hz_crm_api/models/yb/request"
- ybResp "hongze/hz_crm_api/models/yb/response"
- "hongze/hz_crm_api/utils"
- "strconv"
- "strings"
- "time"
- )
- // 查询当前操作用户是否留言板管理员权限
- func CheckCommentPermission(adminId int) (brMsg, brErrMsg string) {
- // 查询留言管理员的角色ID
- roleInfo, err := system.GetSysRoleByRoleTypeCode("yb_comment_admin")
- if err != nil {
- if err.Error() == utils.ErrNoRow() {
- brMsg = "该角色不存在!"
- brErrMsg = "该角色不存在,Err:" + err.Error()
- return
- } else {
- brMsg = "查询角色信息失败!"
- brErrMsg = "查询角色信息失败,Err:" + err.Error()
- return
- }
- }
- _, err = system.GetRoleIdsByAdminIdRoleId(adminId, roleInfo.RoleId)
- if err != nil {
- brMsg = "无权操作"
- brErrMsg = "无权操作,Err:" + err.Error()
- return
- }
- return
- }
- // GetProductComments 获取板块里的列表
- func GetProductComments(adminId int, productType, keyWord, createDate string, startSize, pageSize int) (list []*ybResp.ProductCommentItemResp, total int64, err error, errMsg string) {
- condition := ""
- pars := make([]interface{}, 0)
- if productType != "" {
- condition += ` AND t.product_type = ? `
- pars = append(pars, productType)
- }
- if keyWord != "" {
- likeKey := `%` + keyWord + `%`
- condition += ` AND t.content like ? `
- pars = append(pars, likeKey)
- }
- if createDate != "" {
- createTime, _ := time.Parse(utils.FormatDate, createDate)
- nextTime := createTime.AddDate(0, 0, 1)
- condition += " and t.create_time >= ? and t.create_time < ?"
- pars = append(pars, createTime, nextTime)
- }
- // 获取数据列表
- var tmpList []*ybModels.ProductCommentItem
- tmpList, total, err = ybModels.GetProductCommentList(condition, pars, startSize, pageSize)
- if err != nil {
- errMsg = "获取评论列表失败,Err:" + err.Error()
- err = errors.New("获取评论列表失败!")
- return
- }
- var reportCommentIds string
- var reportIds string
- var userIds string
- questionIds := make([]int, 0)
- videoIds := make([]int, 0)
- roadVideoIds := make([]int, 0)
- for _, v := range tmpList {
- if v.ProductType == 1 {
- // 报告
- reportCommentIds += "," + strconv.Itoa(v.CommentId)
- if v.ReportId > 0 {
- reportIds += "," + strconv.Itoa(v.ReportId)
- }
- } else if v.ProductType == 2 {
- // 问答社区
- if v.CommunityQuestionId > 0 {
- questionIds = append(questionIds, v.CommunityQuestionId)
- }
- } else if v.ProductType == 3 {
- // 视频社区
- if v.CommunityQuestionId > 0 {
- videoIds = append(videoIds, v.CommunityQuestionId)
- }
- } else if v.ProductType == 4 {
- // 路演视频
- if v.CommunityQuestionId > 0 {
- roadVideoIds = append(roadVideoIds, v.CommunityQuestionId)
- }
- }
- userIds += "," + strconv.Itoa(v.UserId)
- }
- // 查询所有的回复列表
- replyListMap := make(map[int][]*ybResp.ReplyItem)
- if reportCommentIds != "" {
- reportCommentIds = "(" + strings.Trim(reportCommentIds, ",") + ")"
- replyList, tErr := ybModels.GetReplyByReplyCommentIds(reportCommentIds)
- if tErr != nil {
- errMsg = "获取回复列表失败,Err:" + tErr.Error()
- err = errors.New("获取回复列表失败")
- return
- }
- for _, v := range replyList {
- t := new(ybResp.ReplyItem)
- t.CommentId = v.CommentId
- t.Content = v.Content
- t.AdminId = v.AdminId
- t.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
- t.AdminName = "admin"
- t.AdminImgUrl = utils.DEFAULT_HONGZE_SYS_LOGO
- t.ReplyCommentId = v.ReplyCommentId
- replyListMap[int(v.ReplyCommentId)] = append(replyListMap[int(v.ReplyCommentId)], t)
- }
- }
- // 查询报告标题,带日期
- reportMap := make(map[int]*models.ReportDetail)
- if reportIds != "" {
- reportIds = "(" + strings.Trim(reportIds, ",") + ")"
- reportList, tErr := models.GetReportByIds(reportIds)
- if tErr != nil {
- errMsg = "获取报告列表失败,Err:" + tErr.Error()
- err = errors.New("获取报告列表失败")
- return
- }
- for _, v := range reportList {
- reportMap[v.Id] = v
- }
- }
- // 查询问答内容
- questionMap := make(map[int]*ybModels.CommunityQuestion)
- if len(questionIds) > 0 {
- questionList, tErr := ybModels.GetQuestionByIds(questionIds)
- if tErr != nil {
- errMsg = "获取问答列表失败,Err:" + tErr.Error()
- err = errors.New("获取问答列表失败")
- return
- }
- for _, v := range questionList {
- questionMap[v.CommunityQuestionId] = v
- }
- }
- // 查询视频内容
- videoMap := make(map[int]*ybModels.CommunityVideo)
- if len(videoIds) > 0 {
- vdList, e := ybModels.GetCommunityVideoListByIds(videoIds)
- if e != nil {
- errMsg = "获取视频列表失败, Err:" + e.Error()
- err = errors.New("获取视频列表失败")
- return
- }
- for _, v := range vdList {
- videoMap[v.CommunityVideoId] = v
- }
- }
- // 查询路演视频内容
- roadVideoMap := make(map[int]*ybModels.RoadVideo)
- if len(roadVideoIds) > 0 {
- rvList, e := ybModels.GetRoadVideoListByIds(roadVideoIds)
- if e != nil {
- errMsg = "获取路演视频列表失败, Err:" + e.Error()
- err = errors.New("获取路演视频列表失败")
- return
- }
- for _, v := range rvList {
- roadVideoMap[v.RoadVideoId] = v
- }
- }
- // 查询联系人相关信息
- var userOthers []*models.WxUser
- if len(userIds) > 0 {
- userOthers, err = models.GetWxUserListByUserIds(strings.Trim(userIds, ","))
- if err != nil {
- errMsg = "查询用户出错,Err:" + err.Error()
- err = errors.New("查询用户出错")
- return
- }
- }
- //查询客户相关信息
- usersMap := make(map[int]*models.WxUser)
- companyIdMap := make(map[int]int)
- companyIdList := make([]int, 0)
- for _, v := range userOthers {
- usersMap[int(v.UserId)] = v
- if _, ok := companyIdMap[v.CompanyId]; !ok { //避免company_id重复append
- companyIdList = append(companyIdList, v.CompanyId)
- companyIdMap[v.CompanyId] = v.CompanyId
- }
- }
- // 查询相关用户的公司
- companyProductMap := make(map[int]*company.CompanyProduct)
- {
- if len(companyIdList) > 0 {
- var companyProductOthers []*company.CompanyProduct
- companyProductOthers, err = company.GetCompanyProductsByCompanyIdsAndProductId(companyIdList, 1)
- if err != nil {
- errMsg = "查询客户出错,Err:" + err.Error()
- err = errors.New("查询客户出错")
- return
- }
- for _, v := range companyProductOthers {
- companyProductMap[v.CompanyId] = v
- }
- }
- }
- // 将留言评论全部设置成已读
- err = ybModels.UpdateCommentSysIsRead(adminId)
- if err != nil {
- errMsg = "更新已读出错,Err:" + err.Error()
- err = errors.New("更新已读出错")
- return
- }
- list = make([]*ybResp.ProductCommentItemResp, 0)
- for _, v := range tmpList {
- tmp := new(ybResp.ProductCommentItemResp)
- tmp.UserId = v.UserId
- tmp.ReportId = v.ReportId
- tmp.ReportChapterId = v.ReportChapterId
- tmp.CommunityQuestionId = v.CommunityQuestionId
- tmp.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
- if v.ProductType == 1 {
- tmp.ProductName = "研报"
- if v.ReportId > 0 {
- if rep, ok := reportMap[v.ReportId]; ok {
- if rep.VideoName == "" {
- tt, _ := time.ParseInLocation(utils.FormatDateTime, rep.PublishTime, time.Local)
- ttStr := tt.Format(utils.FormatMonthDayUnSpace)
- tmp.Title = rep.Title + `(` + ttStr + `)`
- } else {
- tmp.Title = rep.VideoName
- }
- }
- }
- } else if v.ProductType == 2 {
- tmp.ProductName = "问答社区"
- if que, ok := questionMap[v.CommunityQuestionId]; ok {
- tmp.Title = que.QuestionContent
- }
- } else if v.ProductType == 3 {
- tmp.ProductName = "视频社区"
- if vd, ok := videoMap[v.CommunityQuestionId]; ok {
- tmp.Title = vd.Title
- }
- } else if v.ProductType == 4 {
- tmp.ProductName = "线上路演"
- if rv, ok := roadVideoMap[v.CommunityQuestionId]; ok {
- tmp.Title = rv.Title
- }
- }
- tmp.Content = v.Content
- tmp.ProductType = v.ProductType
- tmp.RealName = v.RealName
- tmp.CommentId = v.CommentId
- tmp.IsTop = v.IsTop
- if existList, ok := replyListMap[v.CommentId]; ok && v.ProductType == 1 {
- tmp.ReplyList = existList
- }
- if info, ok := usersMap[v.UserId]; ok {
- tmp.RealName = info.RealName
- //客户信息
- if companyProductInfo, ok1 := companyProductMap[info.CompanyId]; ok1 {
- tmp.CompanyId = companyProductInfo.CompanyId
- tmp.CompanyName = companyProductInfo.CompanyName
- tmp.CompanyStatus = companyProductInfo.Status
- tmp.SellerName = companyProductInfo.SellerName
- }
- }
- list = append(list, tmp)
- }
- return
- }
- // DelProductComments 删除板块合辑里的留言
- func DelProductComments(req request.CommentProductDelReq) (err error, errMsg string) {
- //查询评论状态,
- if req.ProductType == 1 {
- commentInfo, tErr := ybModels.GetCommentByCommentId(req.CommentId)
- if tErr != nil {
- if tErr.Error() == utils.ErrNoRow() {
- errMsg = "留言不存在或者已删除"
- err = errors.New("留言不存在或者已删除")
- return
- }
- errMsg = "查询留言失败!,Err:" + tErr.Error()
- err = errors.New("查询留言失败!")
- return
- }
- if commentInfo.Type == 1 { //删除留言
- err = ybModels.DeleteComment(req.CommentId)
- if err != nil {
- errMsg = "删除留言操作失败!,Err:" + err.Error()
- err = errors.New("删除留言操作失败!")
- return
- }
- } else { // 删除回复
- err = ybModels.DeleteCommentReply(req.CommentId)
- if err != nil {
- errMsg = "删除回复操作失败!,Err:" + err.Error()
- err = errors.New("删除回复操作失败!")
- return
- }
- }
- } else { //删除问答社区/视频社区/线上路演评论
- err, errMsg = DeleteQuestionComment(req.CommentId)
- return
- }
- return
- }
|