package controllers import ( "encoding/json" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hongze_cygx/models" "hongze/hongze_cygx/services" "hongze/hongze_cygx/utils" "html" "strconv" "strings" "time" ) type HomeController struct { BaseAuthController } type BaseHomeController struct { BaseCommonController } // @Title 首页列表接口 // @Description 首页列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ChartPermissionId query int true "品类id,最新传0" // @Success 200 {object} models.HomeListResp // @router /list [get] func (this *HomeController) ListHome() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} var total int resp := new(models.HomeListResp) page := paging.GetPaging(currentIndex, pageSize, total) resp.HaveResearch = true userType, _, err := services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } condition += ` AND is_summary = 1 ` if chartPermissionId > 0 { categoryId, err := models.GetCategoryId(chartPermissionId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error() return } categoryinfo, err := models.GetChartPermissionById(chartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if userType == 1 && categoryinfo.PermissionName == "研选" { resp.HaveResearch = false resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } page = paging.GetPaging(currentIndex, pageSize, total) //if categoryId != "" { // condition += ` AND category_id IN(` + categoryId + `)` // condition += ` OR ( category_name LIKE '%研选%' AND publish_status = 1 AND is_summary = 1 )` //} else { // condition += ` AND category_name LIKE '%研选%' ` //} if categoryId != "" { condition += ` AND category_id IN(` + categoryId + `)` //condition += ` OR ( category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%' AND publish_status = 1 AND is_summary = 1 )` } else { condition += ` AND category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } } //永续客户无法查看研选分类的内容 if userType == 1 { condition += ` AND category_name NOT LIKE '%研选` + `%'` } total, err = models.GetHomeCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, total) list, err := models.GetHomeList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子数据失败,Err:" + err.Error() return } //研选的五张图片 detailResearch, err := models.GetConfigByCode("category_research_img_url") if err != nil { br.Msg = "获取数据失败" br.ErrMsg = "获取数据研选分类图片失败,Err:" + err.Error() return } researchList := strings.Split(detailResearch.ConfigValue, "{|}") //对应分类的所图片 detailCategoryUrl, err := models.GetConfigByCode("category_map_img_url") if err != nil { br.Msg = "获取数据失败" br.ErrMsg = "行业配置信息失败,Err:" + err.Error() return } categoryUrlList := strings.Split(detailCategoryUrl.ConfigValue, "{|}") mapCategoryUrl := make(map[string]string) var categoryId string var imgUrlChart string for _, v := range categoryUrlList { vslice := strings.Split(v, "_") categoryId = vslice[0] imgUrlChart = vslice[len(vslice)-1] mapCategoryUrl[categoryId] = imgUrlChart } for k, v := range list { item := list[k] //如果文章一开始的内容是图片,优先展示第一张图片 imgurl, _ := services.FixArticleImgUrl(html.UnescapeString(list[k].Body)) newBody, _ := services.GetReportContentTextSub(item.Body) list[k].Body = newBody if imgurl != "" { list[k].BodyHtml = imgurl } list[k].PublishDate = utils.StrTimeToTime(item.PublishDate).Format(utils.FormatDateTimeNoSecond) //时间字符串格式转时间格式 if strings.Contains(item.CategoryName, "研选") { list[k].IsResearch = true } if item.Pv > 999 { list[k].Pv = 999 } //如果是研选系列的任意取五张图片的中的一张 if v.CategoryId == "0" { knum := v.ArticleId % 5 list[k].ImgUrlPc = researchList[knum] } else { list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId] } if list[k].ArticleId < utils.SummaryArticleId { list[k].HttpUrl = utils.StrategyPlatform + strconv.Itoa(v.ArticleId) list[k].IsNeedJump = true } } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 首页列表接口(无需token) // @Description 首页列表接口(无需token) // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ChartPermissionId query int true "品类id,最新传0" // @Param CompanyCode query string false "机构编号" // @Param CompanyName query string false "机构名称" // @Param Email query string false "邮箱" // @Param Sign query string false "加密签名" // @Success 200 {object} models.HomeListResp // @router /listPublic [get] func (this *BaseHomeController) ListHomePublic() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() companyCode := this.GetString("CompanyCode") companyName := this.GetString("CompanyName") email := this.GetString("Email") sign := this.GetString("Sign") var userType int var err error if companyCode != "" && companyName != "" && email != "" { errMsg, errHt, wxUser, _ := services.CheckHtgj(companyCode, companyName, email, sign) if errHt != nil { br.Msg = "获取" br.ErrMsg = "获取数据失败,Err:" + errHt.Error() return } if errMsg == "机构下账号个数已达上限" { goto Loop } if errMsg != "" { br.Msg = errMsg return } user := wxUser if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } userType, _, err = services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } } Loop: pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} var total int resp := new(models.HomeListResp) page := paging.GetPaging(currentIndex, pageSize, total) resp.HaveResearch = true condition += ` AND is_summary = 1 ` if chartPermissionId > 0 { categoryId, err := models.GetCategoryId(chartPermissionId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error() return } categoryinfo, err := models.GetChartPermissionById(chartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if userType == 1 && strings.Contains(categoryinfo.PermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) { resp.HaveResearch = false resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } page = paging.GetPaging(currentIndex, pageSize, total) if categoryId != "" { condition += ` AND category_id IN(` + categoryId + `)` //condition += ` OR ( category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%' AND publish_status = 1 AND is_summary = 1 )` } else { condition += ` AND category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } } //永续客户无法查看研选分类的内容 if userType == 1 { condition += ` AND category_name NOT LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } total, err = models.GetHomeCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, total) list, err := models.GetHomeList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子数据失败,Err:" + err.Error() return } list, err = services.HandleArticleCategoryImg(list) if err != nil { br.Msg = "获取信息失败" br.Msg = "图片预处理失败,HandleArticleCategoryImg,Err:" + err.Error() return } for _, v := range list { v.Annotation, _ = services.GetReportContentTextSub(v.Annotation) v.Body = v.Annotation } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 首页/搜索头部导航接口 // @Description 首页/搜索头部导航接口 // @Param SearchPage query int false "是否为搜索页面" // @Success 200 {object} models.HomeListResp // @router /header_tab [get] func (this *HomeController) HeaderTab() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } searchPage, _ := this.GetInt("SearchPage") key := models.HomeHeaderTabConfigKey conf, e := models.GetConfigByCode(key) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取首页头部导航失败, Err: " + e.Error() return } if conf.ConfigValue == "" { br.Msg = "获取失败" br.ErrMsg = "首页头部导航配置值有误" return } list := new(models.HomeHeaderTabList) if e = json.Unmarshal([]byte(conf.ConfigValue), &list); e != nil { br.Msg = "获取失败" br.ErrMsg = "首页头部导航配置值解析失败, Err: " + e.Error() return } resp := list.Home if searchPage == 1 { resp = list.SearchPage } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 首页列表接口v7.6版本 // @Description 首页列表接口v7.6版本 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param ChartPermissionId query int true "品类id,最新传0" // @Param CtagId query int true "图表子类ID" // @Param ListType query int true "列表类型,1最新,2 纪要 ,3图表 默认1" // @Success 200 {object} models.HomeArtAndChartListResp // @router /artAndChart/list [get] func (this *HomeController) ListHomeArtAndChart() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") chartPermissionId, _ := this.GetInt("ChartPermissionId") ctagId, _ := this.GetInt("CtagId") listType, _ := this.GetInt("ListType") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } if listType <= 0 { listType = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} var total, chartTotal int resp := new(models.HomeArtAndChartListResp) page := paging.GetPaging(currentIndex, pageSize, total) resp.HaveResearch = true var chartList []*models.HomeChartListResp var err error // 最新 if listType == 1 { if currentIndex <= 2 { listCtagId := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var chartIds string for _, v := range listCtagId { chartListTwo, err := models.GetChartList(`AND ctag_id = `+strconv.Itoa(v), pars, 0, 2) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } for _, vChart := range chartListTwo { chartIds += strconv.Itoa(vChart.ChartId) + "," } } chartIds = strings.TrimRight(chartIds, ",") condition += ` AND chart_id IN (` + chartIds + `) ` chartList, err = models.GetChartList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } } } // 图表 if listType == 3 { if chartPermissionId > 0 { condition += ` AND a.ptag_id =? ` pars = append(pars, chartPermissionId) } if ctagId > 0 { condition += ` AND a.ctag_id =? ` pars = append(pars, ctagId) } chartList, err = models.GetChartList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } chartTotal, err = models.GetChartCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } } for k, v := range chartList { if v.PtagName != "" { chartList[k].CtagNamePc = v.PtagName } if v.CtagName != "" { chartList[k].CtagNamePc += "," + v.CtagName } if v.PtagNameTwo != "" { chartList[k].CtagNamePc += "," + v.PtagNameTwo } if v.CtagNameTwo != "" { chartList[k].CtagNamePc += "," + v.CtagNameTwo } chartList[k].IsNeedJump = true chartList[k].Source = 2 } resp.ChartList = chartList // 最新/纪要 if listType != 3 { userType, _, err := services.GetUserType(user.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } condition = ` AND is_summary = 1 ` if chartPermissionId > 0 { categoryId, err := models.GetCategoryId(chartPermissionId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error() return } categoryInfo, err := models.GetChartPermissionById(chartPermissionId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if userType == 1 && strings.Contains(categoryInfo.PermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) { resp.HaveResearch = false resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } page = paging.GetPaging(currentIndex, pageSize, total) if categoryId != "" { condition += ` AND category_id IN(` + categoryId + `)` //condition += ` OR ( category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%' AND publish_status = 1 AND is_summary = 1 )` } else { condition += ` AND category_name LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } } //永续客户无法查看研选分类的内容 if userType == 1 { condition += ` AND category_name NOT LIKE '%` + utils.CHART_PERMISSION_NAME_YANXUAN + `%'` } list := make([]*models.HomeArticle, 0) // 7.6-与音频作联合查询, 整体进行发布时间的排序(代码写的嘎嘎烂, 将就着用吧=_=!) if listType == 1 { var unionPars []interface{} unionList, unionTotal, e := services.GetHomeNewestList(user.UserId, user.CompanyId, startSize, pageSize, condition, unionPars) if e != nil { br.Msg = "获取信息失败" br.Msg = "获取纪要音频联合列表失败, Err: " + e.Error() return } total = unionTotal list = unionList } else { total, err = models.GetHomeCount(condition, pars) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子总数失败,Err:" + err.Error() return } homeList, err := models.GetHomeList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.Msg = "获取帖子数据失败,Err:" + err.Error() return } list = homeList } resp.List, err = services.HandleArticleCategoryImg(list) if err != nil { br.Msg = "获取信息失败" br.Msg = "处理封面图片失败,HandleArticleCategoryImg,Err:" + err.Error() return } resp.List = list } if chartTotal > total { total = chartTotal } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 首页列表接口 // @Description 首页列表接口 // @Param TagIds query string true "标签选择" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} models.HomeArtAndChartListResp // @router /new [get] func (this *HomeController) NewList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") tagIds := this.GetString("TagIds") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var conditionInit string var pars []interface{} //var total int resp := new(models.HomeResourceDataListResp) totalRai, err := models.GetCountCompanyProductCompanyId(user.CompanyId, utils.COMPANY_PRODUCT_RAI_ID) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "GetCountCompanyProductCompanyId,Err:" + err.Error() return } var articleTypes, activityTypes, industries, subjectNames string articleTypeCondSlice := make([]string, 0) activityTypesCondSlice := make([]string, 0) industriesCondSlice := make([]string, 0) subjectNamesSlice := make([]string, 0) articleTypeSlice := make([]string, 0) if tagIds != "" { tags := strings.Split(tagIds, ",") for _, tagIdStr := range tags { tagId, err := strconv.Atoi(tagIdStr) if err != nil { br.Msg = "转换失败" br.ErrMsg = "tagid转换失败,Err:" + err.Error() return } tagInfo, err := models.GetCygxTagByTagId(tagId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "GetCygxTagByTagId,Err:" + err.Error() return } // 只有AB或CD的情况 if (tagInfo.ActivityTypes == "" && tagInfo.ArticleTypes == "") || (tagInfo.Industries == "" && tagInfo.SubjectNames == "") { if tagInfo.ActivityTypes != "" { activityTypes += tagInfo.ActivityTypes + "," } if tagInfo.ArticleTypes != "" { articleTypes += tagInfo.ArticleTypes + "," } if tagInfo.Industries != "" { industries += tagInfo.Industries + "," } if tagInfo.SubjectNames != "" { subjectNames += tagInfo.SubjectNames + "," } } else { // ABCD都有的情况 // 每一个tag都单独处理 var articleType, activityType, industry, subjectName string if tagInfo.ActivityTypes != "" { activityType = tagInfo.ActivityTypes } if tagInfo.ArticleTypes != "" { articleType = tagInfo.ArticleTypes } if tagInfo.Industries != "" { industry = tagInfo.Industries } if tagInfo.SubjectNames != "" { subjectName = tagInfo.SubjectNames } articleTypeCond := `` var articleTypeStr string if articleType != "" { articleTypeSlice := strings.Split(articleType, ",") newArticleTypeSlice := make([]string, 0) for _, s := range articleTypeSlice { newArticleTypeSlice = append(newArticleTypeSlice, "'"+s+"'") } articleTypeStr = strings.Join(newArticleTypeSlice, ",") articleTypeStr = strings.TrimRight(articleTypeStr, ",") articleTypeCond += ` AND (art.sub_category_name In (` + articleTypeStr + `) OR (art.article_type_name In (` + articleTypeStr + `) AND art.article_type_name <> '路演精华' AND art.article_type_id <> 0 ) ) ` } activityTypesCond := `` if activityType != "" { activityTypeSlice := strings.Split(activityType, ",") newActivityTypeSlice := make([]string, 0) for _, s := range activityTypeSlice { newActivityTypeSlice = append(newActivityTypeSlice, "'"+s+"'") } activityTypeStr := strings.Join(newActivityTypeSlice, ",") activityTypeStr = strings.TrimRight(activityTypeStr, ",") activityTypesCond += ` AND act.activity_type_name In (` + activityTypeStr + `) ` } industriesCond := `` var industryStr string if industry != "" { industrieSlice := strings.Split(industry, ",") newIndustrieSlice := make([]string, 0) for _, s := range industrieSlice { newIndustrieSlice = append(newIndustrieSlice, "'"+s+"'") } industryStr = strings.Join(newIndustrieSlice, ",") industryStr = strings.TrimRight(industryStr, ",") industriesCond += ` AND im.industry_name In (` + industryStr + `) ` } subjectNamesCond := `` var subjectNameStr string if subjectName != "" { subjectNameSlice := strings.Split(subjectName, ",") newSubjectNameSlice := make([]string, 0) for _, s := range subjectNameSlice { newSubjectNameSlice = append(newSubjectNameSlice, "'"+s+"'") } subjectNameStr = strings.Join(newSubjectNameSlice, ",") subjectNameStr = strings.TrimRight(subjectNameStr, ",") subjectNamesCond += ` AND cis.subject_name In (` + subjectNameStr + `) ` } articleTypeCondSlice = append(articleTypeCondSlice, articleTypeCond) activityTypesCondSlice = append(activityTypesCondSlice, activityTypesCond) industriesCondSlice = append(industriesCondSlice, industryStr) subjectNamesSlice = append(subjectNamesSlice, subjectNameStr) articleTypeSlice = append(articleTypeSlice, articleType) } } } // 先拿abdc都有的tag取合集的ids。。。 soloTagArticleIds, soloTagActivityIds, soloMmIds, err := models.GetCygxCygxArticleListByConditionSoloTag(articleTypeCondSlice, activityTypesCondSlice, industriesCondSlice, subjectNamesSlice, articleTypeSlice) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error() return } articleTypes = strings.TrimRight(articleTypes, ",") activityTypes = strings.TrimRight(activityTypes, ",") industries = strings.TrimRight(industries, ",") subjectNames = strings.TrimRight(subjectNames, ",") articleTypesCond := `` var articleTypeStr string if articleTypes != "" { articleTypeSlice := strings.Split(articleTypes, ",") newArticleTypeSlice := make([]string, 0) for _, s := range articleTypeSlice { newArticleTypeSlice = append(newArticleTypeSlice, "'"+s+"'") } articleTypeStr = strings.Join(newArticleTypeSlice, ",") articleTypeStr = strings.TrimRight(articleTypeStr, ",") articleTypesCond += ` AND (art.sub_category_name In (` + articleTypeStr + `) OR (art.article_type_name In (` + articleTypeStr + `) AND art.article_type_name <> '路演精华' AND art.article_type_id <> 0 ) ) ` } activityTypesCond := `` if activityTypes != "" { activityTypeSlice := strings.Split(activityTypes, ",") newActivityTypeSlice := make([]string, 0) for _, s := range activityTypeSlice { newActivityTypeSlice = append(newActivityTypeSlice, "'"+s+"'") } activityTypeStr := strings.Join(newActivityTypeSlice, ",") activityTypeStr = strings.TrimRight(activityTypeStr, ",") activityTypesCond += ` AND act.activity_type_name In (` + activityTypeStr + `) ` } industriesCond := `` var industryStr string if industries != "" { industrieSlice := strings.Split(industries, ",") newIndustrieSlice := make([]string, 0) for _, s := range industrieSlice { newIndustrieSlice = append(newIndustrieSlice, "'"+s+"'") } industryStr = strings.Join(newIndustrieSlice, ",") industryStr = strings.TrimRight(industryStr, ",") industriesCond += ` AND im.industry_name In (` + industryStr + `) ` } subjectNamesCond := `` var subjectNameStr string if subjectNames != "" { subjectNameSlice := strings.Split(subjectNames, ",") newSubjectNameSlice := make([]string, 0) for _, s := range subjectNameSlice { newSubjectNameSlice = append(newSubjectNameSlice, "'"+s+"'") } subjectNameStr = strings.Join(newSubjectNameSlice, ",") subjectNameStr = strings.TrimRight(subjectNameStr, ",") subjectNamesCond += ` AND cis.subject_name In (` + subjectNameStr + `) ` } var tagArticleIds, tagActivityIds, mmIds string if articleTypesCond != "" || activityTypesCond != "" || industryStr != "" || subjectNameStr != "" { tagArticleIds, tagActivityIds, mmIds, err = models.GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industryStr, subjectNameStr, articleTypeStr) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取单个标签ids失败,Err:" + err.Error() return } } if soloTagArticleIds != "" { if tagArticleIds != "" { tagArticleIds += "," + soloTagArticleIds } else { tagArticleIds = soloTagArticleIds } } if soloTagActivityIds != "" { if tagActivityIds != "" { tagActivityIds += "," + soloTagActivityIds } else { tagActivityIds = soloTagActivityIds } } if soloMmIds != "" { if mmIds != "" { mmIds += "," + soloMmIds } else { mmIds = soloMmIds } } //fmt.Println("condition:",condition) //查询近一个月的数据 conditionInit = " AND publish_date > '" + time.Now().AddDate(0, 0, -30).Format(utils.FormatDateTime) + "'" //conditionInit += ` AND source IN ('newchart')` if user.CompanyId <= 1 || totalRai == 0 { condition += " AND source IN ('roadshow','article') " startSize = 0 pageSize = 4 } else { condition += ` AND source NOT IN ('activity','activityspecial','newchart') ` + conditionInit conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0, 1) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error() return } conditionActivity += ` AND art.is_limit_people = 1 AND art.publish_status = 1 ` var conditionOrder string conditionOrder = ` ORDER BY art.activity_time DESC , art.active_state ASC ` conditionActivity += conditionOrder actPageSize := 200 if tagIds != "" { actPageSize = 2000 } listActivity, err := models.GetActivityListHomeNew(conditionActivity, 0, actPageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取可见活动数据失败,Err:" + err.Error() return } var activityIds []int for _, v := range listActivity { activityIds = append(activityIds, v.ActivityId) } lenActivityIds := len(activityIds) listActivitySpecial, _, err := services.GetActivitySpecialList(user, 1, 200, "") if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取专项调研可见权限失败失败,Err:" + err.Error() return } var activityspecialIds []int for _, v := range listActivitySpecial { activityspecialIds = append(activityspecialIds, v.ActivityId) } lenActivityspecialIds := len(activityspecialIds) if tagIds != "" { if tagArticleIds != "" { condition = ` AND ((source = 'article' AND source_id IN (` + tagArticleIds + `) ) ` if mmIds != "" { condition += ` OR ( source = 'meetingreviewchapt' AND source_id IN (` + mmIds + `) ) ` } if tagActivityIds != "" && lenActivityIds > 0 { condition += ` OR (source = 'activity' AND source_id IN (` + tagActivityIds + `) AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) )) ` pars = append(pars, activityIds) } else { // 无可见活动 condition += ` OR (source = 'activity' AND source_id IN (0))) ` } } else if tagActivityIds != "" { condition = ` AND ((source = 'article' AND source_id IN (0)) ` if mmIds != "" { condition += ` OR ( source = 'meetingreviewchapt' AND source_id IN (` + mmIds + `) ) ` } if tagActivityIds != "" && lenActivityIds > 0 { condition += ` OR (source = 'activity' AND source_id IN (` + tagActivityIds + `) AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `))) ` pars = append(pars, activityIds) } else { // 无可见活动 condition += ` OR (source = 'activity' AND source_id IN (0))) ` } } else if mmIds != "" { condition = ` AND ( source = 'meetingreviewchapt' AND source_id IN (` + mmIds + `) ) ` } else { condition += ` AND ((source = 'article' AND source_id IN (0)) OR (source = 'activity' AND source_id IN (0))) ` } } if lenActivityIds > 0 && tagIds == "" { condition += ` OR ( source = 'activity' AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) ` + conditionInit + ` ) ` pars = append(pars, activityIds) } if lenActivityspecialIds > 0 && tagIds == "" { condition += ` OR ( source = 'activityspecial' AND source_id IN (` + utils.GetOrmInReplace(lenActivityspecialIds) + `) ` + conditionInit + ` ) ` pars = append(pars, activityspecialIds) } } //fmt.Println("condition:",condition) total, err := models.GetResourceDataCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if user.Mobile == "" && user.Email == "" { total = pageSize } page := paging.GetPaging(currentIndex, pageSize, total) //Source string `description:"资源类型 报告 :article 、图表 :newchart、微路演 :roadshow、活动 :activity、活动视频:activityvideo、活动音频:activityvoice、专项调研活动:activityspecial"` list, err := services.GetResourceDataList(condition, pars, startSize, pageSize, user) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }