123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 |
- package yb
- import (
- "github.com/rdlucklib/rdluck_tools/paging"
- "hongze/hz_crm_api/controllers"
- "hongze/hz_crm_api/models"
- "hongze/hz_crm_api/models/company"
- "hongze/hz_crm_api/models/yb"
- ybResp "hongze/hz_crm_api/models/yb/response"
- ybService "hongze/hz_crm_api/services/yb"
- "hongze/hz_crm_api/utils"
- "strconv"
- "strings"
- "time"
- )
- type LikeController struct {
- controllers.BaseAuthController
- }
- // ReportList
- // @Title 获取已被点赞的报告列表
- // @Description 获取已被点赞的报告列表
- // @Param SortParam query string false "排序关键词:LikeNum"
- // @Param SortType query string false "排序顺序:asc、desc"
- // @Param PageSize query string false "每页展示的记录数"
- // @param CurrentIndex query string false "页码"
- // @Success 200 {object} ybResp.LikeReportListResp
- // @router /like/report/list [get]
- func (this *LikeController) ReportList() {
- br := new(models.BaseResponse).Init()
- defer func() {
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser is Empty"
- br.Ret = 408
- return
- }
- pageSize, _ := this.GetInt("PageSize")
- currentIndex, _ := this.GetInt("CurrentIndex")
- var startSize int
- if pageSize <= 0 {
- pageSize = utils.PageSize20
- }
- if currentIndex <= 0 {
- currentIndex = 1
- }
- startSize = paging.StartIndex(currentIndex, pageSize)
- //todo 判断查询权限
- brMsg, brErrMsg := ybService.CheckCommentPermission(sysUser.AdminId)
- if brMsg != "" {
- br.Msg = brMsg
- br.ErrMsg = brErrMsg
- return
- }
- orderStr := ""
- orderType := ""
- reqSortParam := this.GetString("SortParam", "")
- if reqSortParam != "" {
- }
- reqSortType := this.GetString("SortType")
- if reqSortType != "" && reqSortParam == "LikeNum" {
- orderType = reqSortType
- }
- likeList, err := yb.GetLikeReportIds(orderType)
- if err != nil {
- br.Msg = "获取报告ID失败!"
- br.ErrMsg = "获取报告ID失败,Err:" + err.Error()
- return
- }
- if len(likeList) == 0 {
- page := paging.GetPaging(currentIndex, pageSize, 0)
- data := &ybResp.LikeReportListResp{
- Paging: page,
- }
- br.Ret = 200
- br.Success = true
- br.Msg = "操作成功"
- br.Data = data
- return
- }
- reportIds := "0"
- reportChapterIds := "0"
- reportChapterConcat := ""
- LikeNumMap := make(map[string]int)
- LikeTimeMap := make(map[string]time.Time)
- dayWeekReportIds := ""
- for _, v := range likeList {
- reportIdStr := strconv.Itoa(v.ReportId)
- reportChapterIdStr := strconv.Itoa(v.ReportChapterId)
- // 过滤晨报和周报报告ID
- if v.ReportChapterId == 0 {
- reportIds += "," + reportIdStr
- }
- // 过滤章节ID为0的值
- if reportChapterIdStr != "0" {
- dayWeekReportIds += "," + reportIdStr
- reportChapterIds += "," + reportChapterIdStr
- }
- concat := reportIdStr + "-" + reportChapterIdStr
- reportChapterConcat += `,"` + concat + `"`
- LikeNumMap[concat] = v.LikeNum
- LikeTimeMap[concat] = v.ModifyTime
- }
- if reportChapterConcat != "" {
- reportChapterConcat = strings.Trim(reportChapterConcat, ",")
- }
- //根据入参判断是否需要按照点赞数排序
- if reqSortParam == "LikeNum" {
- orderStr = reportChapterConcat
- }
- reportList, err := models.GetLikeReportByReportIdReportChapterId(reportIds, reportChapterIds, orderStr, startSize, pageSize)
- if err != nil {
- br.Msg = "获取报告失败!"
- br.ErrMsg = "获取报告失败,Err:" + err.Error()
- return
- }
- //查询晨报周报的总标题
- dayWeekTitleMap := make(map[int]string)
- if dayWeekReportIds != "" {
- dayWeekReportIds = strings.Trim(dayWeekReportIds, ",")
- dayWeekReports, tErr := models.GetSimpleReportByIds(dayWeekReportIds)
- if tErr != nil {
- br.Msg = "获取报告失败!"
- br.ErrMsg = "获取报告失败,Err:" + tErr.Error()
- return
- }
- for _, v := range dayWeekReports {
- dayWeekTitleMap[v.Id] = v.Title
- }
- }
- var list []*ybResp.LikeReportListItem
- for _, v := range reportList {
- tmp := new(ybResp.LikeReportListItem)
- concat := strconv.Itoa(v.ReportId) + "-" + strconv.Itoa(v.ReportChapterId)
- tmp.ReportId = v.ReportId
- tmp.ReportChapterId = v.ReportChapterId
- tmp.ClassifyIdFirst = v.ClassifyIdFirst
- tmp.ClassifyNameFirst = v.ClassifyNameFirst
- tmp.PublishTime = v.PublishTime.Format(utils.FormatDateTime)
- // todo 晨周报需要展示大标题
- if tmp.ReportChapterId > 0 {
- if t, ok := dayWeekTitleMap[v.ReportId]; ok {
- tmp.Title = t
- }
- } else {
- tmp.Title = v.Title
- }
- tmp.ReportChapterTypeName = v.ReportChapterTypeName
- if t, ok := LikeTimeMap[concat]; ok {
- tmp.ModifyTime = t.Format(utils.FormatDateTime)
- }
- if n, ok := LikeNumMap[concat]; ok {
- tmp.LikeNum = n
- }
- list = append(list, tmp)
- }
- // 获取列表分页总数
- total, err := models.GetLikeReportTotalByReportIdReportChapterId(reportIds, reportChapterIds)
- if err != nil {
- br.Msg = "获取留言列表总数失败!"
- br.ErrMsg = "获取留言列表总数失败,Err:" + err.Error()
- return
- }
- page := paging.GetPaging(currentIndex, pageSize, int(total))
- data := &ybResp.LikeReportListResp{
- List: list,
- Paging: page,
- }
- br.Ret = 200
- br.Success = true
- br.Msg = "操作成功"
- br.Data = data
- return
- }
- // List
- // @Title 获取报告的点赞列表
- // @Description 获取报告的点赞列表
- // @Param ReportId query string true "报告ID"
- // @Param ReportChapterId query string true "报告章节ID"
- // @Param PageSize query string false "页码"
- // @param CurrentIndex query string false "每页展示的记录数"
- // @Success 200 {object} ybResp.LikeListResp
- // @router /like/list [get]
- func (this *LikeController) List() {
- br := new(models.BaseResponse).Init()
- defer func() {
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser is Empty"
- br.Ret = 408
- return
- }
- pageSize, _ := this.GetInt("PageSize")
- currentIndex, _ := this.GetInt("CurrentIndex")
- var startSize int
- if pageSize <= 0 {
- pageSize = utils.PageSize20
- }
- if currentIndex <= 0 {
- currentIndex = 1
- }
- startSize = paging.StartIndex(currentIndex, pageSize)
- //todo 判断查询权限
- brMsg, brErrMsg := ybService.CheckCommentPermission(sysUser.AdminId)
- if brMsg != "" {
- br.Msg = brMsg
- br.ErrMsg = brErrMsg
- return
- }
- //根据搜索条件查询留言列表
- var (
- err error
- reportId int
- reportChapterId int
- )
- reqReportId := this.GetString("ReportId", "")
- if reqReportId == "" {
- br.Msg = "请输入报告ID"
- br.ErrMsg = "请输入报告ID"
- return
- }
- reportId, err = strconv.Atoi(reqReportId)
- if err != nil {
- br.Msg = "请输入正确的报告ID"
- br.ErrMsg = "请输入正确的报告ID:" + err.Error()
- return
- }
- reqReportChapterId := this.GetString("ReportChapterId", "")
- if reqReportId == "" {
- br.Msg = "请输入报告ID"
- br.ErrMsg = "请输入报告ID"
- return
- }
- if reqReportChapterId != "" {
- reportChapterId, err = strconv.Atoi(reqReportChapterId)
- if err != nil {
- br.Msg = "请输入正确的章节ID"
- br.ErrMsg = "请输入正确的章节ID:" + err.Error()
- return
- }
- }
- likeList, err := yb.GetLikeListByReportId(reportId, reportChapterId, startSize, pageSize)
- if err != nil {
- br.Msg = "获取点赞列表失败!"
- br.ErrMsg = "获取点赞列表失败,Err:" + err.Error()
- return
- }
- var userIds string
- for _, v := range likeList {
- userIds += "," + strconv.Itoa(int(v.UserId))
- }
- // 查询点赞相关的用户
- var userOthers []*models.WxUser
- if len(userIds) > 0 {
- userOthers, err = models.GetWxUserListByUserIds(strings.Trim(userIds, ","))
- if err != nil {
- br.Msg = "查询点赞用户出错"
- br.ErrMsg = "查询点赞用户出错,Err:" + err.Error()
- return
- }
- }
- usersMap := make(map[uint64]*models.WxUser)
- companyIdArr := make([]int, 0)
- for _, v := range userOthers {
- usersMap[uint64(v.UserId)] = v
- companyIdArr = append(companyIdArr, v.CompanyId)
- }
- // 客户名称、状态
- companyIdNameMap := make(map[int]string, 0)
- companyIdStatusMap := make(map[int]string, 0)
- if len(companyIdArr) > 0 {
- companies, e := company.GetCompanyProductsByCompanyIdsAndProductId(companyIdArr, 1)
- if e != nil {
- br.Msg = "获取点赞客户信息失败"
- br.ErrMsg = "查询客户信息出错,Err:" + e.Error()
- return
- }
- companyLen := len(companies)
- for i := 0; i < companyLen; i++ {
- companyIdNameMap[companies[i].CompanyId] = companies[i].CompanyName
- companyIdStatusMap[companies[i].CompanyId] = companies[i].Status
- }
- }
- var list []*ybResp.LikeListItem
- for _, v := range likeList {
- tmp := new(ybResp.LikeListItem)
- tmp.LikeId = v.LikeId
- tmp.UserId = v.UserId
- if info, ok := usersMap[v.UserId]; ok {
- tmp.NickName = info.NickName
- tmp.RealName = info.RealName
- tmp.CompanyName = companyIdNameMap[info.CompanyId]
- tmp.CompanyStatus = companyIdStatusMap[info.CompanyId]
- }
- tmp.SourceAgent = v.SourceAgent
- tmp.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
- list = append(list, tmp)
- }
- // 获取列表分页总数
- total, err := yb.GetLikeListTotalByReportId(reportId, reportChapterId)
- if err != nil {
- br.Msg = "获取点赞列表总数失败!"
- br.ErrMsg = "获取点赞列表总数失败,Err:" + err.Error()
- return
- }
- page := paging.GetPaging(currentIndex, pageSize, int(total))
- resp := ybResp.LikeListResp{
- List: list,
- Paging: page,
- }
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- br.Data = resp
- return
- }
|