Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hongze_cygx into clpt_article_logo

xingzai 2 years ago
parent
commit
8ffc75289f

+ 13 - 1
controllers/activity.go

@@ -1042,6 +1042,16 @@ func (this *ActivityCoAntroller) Detail() {
 			activityInfo.AudioLink = true
 			activityInfo.VideoDetail = mapActivityVideo[activityId]
 		}
+		//8.5 小程序活动详情页 除专家电话外 其余属于新产业的活动 ,不显示 new 标签
+		if activityInfo.ActivityTypeName != "专家电话会" {
+			for _, rep := range activityInfo.Listndustrial {
+				rep.IndustryNewLabel = false
+			}
+		}
+		//8.5 买方研选的活动去掉限免标签
+		if strings.Contains(activityInfo.ChartPermissionName, "研选"){
+			activityInfo.IsShowSustainable = false
+		}
 		//处理按钮是否展示问题
 		resp.Detail = services.ActivityButtonShow(activityInfo)
 	}
@@ -2425,6 +2435,7 @@ func (this *ActivityCoAntroller) LabelMoreList() {
 // @Param   PlayBack   query   int  false       "是否仅展示回放 1:是、0:否 默认0"
 // @Param   KeyWord   query   string  false       "搜索关键词 多个用 , 隔开"
 // @Param   ActivityId   query   int  false       "活动列表传过来的活动ID"
+// @Param   Filter			query	int		false	"筛选条件 0:全部 1:视频 2:音频"
 // @Success 200 {object} models.GetCygxActivityListRep
 // @router /listNew [get]
 func (this *ActivityCoAntroller) ActivityListNew() {
@@ -2450,6 +2461,7 @@ func (this *ActivityCoAntroller) ActivityListNew() {
 	activityTypeId := this.GetString("ActivityTypeId")
 	keyWord := this.GetString("KeyWord")
 	playBack, _ := this.GetInt("PlayBack")
+	filter, _ := this.GetInt("Filter")
 	activityId, _ := this.GetInt("ActivityId") // 仅用于判断【新】标签
 
 	if label == "undefined" {
@@ -2558,7 +2570,7 @@ func (this *ActivityCoAntroller) ActivityListNew() {
 	}
 
 	condition += conditionOrder
-	list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize, playBack)
+	list, errList := models.GetActivityListNew(condition, pars, uid, startSize, pageSize, playBack, filter)
 	if errList != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + errList.Error()

+ 3 - 1
controllers/micro_roadshow.go

@@ -23,6 +23,7 @@ type MicroRoadShowController struct {
 // @Param   AudioId			query	int		false	"音频ID"
 // @Param   VideoId			query	int		false	"视频ID"
 // @Param   ActivityVideoId			query	int		false	"活动视频ID"
+// @Param   Filter			query	int		false	"筛选条件 0:全部 1:视频 2:音频"
 // @Success 200 {object} models.HomeListResp
 // @router /list [get]
 func (this *MicroRoadShowController) List() {
@@ -44,6 +45,7 @@ func (this *MicroRoadShowController) List() {
 	audioId, _ := this.GetInt("AudioId")
 	videoId, _ := this.GetInt("VideoId")
 	activityVideoId, _ := this.GetInt("ActivityVideoId")
+	filter, _ := this.GetInt("Filter", 0)
 
 	if pageSize <= 0 {
 		pageSize = utils.PageSize20
@@ -53,7 +55,7 @@ func (this *MicroRoadShowController) List() {
 	}
 
 	// 微路演列表
-	list, total, e := services.GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId, keywords)
+	list, total, e := services.GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId, filter, keywords)
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取微路演列表失败, Err: " + e.Error()

+ 275 - 80
controllers/report.go

@@ -408,6 +408,7 @@ func (this *ReportController) IndustryList() {
 // @Title 产业下所关联的文章分类列表
 // @Description 产业下所关联的文章分类列表接口
 // @Param   IndustrialManagementId   query   int  true       "产业ID"
+// @Param   ShowTimeLine   query   int  true       "是否展示时间线 0不展示,1展示"
 // @Success 200 {object} models.IndustrialToArticleCategoryListRep
 // @router /toArticleCategoryList [get]
 func (this *ReportController) ArticleCategoryList() {
@@ -428,6 +429,7 @@ func (this *ReportController) ArticleCategoryList() {
 		br.Msg = "请输入分类ID"
 		return
 	}
+	showTimeLine, _ := this.GetInt("ShowTimeLine", 0)
 
 	detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
 	if err != nil {
@@ -516,6 +518,24 @@ func (this *ReportController) ArticleCategoryList() {
 			videoSimple.ResourceUrl = ""
 		}
 	}
+
+	//detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
+	//if err != nil {
+	//	br.Msg = "获取信息失败"
+	//	br.ErrMsg = "获取信息失败,Err:" + err.Error()
+	//	return
+	//}
+
+	//时间线
+	if showTimeLine == 1 {
+		timeLineItem := models.IndustrialToArticleCategoryRep{
+			CategoryId:    99999,
+			MatchTypeName: "时间线",
+		}
+
+		list = append([]*models.IndustrialToArticleCategoryRep{&timeLineItem}, list...)
+	}
+
 	resp := new(models.IndustrialToArticleCategoryListRep)
 	resp.List = list
 	resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
@@ -568,7 +588,7 @@ func (this *ReportController) List() {
 	startSize = paging.StartIndex(currentIndex, pageSize)
 	var pars []interface{}
 	var total int
-	resp := new(models.TacticsListResp)
+
 	page := paging.GetPaging(currentIndex, pageSize, total)
 
 	if categoryId < 1 {
@@ -579,93 +599,205 @@ func (this *ReportController) List() {
 		br.Msg = "请输入产业ID"
 		return
 	}
-	//获取该产业下所对应的行业图片
-	detail, errCategory := models.GetdetailByCategoryIdOne(categoryId)
-	if errCategory != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
-		return
-	}
-	//对应行业的图片
-	detailChartPermissionUrl, err := models.GetConfigByCode("category_chart_permissionimg_url")
-	if err != nil {
-		br.Msg = "获取数据失败"
-		br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
-		return
-	}
-	chartPermissionUrlList := strings.Split(detailChartPermissionUrl.ConfigValue, "{|}")
-	mapChartPermission := make(map[string]string)
-	var permissionName string
-	var imgUrlChartPermission string
-	for _, v := range chartPermissionUrlList {
-		vslice := strings.Split(v, "_")
-		permissionName = vslice[0]
-		imgUrlChartPermission = vslice[len(vslice)-1]
-		mapChartPermission[permissionName] = imgUrlChartPermission
-	}
+	if categoryId != 99999 {
+		resp := new(models.TacticsListResp)
+		//获取该产业下所对应的行业图片
+		detail, errCategory := models.GetdetailByCategoryIdOne(categoryId)
+		if errCategory != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
+			return
+		}
+		//对应行业的图片
+		detailChartPermissionUrl, err := models.GetConfigByCode("category_chart_permissionimg_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
+			return
+		}
+		chartPermissionUrlList := strings.Split(detailChartPermissionUrl.ConfigValue, "{|}")
+		mapChartPermission := make(map[string]string)
+		var permissionName string
+		var imgUrlChartPermission string
+		for _, v := range chartPermissionUrlList {
+			vslice := strings.Split(v, "_")
+			permissionName = vslice[0]
+			imgUrlChartPermission = vslice[len(vslice)-1]
+			mapChartPermission[permissionName] = imgUrlChartPermission
+		}
 
-	total, err = models.GetReportIndustrialCount(categoryId, industrialManagementId)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
-		return
-	}
-	page = paging.GetPaging(currentIndex, pageSize, total)
-	list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
-		return
-	}
-	//对应分类的所图片
-	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 categoryIdStr string
-	var imgUrlChart string
-	for _, v := range categoryUrlList {
-		vslice := strings.Split(v, "_")
-		categoryIdStr = vslice[0]
-		imgUrlChart = vslice[len(vslice)-1]
-		mapCategoryUrl[categoryIdStr] = imgUrlChart
-	}
-	lenList := len(list)
-	for i := 0; i < lenList; i++ {
-		item := list[i]
-		list[i].Body, _ = services.GetReportContentTextSub(item.Body)
-		//list[i].Abstract = html.UnescapeString(item.Abstract)
-		list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
-	}
+		total, err = models.GetReportIndustrialCount(categoryId, industrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+		page = paging.GetPaging(currentIndex, pageSize, total)
+		list, err := models.GetReportIndustrialList(pars, categoryId, industrialManagementId, uid, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
+			return
+		}
+		//对应分类的所图片
+		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 categoryIdStr string
+		var imgUrlChart string
+		for _, v := range categoryUrlList {
+			vslice := strings.Split(v, "_")
+			categoryIdStr = vslice[0]
+			imgUrlChart = vslice[len(vslice)-1]
+			mapCategoryUrl[categoryIdStr] = imgUrlChart
+		}
+		lenList := len(list)
+		for i := 0; i < lenList; i++ {
+			item := list[i]
+			list[i].Body, _ = services.GetReportContentTextSub(item.Body)
+			//list[i].Abstract = html.UnescapeString(item.Abstract)
+			list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
+		}
+
+		for k, v := range list {
+			if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
+				list[k].IsRed = true
+			}
+			if v.VideoUrl != "" {
+				list[k].IsHaveVideo = true
+			}
+			list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
 
-	for k, v := range list {
-		if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
-			list[k].IsRed = true
+			if mapCategoryUrl[v.CategoryId] == "" {
+				if detail.ChartPermissionId == utils.YI_YAO_ID {
+					list[k].ImgUrlPc = utils.YI_YAO_QI_TA
+				}
+			}
+		}
+
+		resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
+		resp.ChartPermissionId = detail.ChartPermissionId
+		resp.List = list
+		resp.Paging = page
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	} else {
+		//获取该产业下所对应的行业图片
+		//因为时间线不属于数据表里的二级分类,所以图片Id用产业id查到的list中的任意一个categoryId取到的图片替代
+		categoryList, err := models.IndustrialToArticleCategoryNew(industrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
 		}
-		if v.VideoUrl != "" {
-			list[k].IsHaveVideo = true
+		var timeLineCategoryId int
+		if len(categoryList) > 0 {
+			timeLineCategoryId = categoryList[0].CategoryId
 		}
-		list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
 
-		if mapCategoryUrl[v.CategoryId] == "" {
-			if detail.ChartPermissionId == utils.YI_YAO_ID {
-				list[k].ImgUrlPc = utils.YI_YAO_QI_TA
+		var detail *models.ReportMapping
+		var errCategory error
+
+		if timeLineCategoryId > 0 {
+			detail, errCategory = models.GetdetailByCategoryIdOne(timeLineCategoryId)
+			if errCategory != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取信息失败,Err:" + errCategory.Error() + "categoryID 不存在:" + strconv.Itoa(categoryId)
+				return
 			}
 		}
-	}
 
-	resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
-	resp.ChartPermissionId = detail.ChartPermissionId
-	resp.List = list
-	resp.Paging = page
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
+		//对应行业的图片
+		detailChartPermissionUrl, err := models.GetConfigByCode("category_chart_permissionimg_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
+			return
+		}
+		chartPermissionUrlList := strings.Split(detailChartPermissionUrl.ConfigValue, "{|}")
+		mapChartPermission := make(map[string]string)
+		var permissionName string
+		var imgUrlChartPermission string
+		for _, v := range chartPermissionUrlList {
+			vslice := strings.Split(v, "_")
+			permissionName = vslice[0]
+			imgUrlChartPermission = vslice[len(vslice)-1]
+			mapChartPermission[permissionName] = imgUrlChartPermission
+		}
+
+		total, err := models.GetTimeLineReportIndustrialCount(industrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+		page = paging.GetPaging(currentIndex, pageSize, total)
+		list, err := models.GetTimeLineReportIndustrialList(industrialManagementId, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取帖子数据失败,Err:" + err.Error()
+			return
+		}
+		//对应分类的所图片
+		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 categoryIdStr string
+		var imgUrlChart string
+		for _, v := range categoryUrlList {
+			vslice := strings.Split(v, "_")
+			categoryIdStr = vslice[0]
+			imgUrlChart = vslice[len(vslice)-1]
+			mapCategoryUrl[categoryIdStr] = imgUrlChart
+		}
+
+		//lenList := len(list)
+		//for i := 0; i < lenList; i++ {
+		//	item := list[i]
+		//	list[i].Content, _ = services.GetReportContentTextSub(item.Content)
+		//	//list[i].Abstract = html.UnescapeString(item.Abstract)
+		//	//list[i].Abstract, _ = services.GetReportContentTextSub(item.Abstract)
+		//}
+
+		for k, v := range list {
+			//if v.Readnum == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.PublishDate)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.PublishDate)) {
+			//	list[k].IsRed = true
+			//}
+			if v.VideoUrl != "" {
+				list[k].IsHaveVideo = true
+			}
+			id := strconv.Itoa(timeLineCategoryId)
+			list[k].ImgUrlPc = mapCategoryUrl[id]
+
+			if mapCategoryUrl[id] == "" {
+				if detail.ChartPermissionId == utils.YI_YAO_ID {
+					list[k].ImgUrlPc = utils.YI_YAO_QI_TA
+				}
+			}
+		}
+
+		resp := new(models.TimeLineReportListResp)
+		resp.CategoryImgUrlPc = mapChartPermission[detail.ChartPermissionName]
+
+		resp.List = list
+		resp.Paging = page
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+	}
 }
 
 // @Title 置顶/取消置顶
@@ -2903,3 +3035,66 @@ func (this *ReportController) SearchReportAndResource() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 产业报告公司列表
+// @Description 获取产业报告公司列表接口
+// @Param   ChartPermissionId   query   int  true       "行业id"
+// @Success 200 {object} models.IndustrialManagementList
+// @router /home/stockName [get]
+func (this *ReportController) StockNameList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	//uid := user.UserId
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+
+	list, err := models.GetSummaryArticle(chartPermissionId)
+	if err != nil {
+		br.Msg = "获取综述报告公司名称失败"
+		br.ErrMsg = "获取综述报告公司名称失败,Err:" + err.Error()
+		return
+	}
+	for _, item := range list {
+		sliceSubjects := strings.Split(item.Stock, "/")
+		if len(sliceSubjects) > 0 {
+			for i, vSubject := range sliceSubjects {
+				sliceKuohao := strings.Split(vSubject, "(")           //过滤括号
+				sliceXiahuaxian := strings.Split(sliceKuohao[0], "-") //过滤下划线
+				subject := sliceXiahuaxian[0]
+				if i > 0 {
+					newItem := models.SummaryArticleStock{
+						Id:        item.Id,
+						ArticleId: item.ArticleId,
+						Stock:     subject,
+					}
+					list = append(list, &newItem)
+				} else {
+					item.Stock = subject
+				}
+			}
+		}
+
+		//index := strings.Index(item.Stock, "(")
+		//item.Stock = item.Stock[:index]
+		//if strings.Contains(item.Stock, "-B"){
+		//	item.Stock = strings.Replace(item.Stock, "-B", "", -1)
+		//}
+		//if strings.Contains(item.Stock, "-W"){
+		//	item.Stock = strings.Replace(item.Stock, "-W", "", -1)
+		//}
+	}
+	resp := new(models.SummaryArticleStockResp)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 29 - 0
models/activity.go

@@ -915,3 +915,32 @@ func UpdateActivityshowSubject(activityId int) (err error) {
 	_, err = o.Raw(sql, activityId).Exec()
 	return
 }
+
+//列表
+func GetActivityListNew(condition string, pars []interface{}, uid, startSize, pageSize, playBack, filter int) (items []*ActivityDetail, err error) {
+	var sqlJiontable string
+	if playBack == 1 {
+		//sqlJiontable = ` INNER JOIN cygx_activity_voice AS ac ON ac.activity_id = art.activity_id `
+	}
+	if filter == 1 {
+		sqlJiontable = ` INNER JOIN cygx_activity_video AS av ON av.activity_id = art.activity_id `
+	} else if filter == 2{
+		sqlJiontable = ` INNER JOIN cygx_activity_voice AS ac ON ac.activity_id = art.activity_id `
+	}
+
+	o := orm.NewOrm()
+	sql := `SELECT art.* ,t.activity_type,t.img_url_text,c.image_url as  img_url,
+		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.user_id = ?   AND s.is_cancel = 0  AND s.do_fail_type = 0) AS is_signup,
+		( SELECT COUNT( DISTINCT user_id ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id   AND s.is_cancel = 0  AND s.do_fail_type = 0) AS signup_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_meeting_reminder AS m WHERE m.activity_id = art.activity_id AND m.user_id = ?  AND m.is_cancel = 0  ) AS is_cancel_meeting_reminder,
+		( SELECT COUNT( 1 ) FROM cygx_activity_appointment AS ap WHERE ap.activity_id = art.activity_id AND ap.user_id = ? ) AS is_appointment
+		FROM cygx_activity as art
+		INNER JOIN cygx_activity_type  as t ON t.activity_type_id = art.activity_type_id
+		INNER JOIN  chart_permission  AS c ON c.chart_permission_id = art.chart_permission_id ` + sqlJiontable + ` WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?`
+	_, err = o.Raw(sql, pars, uid, uid, uid, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 27 - 0
models/article.go

@@ -652,3 +652,30 @@ func UpdateIsClassFail(articleId int) (err error) {
 	_, err = o.Raw(sql, articleId).Exec()
 	return
 }
+
+type SummaryArticleStock struct {
+	Id        int    `description:"新ID"`
+	ArticleId int    `description:"文章id"`
+	Stock     string `description:"个股标签"`
+}
+
+//综述报告
+func GetSummaryArticle(chartPermissionId int) (items []*SummaryArticleStock, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	* 
+FROM
+	cygx_article AS c
+	INNER JOIN cygx_report_mapping AS m 
+WHERE
+	c.type_name = '综述报告' 
+	AND m.category_id = c.category_id_two 
+	AND m.chart_permission_id = ? ORDER BY last_updated_time DESC `
+
+	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
+	return
+}
+
+type SummaryArticleStockResp struct {
+	List []*SummaryArticleStock
+}

+ 6 - 6
models/micro_roadshow.go

@@ -31,10 +31,10 @@ type MicroRoadShowPageList struct {
 }
 
 // GetMicroRoadShowVideoPageList 获取微路演视频列表-分页
-func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}, audioId, videoId, activityVideoId int) (total int, list []*MicroRoadShowPageList, err error) {
+func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string, pars []interface{}, conditionAct string, parsAct []interface{}, conditionAudio string, parsAudio []interface{}, audioId, videoId, activityVideoId, filter int) (total int, list []*MicroRoadShowPageList, err error) {
 	o := orm.NewOrm()
 	var sql string
-	if audioId+activityVideoId == 0 {
+	if audioId+activityVideoId == 0 && filter != 2{
 		sql += `SELECT
 			video_id AS id,
 			video_name AS title,
@@ -56,11 +56,11 @@ func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string,
 			sql += condition
 		}
 	}
-	if audioId+videoId+activityVideoId == 0 {
+	if audioId+videoId+activityVideoId == 0 && filter != 2 {
 		sql += `  UNION ALL `
 	}
 
-	if audioId+videoId == 0 {
+	if audioId+videoId == 0 && filter != 2{
 		sql += `
 		SELECT
 			video_id AS id,
@@ -82,11 +82,11 @@ func GetMicroRoadShowVideoPageListV8(startSize, pageSize int, condition string,
 			sql += conditionAct
 		}
 	}
-	if audioId+videoId+activityVideoId == 0 {
+	if audioId+videoId+activityVideoId == 0 && filter == 0 {
 		sql += `  UNION ALL `
 	}
 
-	if videoId+activityVideoId == 0 {
+	if videoId+activityVideoId == 0 && filter != 1 {
 		sql += `
 			SELECT
 			a.activity_voice_id AS id,

+ 81 - 0
models/report.go

@@ -820,3 +820,84 @@ func GetReportPvBillboardList(pars []interface{}, condition string) (items []*Ar
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+//获取产业报告+晨会点评数量
+func GetTimeLineReportIndustrialCount(industrialManagementId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT SUM(count) AS count FROM (
+SELECT
+	COUNT( 1 ) count 
+FROM
+	cygx_article AS a
+	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = a.article_id 
+WHERE
+	a.publish_status = 1 
+	AND a.is_class = 1 
+	AND man_g.industrial_management_id = ?
+	UNION ALL
+	SELECT
+	COUNT( 1 ) count 
+	FROM
+	cygx_morning_meeting_review_chapter AS mmc
+	INNER JOIN cygx_morning_meeting_reviews AS mm
+	WHERE
+	mm.id = mmc.meeting_id
+	AND mm.status = 1
+	AND mmc.industry_id = ? ) AS t `
+	err = o.Raw(sql, industrialManagementId, industrialManagementId).QueryRow(&count)
+	return
+}
+
+type TimeLineReportItem struct {
+	Id              int    `description:"文章或晨报点评id"`
+	Title           string `description:"标题"`
+	PublishTime     string `description:"发布时间"`
+	Content         string `description:"内容"`
+	VideoUrl        string `description:"视频链接"`
+	IsHaveVideo     bool   `description:"是否包含视频"`
+	ImgUrlPc        string `description:"pc图片"`
+	SubCategoryName string `description:"二级分类"`
+}
+
+//获取产业报告+晨会点评列表
+func GetTimeLineReportIndustrialList(industrialManagementId, startSize, pageSize int) (items []*TimeLineReportItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	* 
+FROM
+	(
+		SELECT
+		a.article_id AS id,
+		a.title,
+		a.publish_date AS publish_time,
+		a.video_url,
+		a.sub_category_name,
+		'' AS content 
+	FROM
+		cygx_article AS a
+		INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = a.article_id 
+	WHERE
+		a.publish_status = 1 
+		AND a.is_class = 1 
+		AND man_g.industrial_management_id = ? GROUP BY id UNION ALL
+	SELECT
+		mmc.id,
+		'' AS title,
+		mm.meeting_time AS publish_time,
+		'' AS video_url,
+		'时间线' AS sub_category_name,
+		mmc.content 
+	FROM
+		cygx_morning_meeting_review_chapter AS mmc
+		INNER JOIN cygx_morning_meeting_reviews AS mm 
+	WHERE
+		mm.id = mmc.meeting_id 
+		AND mm.STATUS = 1 
+		AND mmc.industry_id = ? 
+	) AS t 
+`
+	sql += ` ORDER BY 
+	t.publish_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, industrialManagementId, industrialManagementId, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 14 - 0
models/send_company_user.go

@@ -273,6 +273,20 @@ func GetWxUserOpLogSuspend(createTime string) (items []*WxUserOpLogDeleteResp, e
 	return
 }
 
+//获取指定时间内被移动的客户
+func GetCompanyOperationRecord(createTime string) (items []*WxUserOpLogDeleteResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+				* 
+			FROM
+				company_operation_record AS p 
+			WHERE
+				 operation IN ('move_seller')
+				 AND p.create_time > '` + createTime + `'  GROUP BY company_id  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 //获取指定时间内试用转冻结,冻结转流失的客户
 func GetCompanyFreezeAndLoss(createTime string) (items []*WxUserOpLogResp, err error) {
 	o := orm.NewOrm()

+ 7 - 0
models/tactics.go

@@ -133,3 +133,10 @@ func GetReportTacticsList(condition string, pars []interface{}, userId, startSiz
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+type TimeLineReportListResp struct {
+	Paging           *paging.PagingItem
+	MatchTypeName    string `description:"匹配类型"`
+	CategoryImgUrlPc string `description:"图片"`
+	List             []*TimeLineReportItem
+}

+ 9 - 0
routers/commentsRouter.go

@@ -700,6 +700,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"],
+        beego.ControllerComments{
+            Method: "StockNameList",
+            Router: `/home/stockName`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ReportController"],
         beego.ControllerComments{
             Method: "TradeList",

+ 9 - 5
services/micro_roadshow.go

@@ -3,6 +3,7 @@ package services
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 )
@@ -162,7 +163,7 @@ func GetHomeNewestList(userId, companyId, startSize, pageSize int, condition str
 }
 
 // GetMicroRoadShowPageList 获取微路演列表添加活动视频 更新与8.1版本
-func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId int, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) {
+func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activityVideoId, filter int, keywords string) (respList []*models.MicroRoadShowPageList, total int, err error) {
 	var e error
 	// 根据每页数据量获取音视频配比
 	startSize := utils.StartIndex(currentIndex, pageSize)
@@ -174,8 +175,10 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 	//音频的查询
 	var audioCond string
 	var audioPars []interface{}
-	// 如果筛选条件为指定视频ID则不做音频查询
-	if videoId > 0 || activityVideoId > 0 {
+	// 如果筛选条件为指定视频ID或只看视频则不做音频查询
+	fmt.Println("filter:", filter)
+	if videoId > 0 || activityVideoId > 0 || filter == 1{
+		fmt.Println("11111")
 		audioCond = ""
 	} else {
 		// 活动已发布且已结束
@@ -198,7 +201,8 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 	var videoCondAct string
 	var videoPars []interface{}
 	var videoParsAct []interface{}
-	if audioId > 0 {
+	if audioId > 0 || filter == 2{
+		fmt.Println("22222")
 		videoCond = ""
 	} else {
 		if keywords != "" {
@@ -230,7 +234,7 @@ func GetMicroRoadShowPageListV8(pageSize, currentIndex, audioId, videoId, activi
 		//}
 		videoCond += ` AND publish_status = 1`
 	}
-	total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId)
+	total, videoList, e = models.GetMicroRoadShowVideoPageListV8(startSize, pageSize, videoCond, videoPars, videoCondAct, videoParsAct, audioCond, audioPars, audioId, videoId, activityVideoId, filter)
 	if e != nil {
 		err = errors.New("获取微路演音视频列表失败, Err: " + e.Error())
 		return

+ 11 - 0
services/send_company_user.go

@@ -146,6 +146,17 @@ func DotongbuShangHai(cont context.Context) (err error) {
 		}
 	}
 
+	//获取指定时间内被移动的客户
+	listOperationRecord, err := models.GetCompanyOperationRecord(updateTime)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return err
+	}
+	if len(listOperationRecord) > 0 {
+		for _, v := range listOperationRecord {
+			companyIds += strconv.Itoa(v.CompanyId) + ","
+		}
+	}
+
 	condition = ` AND p.is_suspend = 0  AND p.modify_time > ` + "'" + updateTime + "'"
 	companyIds = strings.TrimRight(companyIds, ",")