package controllers import ( "eta/eta_mini_crm_ht/models" "eta/eta_mini_crm_ht/models/response" "eta/eta_mini_crm_ht/utils" "github.com/rdlucklib/rdluck_tools/paging" "strconv" "strings" ) type MessageController struct { BaseAuthController } // ReportList // @Title 研报列表 // @Description pdf研报列表 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ClassifyIds query string true "二级分类id,可多选用英文,隔开" // @Param KeyWord query string true "报告标题/创建人" // @Param SortType query string true "排序方式" // @Success 200 {object} models.ReportAuthorResp // @router /reportList [get] func (this *MessageController) ReportList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") permissionIds := this.GetString("PermissionIds") analystNames := this.GetString("AnalystNames") sortType := this.GetString("SortType") KeyWord := this.GetString("KeyWord") var permissionCondition string var condition string var pars []interface{} if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } if KeyWord != "" { condition += " AND title like '%" + KeyWord + "%'" } var permissionPars []interface{} var classifyPars []interface{} if permissionIds != "" { permissionArr := strings.Split(permissionIds, ",") for _, permissionId := range permissionArr { perId, _ := strconv.Atoi(permissionId) permissionPars = append(permissionPars, perId) } permissionCondition += " AND chart_permission_id in (" + utils.GetOrmReplaceHolder(len(permissionPars)) + ")" classifyIds, err := models.GetClassifyIdsByPermissionIds(permissionCondition, permissionPars) if err != nil { br.Msg = "获取报告列表失败" br.ErrMsg = "eta获取品种信息失败,Err:" + err.Error() return } classifyCondition := " AND COALESCE(NULLIF(classify_id_third,0),NULLIF(classify_id_second,0),classify_id_first) in (" + utils.GetOrmReplaceHolder(len(classifyIds)) + ")" classifyPars = append(classifyPars, classifyIds) var ids []int ids, _ = models.GetETAReportIdsByCondition(classifyCondition, classifyPars) if err != nil { br.Msg = "获取报告列表失败" br.ErrMsg = "获取报告表ids失败,Err:" + err.Error() return } condition += " AND id in (" + utils.GetOrmReplaceHolder(len(ids)) + ") And source ='ETA'" pars = append(pars, ids) } if analystNames != "" { analystNameArr := strings.Split(analystNames, ",") condition += " AND author in (" + utils.GetOrmReplaceHolder(len(analystNameArr)) + ")" pars = append(pars, analystNameArr) } sortCondition := " ORDER BY published_time " if sortType == "" { sortType = "DESC" } sortCondition = sortCondition + sortType total, err := models.GetReportCountByCondition(condition, pars) if err != nil { br.Msg = "获取报告列表失败" br.ErrMsg = "获取报告列表统计失败,Err:" + err.Error() return } startSize := utils.StartIndex(currentIndex, pageSize) reportList, err := models.GetReportByCondition(condition, sortCondition, pars, startSize, pageSize) if err != nil { br.Msg = "获取报告列表失败" br.ErrMsg = "获取报告列表失败,Err:" + err.Error() return } var reportViewList []*models.ReportView for _, report := range reportList { reportView := report.ToView() reportViewList = append(reportViewList, reportView) } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(response.ReportListResp) resp.List = reportViewList resp.Paging = page br.Ret = 200 br.Success = true br.Data = resp br.Msg = "获取成功" } // AudioList // @Title 研报列表 // @Description pdf研报列表 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ClassifyIds query string true "二级分类id,可多选用英文,隔开" // @Param KeyWord query string true "报告标题/创建人" // @Param SortType query string true "排序方式" // @Success 200 {object} models.ReportAuthorResp // @router /audioList [get] func (this *MessageController) AudioList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") permissionIds := this.GetString("PermissionIds") analystIds := this.GetString("AnalystIds") sortType := this.GetString("SortType") KeyWord := this.GetString("KeyWord") var permissionCondition string var condition string var pars []interface{} if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } if KeyWord != "" { condition += " AND media_name like '%" + KeyWord + "%'" } var permissionPars []interface{} if permissionIds != "" { permissionArr := strings.Split(permissionIds, ",") for _, permissionId := range permissionArr { perId, _ := strconv.Atoi(permissionId) permissionPars = append(permissionPars, perId) } permissionCondition += " AND permission_id in (" + utils.GetOrmReplaceHolder(len(permissionPars)) + ")" ids, err := models.GetMappingsByCondition(permissionCondition, permissionPars) if err != nil { condition += " AND id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")" pars = append(pars, ids) } } if analystIds != "" { analystIdArr := strings.Split(analystIds, ",") var authorIds []int for _, analystId := range analystIdArr { id, _ := strconv.Atoi(analystId) authorIds = append(authorIds, id) } condition += " AND author_id in (" + utils.GetOrmReplaceHolder(len(authorIds)) + ")" pars = append(pars, authorIds) } sortCondition := " ORDER BY published_time " if sortType == "" { sortType = "DESC" } sortCondition = sortCondition + sortType total, err := models.GetMediaCountByCondition(models.Audio, condition, pars) if err != nil { br.Msg = "获取研报列表失败" br.ErrMsg = "获取研报列表统计失败,Err:" + err.Error() return } startSize := utils.StartIndex(currentIndex, pageSize) reportList, err := models.GetMediaByCondition(models.Audio, condition, sortCondition, pars, startSize, pageSize) if err != nil { br.Msg = "获取研报列表失败" br.ErrMsg = "获取研报列表失败,Err:" + err.Error() return } var reportViewList []*models.MessageMedia for _, report := range reportList { reportView := report.ToMessageView() reportViewList = append(reportViewList, reportView) } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(response.MessageMediaListResp) resp.List = reportViewList resp.Paging = page br.Ret = 200 br.Success = true br.Data = resp br.Msg = "获取成功" } // VideoList // @Title 研报列表 // @Description pdf研报列表 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ClassifyIds query string true "二级分类id,可多选用英文,隔开" // @Param KeyWord query string true "报告标题/创建人" // @Param SortType query string true "排序方式" // @Success 200 {object} models.ReportAuthorResp // @router /videoList [get] func (this *MessageController) VideoList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") permissionIds := this.GetString("PermissionIds") analystIds := this.GetString("AnalystIds") sortType := this.GetString("SortType") KeyWord := this.GetString("KeyWord") var permissionCondition string var condition string var pars []interface{} if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } if KeyWord != "" { condition += " AND media_name like '%" + KeyWord + "%'" } var permissionPars []interface{} if permissionIds != "" { permissionArr := strings.Split(permissionIds, ",") for _, permissionId := range permissionArr { perId, _ := strconv.Atoi(permissionId) permissionPars = append(permissionPars, perId) } permissionCondition += " AND permission_id in (" + utils.GetOrmReplaceHolder(len(permissionPars)) + ")" ids, err := models.GetMappingsByCondition(permissionCondition, permissionPars) if err != nil { condition += " AND id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")" pars = append(pars, ids) } } if analystIds != "" { analystIdArr := strings.Split(analystIds, ",") var authorIds []int for _, analystId := range analystIdArr { id, _ := strconv.Atoi(analystId) authorIds = append(authorIds, id) } condition += " AND author_id in (" + utils.GetOrmReplaceHolder(len(authorIds)) + ")" pars = append(pars, authorIds) } sortCondition := " ORDER BY published_time " if sortType == "" { sortType = "DESC" } sortCondition = sortCondition + sortType total, err := models.GetMediaCountByCondition(models.Video, condition, pars) if err != nil { br.Msg = "获取视频列表失败" br.ErrMsg = "获取视频列表统计失败,Err:" + err.Error() return } startSize := utils.StartIndex(currentIndex, pageSize) List, err := models.GetMediaByCondition(models.Video, condition, sortCondition, pars, startSize, pageSize) if err != nil { br.Msg = "获取视频列表失败" br.ErrMsg = "获取视频列表失败,Err:" + err.Error() return } var reportViewList []*models.MessageMedia for _, report := range List { reportView := report.ToMessageView() reportViewList = append(reportViewList, reportView) } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(response.MessageMediaListResp) resp.List = reportViewList resp.Paging = page br.Ret = 200 br.Success = true br.Data = resp br.Msg = "获取成功" }