Bläddra i källkod

Merge branch 'cygx_v2' of hongze/hongze_cygx into master

hongze 4 år sedan
förälder
incheckning
1b50edfc07

+ 189 - 162
controllers/article.go

@@ -394,6 +394,7 @@ func (this *ArticleCommonController) Detail() {
 	}
 	if detail != nil {
 		detail.Body = html.UnescapeString(detail.Body)
+		detail.Abstract = html.UnescapeString(detail.Abstract)
 	}
 	resp.Detail = detail
 	br.Ret = 200
@@ -416,187 +417,213 @@ func (this *ArticleCommonController) Detail() {
 //
 //	fmt.Println("同步数据")
 //	indexName := utils.IndexName
-//	//endDate := time.Now().AddDate(0, 0, -7).Format(utils.FormatDate)
-//	//list, err := models.GetTacticsList(endDate)
-//	list, err := models.GetTacticsListAll2()
+//	fmt.Println(indexName)
+//	endDate := time.Now().AddDate(0, 0, -7).Format(utils.FormatDate)
+//	list, err := models.GetTacticsList(endDate)
+//	//list, err := models.GetTacticsListAll2()
 //	if err != nil {
 //		fmt.Println("GetTacticsList Err:", err.Error())
 //		return
 //	}
 //	fmt.Println("list len:", len(list))
 //
-//	listSummary, errsu := models.GetReportMappingCategoryID()
-//	if errsu != nil {
-//		fmt.Println("GetTacticsList Err:", errsu.Error())
-//		return
+//	summaryCategoryIds := "28,32,45,50,57,62,72,74,79,84,86,88,90,95,96" //纪要库的文章类型ID
+//	listSummarys := strings.Split(summaryCategoryIds, ",")
+//	fmt.Println(listSummarys)
+//	for _, v := range listSummarys {
+//		vs, _ := strconv.Atoi(v)
+//		fmt.Printf("n 的类型 %T", vs)
 //	}
 //
-//	listPermission, errper := models.GetPermissionMappingCategoryID()
-//	if errper != nil {
-//		fmt.Println("GetTacticsList Err:", errper.Error())
-//		return
-//	}
-//	for k, v := range list {
+//	for _, v := range list {
+//		for _, vs := range listSummarys {
+//			vint, _ := strconv.Atoi(vs)
+//			//fmt.Printf("vint 的类型 %T", vint)
+//			//fmt.Println("————————————")
+//			//fmt.Printf("vCategoryId 的类型 %T", v.CategoryId)
+//			//fmt.Println("————————————")
+//
+//			if v.CategoryId == vint {
 //
-//		//是否属于纪要库
-//		//countSummary, err := models.GetPermissionMappingById(v.CategoryId)
-//		//if err != nil && err.Error() != utils.ErrNoRow() {
-//		//	br.Msg = "参数解析异常!"
-//		//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//		//	return
-//		//}
-//		//if countSummary > 0 {
-//		//	v.IsSummary = 1
-//		//}
-//		for _, vSum := range listSummary {
-//			if v.CategoryId == vSum.CategoryId {
-//				v.IsSummary = 1
 //			}
 //		}
-//		//是否属于报告
-//		//countReport, err := models.GetReportMappingById(v.CategoryId)
-//		//if err != nil && err.Error() != utils.ErrNoRow() {
-//		//	br.Msg = "参数解析异常!"
-//		//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//		//	return
-//		//}
-//		for _, vPer := range listPermission {
-//			if v.CategoryId == vPer.CategoryId {
-//				v.IsReport = 1
-//			}
+//	}
+//
+//	br.Msg = "测试!"
+//	br.ErrMsg = "参数解析失败,Err:"
+//	return
+
+//listSummary, errsu := models.GetReportMappingCategoryID()
+//if errsu != nil {
+//	fmt.Println("GetTacticsList Err:", errsu.Error())
+//	return
+//}
+//
+//listPermission, errper := models.GetPermissionMappingCategoryID()
+//if errper != nil {
+//	fmt.Println("GetTacticsList Err:", errper.Error())
+//	return
+//}
+//for k, v := range list {
+//
+//	//是否属于纪要库
+//	//countSummary, err := models.GetPermissionMappingById(v.CategoryId)
+//	//if err != nil && err.Error() != utils.ErrNoRow() {
+//	//	br.Msg = "参数解析异常!"
+//	//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//	//	return
+//	//}
+//	//if countSummary > 0 {
+//	//	v.IsSummary = 1
+//	//}
+//	for _, vSum := range listSummary {
+//		if v.CategoryId == vSum.CategoryId {
+//			v.IsSummary = 1
 //		}
-//		if v.IsReport > 0 {
-//			//是否属于策略 策略自动归类
-//			//是否属于行业报告 行业报告自动归类
-//			if v.CategoryId == 7 || v.CategoryId == 11 || v.CategoryId == 51 || v.CategoryId == 52 || v.CategoryId == 64 || v.CategoryId == 80 || v.CategoryId == 87 {
-//				v.IsClass = 1
-//			}
-//			if v.CategoryId == 64 || v.CategoryId == 87 || v.CategoryId == 80 {
-//				v.ReportType = 2 //是否属于行业报告
-//			} else {
-//				v.ReportType = 1 //是否属于产业报告
-//			}
+//	}
+//	//是否属于报告
+//	//countReport, err := models.GetReportMappingById(v.CategoryId)
+//	//if err != nil && err.Error() != utils.ErrNoRow() {
+//	//	br.Msg = "参数解析异常!"
+//	//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//	//	return
+//	//}
+//	for _, vPer := range listPermission {
+//		if v.CategoryId == vPer.CategoryId {
+//			v.IsReport = 1
 //		}
-//		v.Department = "弘则权益研究"
-//		fmt.Println(k, v.ArticleId)
-//		hh, _ := time.ParseDuration("8h")
-//		//pDate := publishDate.Add(hh)
-//		v.PublishDate = v.PublishDate.Add(hh)
-//		//判断是否已经存在
-//		if v.ArticleId < 0 {
-//			if err != nil {
-//				br.Msg = "参数解析异常!"
-//				br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//				return
-//			}
+//	}
+//	if v.IsReport > 0 {
+//		//是否属于策略 策略自动归类
+//		//是否属于行业报告 行业报告自动归类
+//		if v.CategoryId == 7 || v.CategoryId == 11 || v.CategoryId == 51 || v.CategoryId == 52 || v.CategoryId == 64 || v.CategoryId == 80 || v.CategoryId == 87 {
+//			v.IsClass = 1
+//		}
+//		if v.CategoryId == 64 || v.CategoryId == 87 || v.CategoryId == 80 {
+//			v.ReportType = 2 //是否属于行业报告
+//		} else {
+//			v.ReportType = 1 //是否属于产业报告
 //		}
-//		count, err := models.GetArticleCountById(v.ArticleId)
-//		if err != nil && err.Error() != utils.ErrNoRow() {
+//	}
+//	v.Department = "弘则权益研究"
+//	fmt.Println(k, v.ArticleId)
+//	hh, _ := time.ParseDuration("8h")
+//	//pDate := publishDate.Add(hh)
+//	v.PublishDate = v.PublishDate.Add(hh)
+//	//判断是否已经存在
+//	if v.ArticleId < 0 {
+//		if err != nil {
 //			br.Msg = "参数解析异常!"
 //			br.ErrMsg = "参数解析失败,Err:" + err.Error()
 //			return
 //		}
-//		fmt.Println(v.IsClass)
-//		v.Body = strings.Replace(v.Body, "http://vmp.hzinsights.com", "https://vmp.hzinsights.com", -1)
-//		expertNumStr, expertContentStr, interviewDateStr := services.BodyAnalysis(v.Body)
-//		if count > 0 {
-//			fmt.Println(k, v.ArticleId, "edit")
-//			//articleInfo, err := models.GetArticleDetailById(v.ArticleId)
-//			//if err != nil {
-//			//	br.Msg = "同步失败!文章ID:" + strconv.Itoa(v.ArticleId)
-//			//	br.ErrMsg = "同步失败,Err:" + err.Error()
-//			//	return
-//			//}
-//			//if articleInfo.IsClass == 1 {
-//			//	v.IsClass = 1
-//			//}
-//			bodyText, _ := services.GetReportContentTextSub(v.Body)
-//			updateParams := make(map[string]interface{})
-//			updateParams["Title"] = v.Title
-//			updateParams["TitleEn"] = v.TitleEn
-//			updateParams["UpdateFrequency"] = v.UpdateFrequency
-//			updateParams["CreateDate"] = v.CreateDate
-//			updateParams["PublishDate"] = v.PublishDate
-//			updateParams["Body"] = html.EscapeString(v.Body)
-//			updateParams["BodyText"] = bodyText
-//			updateParams["Abstract"] = html.EscapeString(v.Abstract)
-//			updateParams["CategoryName"] = v.CategoryName
-//			updateParams["SubCategoryName"] = v.SubCategoryName
-//			updateParams["CategoryId"] = v.CategoryId
-//			updateParams["PublishStatus"] = v.PublishStatus
-//			updateParams["ExpertBackground"] = expertContentStr
-//			updateParams["ExpertNumber"] = expertNumStr
-//			updateParams["InterviewDate"] = interviewDateStr
-//			updateParams["IsClass"] = v.IsClass
-//			updateParams["IsSummary"] = v.IsSummary
-//			updateParams["IsReport"] = v.IsReport
-//			updateParams["ReportType"] = v.ReportType
-//			if v.Department != "弘则权益研究" {
-//				v.Department = "弘则权益研究"
-//			}
-//			updateParams["Department"] = v.Department
-//			whereParam := map[string]interface{}{"article_id": v.ArticleId}
-//			err = models.UpdateByExpr(models.CygxArticle{}, whereParam, updateParams)
-//			if err != nil {
-//				fmt.Println("UpdateByExpr Err:" + err.Error())
-//			}
-//		} else {
-//			fmt.Println(k, v.ArticleId, "add")
-//			item := new(models.CygxArticle)
-//			articleIdInt := v.ArticleId
-//			item.ArticleId = articleIdInt
-//			item.Title = v.Title
-//			item.TitleEn = v.TitleEn
-//			item.UpdateFrequency = v.UpdateFrequency
-//			item.CreateDate = v.CreateDate
-//			item.PublishDate = v.PublishDate.Format(utils.FormatDateTime)
-//			item.Body = html.EscapeString(v.Body)
-//			item.Abstract = html.EscapeString(v.Abstract)
-//			item.CategoryName = v.CategoryName
-//			item.SubCategoryName = v.SubCategoryName
-//			item.CategoryId = v.CategoryId
-//			item.PublishStatus = v.PublishStatus
-//			item.ExpertBackground = expertContentStr
-//			item.ExpertNumber = expertNumStr
-//			item.InterviewDate = interviewDateStr
-//			item.Department = v.Department
-//			item.ArticleIdMd5 = utils.MD5(strconv.Itoa(articleIdInt))
-//			item.IsClass = v.IsClass
-//			item.IsSummary = v.IsSummary
-//			item.IsReport = v.IsReport
-//			item.ReportType = v.ReportType
-//			_, err = models.AddCygxArticles(item)
-//			if err != nil {
-//				fmt.Println("AddCygxArticle Err:", err.Error())
-//				br.Msg = "参数解析异常!"
-//				br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//				return
-//			}
+//	}
+//	count, err := models.GetArticleCountById(v.ArticleId)
+//	if err != nil && err.Error() != utils.ErrNoRow() {
+//		br.Msg = "参数解析异常!"
+//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//		return
+//	}
+//	fmt.Println(v.IsClass)
+//	v.Body = strings.Replace(v.Body, "http://vmp.hzinsights.com", "https://vmp.hzinsights.com", -1)
+//	expertNumStr, expertContentStr, interviewDateStr := services.BodyAnalysis(v.Body)
+//	if count > 0 {
+//		fmt.Println(k, v.ArticleId, "edit")
+//		//articleInfo, err := models.GetArticleDetailById(v.ArticleId)
+//		//if err != nil {
+//		//	br.Msg = "同步失败!文章ID:" + strconv.Itoa(v.ArticleId)
+//		//	br.ErrMsg = "同步失败,Err:" + err.Error()
+//		//	return
+//		//}
+//		//if articleInfo.IsClass == 1 {
+//		//	v.IsClass = 1
+//		//}
+//		bodyText, _ := services.GetReportContentTextSub(v.Body)
+//		updateParams := make(map[string]interface{})
+//		updateParams["Title"] = v.Title
+//		updateParams["TitleEn"] = v.TitleEn
+//		updateParams["UpdateFrequency"] = v.UpdateFrequency
+//		updateParams["CreateDate"] = v.CreateDate
+//		updateParams["PublishDate"] = v.PublishDate
+//		updateParams["Body"] = html.EscapeString(v.Body)
+//		updateParams["BodyText"] = bodyText
+//		updateParams["Abstract"] = html.EscapeString(v.Abstract)
+//		updateParams["CategoryName"] = v.CategoryName
+//		updateParams["SubCategoryName"] = v.SubCategoryName
+//		updateParams["CategoryId"] = v.CategoryId
+//		updateParams["PublishStatus"] = v.PublishStatus
+//		updateParams["ExpertBackground"] = expertContentStr
+//		updateParams["ExpertNumber"] = expertNumStr
+//		updateParams["InterviewDate"] = interviewDateStr
+//		updateParams["IsClass"] = v.IsClass
+//		updateParams["IsSummary"] = v.IsSummary
+//		updateParams["IsReport"] = v.IsReport
+//		updateParams["ReportType"] = v.ReportType
+//		if v.Department != "弘则权益研究" {
+//			v.Department = "弘则权益研究"
 //		}
-//		//纪要库的数据同步到Es
-//		if v.IsSummary == 1 {
-//			content := html.UnescapeString(v.Body)
-//			doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
-//			if err != nil {
-//				fmt.Println("create doc err:", err.Error())
-//				br.Msg = "参数解析异常!"
-//				br.ErrMsg = "参数解析失败,Err:" + err.Error()
-//				return
-//			}
-//			doc.Find("a").Each(func(i int, a *goquery.Selection) {
-//				a.Remove()
-//			})
-//			bodyText := doc.Text()
-//			item := new(services.ElasticTestArticleDetail)
-//			item.ArticleId = v.ArticleId
-//			item.Title = v.Title
-//			item.BodyText = bodyText
-//			item.PublishDate = v.PublishDate.Format(utils.FormatDateTime)
-//			services.EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
+//		updateParams["Department"] = v.Department
+//		whereParam := map[string]interface{}{"article_id": v.ArticleId}
+//		err = models.UpdateByExpr(models.CygxArticle{}, whereParam, updateParams)
+//		if err != nil {
+//			fmt.Println("UpdateByExpr Err:" + err.Error())
+//		}
+//	} else {
+//		fmt.Println(k, v.ArticleId, "add")
+//		item := new(models.CygxArticle)
+//		articleIdInt := v.ArticleId
+//		item.ArticleId = articleIdInt
+//		item.Title = v.Title
+//		item.TitleEn = v.TitleEn
+//		item.UpdateFrequency = v.UpdateFrequency
+//		item.CreateDate = v.CreateDate
+//		item.PublishDate = v.PublishDate.Format(utils.FormatDateTime)
+//		item.Body = html.EscapeString(v.Body)
+//		item.Abstract = html.EscapeString(v.Abstract)
+//		item.CategoryName = v.CategoryName
+//		item.SubCategoryName = v.SubCategoryName
+//		item.CategoryId = v.CategoryId
+//		item.PublishStatus = v.PublishStatus
+//		item.ExpertBackground = expertContentStr
+//		item.ExpertNumber = expertNumStr
+//		item.InterviewDate = interviewDateStr
+//		item.Department = v.Department
+//		item.ArticleIdMd5 = utils.MD5(strconv.Itoa(articleIdInt))
+//		item.IsClass = v.IsClass
+//		item.IsSummary = v.IsSummary
+//		item.IsReport = v.IsReport
+//		item.ReportType = v.ReportType
+//		_, err = models.AddCygxArticles(item)
+//		if err != nil {
+//			fmt.Println("AddCygxArticle Err:", err.Error())
+//			br.Msg = "参数解析异常!"
+//			br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//			return
 //		}
 //	}
-//	br.Ret = 200
-//	br.Success = true
-//	br.Msg = "同步成功"
-//
+//	//纪要库的数据同步到Es
+//	if v.IsSummary == 1 {
+//		content := html.UnescapeString(v.Body)
+//		doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
+//		if err != nil {
+//			fmt.Println("create doc err:", err.Error())
+//			br.Msg = "参数解析异常!"
+//			br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//			return
+//		}
+//		doc.Find("a").Each(func(i int, a *goquery.Selection) {
+//			a.Remove()
+//		})
+//		bodyText := doc.Text()
+//		item := new(services.ElasticTestArticleDetail)
+//		item.ArticleId = v.ArticleId
+//		item.Title = v.Title
+//		item.BodyText = bodyText
+//		item.PublishDate = v.PublishDate.Format(utils.FormatDateTime)
+//		services.EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
+//	}
+//}
+//br.Ret = 200
+//br.Success = true
+//br.Msg = "同步成功"
 //}

+ 31 - 6
controllers/chart_permission.go

@@ -1,12 +1,19 @@
 package controllers
 
-import "hongze/hongze_cygx/models"
+import (
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+)
 
 //品种
 type ChartPermissionController struct {
 	BaseCommonController
 }
 
+type ChartPermissionAuthController struct {
+	BaseAuthController
+}
+
 // @Title 获取所有品种
 // @Description 获取用户详情接口
 // @Success 200 {object} models.ChartPermissionResp
@@ -31,7 +38,6 @@ func (this *ChartPermissionController) Detail() {
 	br.Data = resp
 }
 
-
 // @Title 获取报告所有品种
 // @Description 获取报告所有品种接口
 // @Success 200 {object} models.ChartPermissionResp
@@ -60,22 +66,41 @@ func (this *ChartPermissionController) ReportDetail() {
 // @Description 获取策略下的所有分类接口
 // @Success 200 {object} models.ReportMappingResp
 // @router /strategyAll [get]
-func (this *ChartPermissionController) StrategyDetail() {
+func (this *ChartPermissionAuthController) StrategyDetail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	list, err := models.GetReportMappingStrategyAll()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	list, err := models.GetReportMappingStrategyHomeAll()
+
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
-	resp := new(models.ReportMappingResp)
+	for k, v := range list {
+		count, err := models.GetUserIsReadThisNewCategoryArticleCount(v.CategoryId, uid)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		if count == 0 {
+			list[k].IsRed = true
+		}
+	}
+	resp := new(models.ReportMappingHomeResp)
 	resp.List = list
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 170 - 5
controllers/report.go

@@ -4,6 +4,10 @@ import (
 	"encoding/json"
 	"fmt"
 	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/services"
+	"hongze/hongze_cygx/utils"
+	"rdluck_tools/paging"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -28,17 +32,30 @@ func (this *ReportController) TradeList() {
 		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")
 	if ChartPermissionId < 1 {
 		br.Msg = "请输入分类ID"
 		return
 	}
-	list, err := models.GetTradeAll(ChartPermissionId)
+	list, err := models.GetTradeAll(uid, ChartPermissionId)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
+	for k, v := range list {
+		list[k].UpdateTime = utils.TimeRemoveHms(v.UpdateTime)
+		if v.Readnum == 0 {
+			list[k].IsRed = true
+		}
+	}
 	resp := new(models.TradeReportMappingResp)
 	resp.List = list
 	br.Ret = 200
@@ -59,17 +76,47 @@ func (this *ReportController) IndustryList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	var orderSrt string
 	ChartPermissionId, _ := this.GetInt("ChartPermissionId")
+	orderColumn := this.GetString("OrderColumn")
+
+	if orderColumn == " " {
+		orderColumn = "NewTime"
+	}
 	if ChartPermissionId < 1 {
 		br.Msg = "请输入分类ID"
 		return
 	}
-	list, err := models.GetIndustrialManagementAll(ChartPermissionId)
+	listTop, err := models.GetIndustrialManagementTopAll(ChartPermissionId, uid)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
+	fmt.Println(len(listTop))
+	for k, _ := range listTop {
+		listTop[k].IsTop = true
+	}
+	if orderColumn == "NewTime" {
+		orderSrt = "art.publish_date DESC"
+	} else {
+		orderSrt = "man.recommended_index DESC"
+	}
+
+	list, err := models.GetIndustrialManagementAll(ChartPermissionId, uid, orderSrt)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	list = append(listTop, list...)
 	for k, v := range list {
 		var analystStr string
 		analystList, err := models.GetIndustrialAnalystAll(v.IndustrialManagementId)
@@ -78,7 +125,6 @@ func (this *ReportController) IndustryList() {
 			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 			return
 		}
-		list[k].AnalystList = analystList
 		industrialSubjectList, err := models.GetIndustrialSubjectAll(v.IndustrialManagementId)
 		if err != nil {
 			br.Msg = "获取信息失败"
@@ -93,6 +139,24 @@ func (this *ReportController) IndustryList() {
 			analystStr = strings.TrimRight(analystStr, "/")
 		}
 		list[k].Analyst = analystStr
+		list[k].LayoutTime = utils.TimeRemoveHms(v.LayoutTime)
+		newArtinfo, err := models.GetIndustrialNewArticleDetail(v.IndustrialManagementId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+		list[k].UpdateTime = utils.TimeRemoveHms(newArtinfo.PublishDate)
+		recordCount, err := models.GetUserToArticleCount(uid, newArtinfo.ArticleId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(newArtinfo.ArticleId)
+			return
+		}
+		if recordCount == 0 {
+			list[k].IsRed = true
+		}
+
 	}
 	resp := new(models.IndustrialManagementList)
 	resp.List = list
@@ -113,6 +177,13 @@ func (this *ReportController) ArticleCategoryList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
 	industrialManagementId, _ := this.GetInt("IndustrialManagementId")
 	if industrialManagementId < 1 {
 		br.Msg = "请输入分类ID"
@@ -124,8 +195,19 @@ func (this *ReportController) ArticleCategoryList() {
 		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
 		return
 	}
+
+	for k, v := range list {
+		recordCount, err := models.IndustrialUserRecordArticleCount(uid, industrialManagementId, v.CategoryId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
+			return
+		}
+		if recordCount == 0 {
+			list[k].IsRed = true
+		}
+	}
 	detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
-	fmt.Println(detail)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
@@ -133,8 +215,91 @@ func (this *ReportController) ArticleCategoryList() {
 	}
 	resp := new(models.IndustrialToArticleCategoryListRep)
 	resp.List = list
-	resp.LayoutTime = detail.LayoutTime
+	resp.LayoutTime = utils.TimeRemoveHms(detail.LayoutTime)
 	resp.IndustryName = detail.IndustryName
+	resp.IndustrialManagementId = industrialManagementId
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 产业文章列表接口
+// @Description 获取产业文章列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   CategoryId   query   int  true       "分类ID"
+// @Param   IndustrialManagementId   query   int  true       "产业ID"
+// @Success 200 {object} models.TacticsListResp
+// @router /industry/ArticleList [get]
+func (this *ReportController) List() {
+	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
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	categoryId, _ := this.GetInt("CategoryId")
+	industrialManagementId, _ := this.GetInt("IndustrialManagementId")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+	var pars []interface{}
+	var total int
+	resp := new(models.TacticsListResp)
+	page := paging.GetPaging(currentIndex, pageSize, total)
+
+	if categoryId < 1 {
+		br.Msg = "请输入分类ID"
+		return
+	}
+	if industrialManagementId < 1 {
+		br.Msg = "请输入产业ID"
+		return
+	}
+
+	total, err := models.GetReportIndustrialCount(categoryId, industrialManagementId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.Msg = "获取帖子总数失败,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.Msg = "获取帖子数据失败,Err:" + err.Error()
+		return
+	}
+	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 {
+			list[k].IsRed = true
+		}
+	}
+	resp.List = list
+	resp.Paging = page
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 4 - 7
controllers/tactics.go

@@ -21,8 +21,8 @@ type TacticsCommonController struct {
 	BaseCommonController
 }
 
-// @Title 策略、行业、产业列表接口
-// @Description 获取策略、行业、产业通用列表接口
+// @Title 策略、行业列表接口
+// @Description 获取策略、行业 通用列表接口
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Param   CategoryId   query   int  true       "分类ID"
@@ -82,7 +82,7 @@ func (this *TacticsController) List() {
 		br.Msg = "获取帖子总数失败,Err:" + err.Error()
 		return
 	}
-	uid = 42017
+
 	page = paging.GetPaging(currentIndex, pageSize, total)
 	list, err := models.GetReportTacticsList(condition, pars, uid, startSize, pageSize)
 	if err != nil {
@@ -99,10 +99,7 @@ func (this *TacticsController) List() {
 	}
 
 	for k, v := range list {
-		fmt.Println(v.Re)
-		if v.Re > 0 {
-			list[k].IsRed = false
-		} else {
+		if v.Readnum == 0 {
 			list[k].IsRed = true
 		}
 	}

+ 14 - 2
models/article.go

@@ -257,7 +257,7 @@ type ReportArticle struct {
 	SubCategoryName  string `description:"二级分类"`
 	ExpertBackground string `description:"专家背景"`
 	IsRed            bool   `description:"是否标记红点"`
-	Re               int    `description:"阅读数量"`
+	Readnum          int    `description:"阅读数量"`
 }
 
 func GetReportPermission(categoryName string) (item []*ChartPermission, err error) {
@@ -275,7 +275,7 @@ type ReportMappingCategoryRep struct {
 
 func GetReportMappingCategoryID() (item []*ReportMappingCategoryRep, err error) {
 	o := orm.NewOrm()
-	sql := ` SELECT category_id FROM cygx_permission_mapping  GROUP BY category_id `
+	sql := ` SELECT category_id FROM cygx_permission_mapping  GROUP BY category_id  `
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
@@ -290,3 +290,15 @@ func GetPermissionMappingCategoryID() (item []*PermissionMappingCategoryRep, err
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+//检查用户是否阅读某一分类最新文章
+func GetUserIsReadThisNewCategoryArticleCount(categoryId, uid int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) as count FROM
+	cygx_article_history_record 
+	WHERE
+	article_id = ( SELECT article_id FROM cygx_article WHERE category_id = ? ORDER BY publish_date DESC LIMIT 0, 1 )
+	AND user_id = ?`
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, categoryId, uid).QueryRow(&count)
+	return
+}

+ 8 - 0
models/article_history_record.go

@@ -44,3 +44,11 @@ func AddCygxArticleHistoryRecord(item *CygxArticleHistoryRecord) (lastId int64,
 	}
 	return
 }
+
+//获取用户阅读记录
+func GetUserToArticleCount(uid, articleId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_article_history_record WHERE user_id=? AND article_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid, articleId).QueryRow(&count)
+	return
+}

+ 2 - 0
models/home.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"fmt"
 	"rdluck_tools/orm"
 	"rdluck_tools/paging"
 )
@@ -26,6 +27,7 @@ func GetHomeList(condition string, pars []interface{}, startSize, pageSize int)
 		sql += condition
 	}
 	sql += ` ORDER BY publish_date DESC LIMIT ?,? `
+	fmt.Println(sql)
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 60 - 7
models/industrial_management.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"rdluck_tools/orm"
+	"strconv"
 )
 
 type IndustrialManagementRep struct {
@@ -11,18 +12,54 @@ type IndustrialManagementRep struct {
 	LayoutTime        string `description:"布局时间"`
 }
 
-//产业列表
-func GetIndustrialManagementAll(ChartPermissionId int) (items []*IndustrialManagement, err error) {
+//产业列表 不置顶
+func GetIndustrialManagementAll(ChartPermissionId, uid int, orderSrt string) (items []*IndustrialManagement, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT *
-		FROM
-		cygx_industrial_management AS man 
-		WHERE
-		man.chart_permission_id = ?`
+	sql := `SELECT
+	man.*,
+	art.publish_date AS update_time,(
+	SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(uid) + ` AND rec.article_id = art.article_id ) AS readnum 
+FROM
+	cygx_industrial_management AS man
+	INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
+	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
+	INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id 
+WHERE
+	man.chart_permission_id = ? 
+	AND man.industrial_management_id NOT IN ( SELECT industrial_management_id FROM cygx_industry_top WHERE user_id = ` + strconv.Itoa(uid) + ` ) 
+	AND re.report_type = 2 
+	AND art.is_report = 1
+GROUP BY
+	man.industry_name 
+ORDER BY ` + orderSrt
 	_, err = o.Raw(sql, ChartPermissionId).QueryRows(&items)
 	return
 }
 
+//产业列表 -置顶
+func GetIndustrialManagementTopAll(ChartPermissionId, uid int) (items []*IndustrialManagement, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	man.*
+FROM
+	cygx_industrial_management AS man
+     INNER  JOIN cygx_industry_top as top ON man.industrial_management_id = top.industrial_management_id 
+	INNER JOIN cygx_report_mapping AS re ON re.chart_permission_id = man.chart_permission_id
+	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.industrial_management_id = man.industrial_management_id
+	INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id 
+WHERE
+	man.chart_permission_id = ` + strconv.Itoa(ChartPermissionId) + `
+	AND top.user_id = ` + strconv.Itoa(uid) + `
+	AND re.report_type = 2 
+	AND art.is_report = 1
+GROUP BY
+	man.industry_name 
+ORDER BY
+	top.create_time DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 //标的列表
 func GetIndustrialSubjectAll(IndustrialManagementId int) (items []*IndustrialSubject, err error) {
 	o := orm.NewOrm()
@@ -53,3 +90,19 @@ func GetIndustrialManagementDetail(industrialManagementId int) (items *Industria
 	err = o.Raw(sql, industrialManagementId).QueryRow(&items)
 	return
 }
+
+//获取该产业下最新的文章详情
+func GetIndustrialNewArticleDetail(industrialManagementId int) (item *ArticleDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	* 
+FROM
+	cygx_article 
+WHERE
+	article_id IN ( SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) 
+ORDER BY
+	publish_date DESC 
+	LIMIT 0,1`
+	err = o.Raw(sql, industrialManagementId).QueryRow(&item)
+	return
+}

+ 66 - 0
models/report.go

@@ -1,5 +1,11 @@
 package models
 
+import (
+	"rdluck_tools/orm"
+	"strconv"
+	//"rdluck_tools/paging"
+)
+
 type IndustrialManagementList struct {
 	List []*IndustrialManagement
 }
@@ -8,6 +14,7 @@ type IndustrialManagement struct {
 	IndustrialManagementId int                  `orm:"column(industrial_management_id);pk" description:"产业id"`
 	IndustryName           string               `description:"产业名称"`
 	RecommendedIndex       int                  `description:"推荐指数"`
+	CategoryId             int                  `description:"文章分类ID"`
 	LayoutTime             string               `description:"布局时间"`
 	UpdateTime             string               `description:"更新时间"`
 	IsRed                  bool                 `description:"是否标记红点"`
@@ -27,3 +34,62 @@ type IndustrialSubject struct {
 	IndustrialManagementId int    `description:"产业id"`
 	SubjectName            string `description:"标的名称"`
 }
+
+//获取产业报告数量
+func GetReportIndustrialCount(categoryId, industrialManagementId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `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 category_id  = ?
+	AND man_g.industrial_management_id = ?`
+	err = o.Raw(sql, categoryId, industrialManagementId).QueryRow(&count)
+	return
+}
+
+//获取产业报告列表
+func GetReportIndustrialList(pars []interface{}, categoryId, industrialManagementId, userId, startSize, pageSize int) (items []*ReportArticle, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *,( SELECT COUNT( 1 ) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND rec.article_id = a.article_id ) AS readnum 
+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 category_id  = ?
+	AND man_g.industrial_management_id = ?`
+	sql += ` ORDER BY publish_date DESC LIMIT ?,? `
+	_, err = o.Raw(sql, pars, categoryId, industrialManagementId, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//产业下所关联的文章分类列表
+func IndustrialToArticleCategory(industrialManagementId int) (items []*IndustrialToArticleCategoryRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT map.match_type_name,map.category_id
+    FROM cygx_report_mapping AS map
+	INNER JOIN cygx_article AS art ON art.category_id = map.category_id
+	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = art.article_id
+	WHERE map.report_type = 2 
+	AND man_g.industrial_management_id =?
+	GROUP BY map.match_type_name`
+	_, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
+	return
+}
+
+//判断用户是否阅读该产业下,某一分类的文章
+func IndustrialUserRecordArticleCount(userId, industrialManagementId, categoryId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	COUNT(1) count
+FROM
+	cygx_article_history_record 
+WHERE
+	article_id = ( SELECT article_id FROM cygx_article WHERE article_id IN (SELECT article_id FROM cygx_industrial_article_group_management WHERE industrial_management_id = ? ) AND category_id = ? ORDER BY publish_date DESC LIMIT 0, 1 ) 
+	AND user_id = ? `
+	err = o.Raw(sql, industrialManagementId, categoryId, userId).QueryRow(&count)
+	return
+}

+ 59 - 27
models/report_mapping.go

@@ -1,24 +1,40 @@
 package models
 
-import "rdluck_tools/orm"
+import (
+	"rdluck_tools/orm"
+)
 
 type ReportMapping struct {
 	CategoryId      int    `description:"分类ID"`
-	SubCategoryName string `description:"权限名称"`
-	IsRead          bool   `description:"是否标红"`
+	SubCategoryName string `description:"主题"`
+	MathTypeName    string `description:"分类名称"`
+	IsRed           bool   `description:"是否标红"`
+}
+
+type ReportMappingHome struct {
+	CategoryId      int    `description:"分类ID"`
+	SubCategoryName string `description:"主题名称"`
+	MatchTypeName   string `description:"匹配类型"`
+	IsRed           bool   `description:"是否标红"`
 }
 
 type TradeReportMapping struct {
 	CategoryId      int    `description:"分类ID"`
-	SubCategoryName string `description:"权限名称"`
-	IsRead          bool   `description:"是否标红"`
+	SubCategoryName string `description:"主题名称"`
+	MatchTypeName   string `description:"匹配类型"`
+	IsRed           bool   `description:"是否标红"`
 	UpdateTime      string `description:"更新时间"`
+	Readnum         int    `description:"阅读数量"`
 }
 
 type ReportMappingResp struct {
 	List []*ReportMapping
 }
 
+type ReportMappingHomeResp struct {
+	List []*ReportMappingHome
+}
+
 type TradeReportMappingResp struct {
 	List []*TradeReportMapping
 }
@@ -31,36 +47,52 @@ func GetReportMappingStrategyAll() (items []*ReportMapping, err error) {
 	return
 }
 
+//获取策略下面的所有分类
+func GetReportMappingStrategyHomeAll() (items []*ReportMappingHome, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	re.category_id,re.sub_category_name,re.match_type_name
+FROM
+	cygx_report_mapping AS re
+	INNER JOIN cygx_article AS art ON art.category_id = re.category_id 
+WHERE
+	re.report_type = 1 
+	AND re.chart_permission_id = 23 
+GROUP  BY
+	re.match_type_name
+ORDER BY
+	sort DESC , art.publish_date DESC`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
 //行业列表
-func GetTradeAll(ChartPermissionId int) (items []*TradeReportMapping, err error) {
+func GetTradeAll(uid, ChartPermissionId int) (items []*TradeReportMapping, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM cygx_report_mapping WHERE chart_permission_id = ? AND report_type = 1;`
-	_, err = o.Raw(sql, ChartPermissionId).QueryRows(&items)
+	//sql := `SELECT * FROM cygx_report_mapping WHERE chart_permission_id = ? AND report_type = 1;`
+	sql := `SELECT
+	art.article_id,art.publish_date as update_time ,re.category_id,re.sub_category_name,( SELECT COUNT( 1 ) FROM  cygx_article_history_record AS rec WHERE rec.user_id = ? AND rec.article_id = art.article_id ) AS readnum
+	FROM
+		cygx_report_mapping  as re
+        INNER JOIN cygx_article  as art ON re.category_id = art.category_id
+	WHERE
+	re.chart_permission_id = ?
+	AND re.report_type = 1
+	ORDER BY art.publish_date DESC
+	LIMIT 0,1`
+	_, err = o.Raw(sql, uid, ChartPermissionId).QueryRows(&items)
 	return
 }
 
 type IndustrialToArticleCategoryRep struct {
 	CategoryId    int    `description:"分类ID"`
-	MatchTypeName string `description:"权限名称"`
-	IsRead        bool   `description:"是否标红"`
+	MatchTypeName string `description:"匹配类型"`
+	IsRed         bool   `description:"是否标红"`
 }
 
 type IndustrialToArticleCategoryListRep struct {
-	LayoutTime   string `description:"布局时间"`
-	IndustryName string `description:"产业名称"`
-	List         []*IndustrialToArticleCategoryRep
-}
-
-//产业下所关联的文章分类列表
-func IndustrialToArticleCategory(industrialManagementId int) (items []*IndustrialToArticleCategoryRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT map.match_type_name,map.category_id
-    FROM cygx_report_mapping AS map
-	INNER JOIN cygx_article AS art ON art.category_id = map.category_id
-	INNER JOIN cygx_industrial_article_group_management AS man_g ON man_g.article_id = art.article_id
-	WHERE map.report_type = 2 
-	AND man_g.industrial_management_id =?
-	GROUP BY map.match_type_name`
-	_, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
-	return
+	LayoutTime             string `description:"布局时间"`
+	IndustryName           string `description:"产业名称"`
+	IndustrialManagementId int    `description:"产业D"`
+	List                   []*IndustrialToArticleCategoryRep
 }

+ 5 - 5
models/tactics.go

@@ -90,8 +90,8 @@ func GetTacticsList2(endDate string) (list []*Tactics2, err error) {
 			INNER JOIN article_content AS b ON a.id=b.article_id
 			INNER JOIN article_category AS c ON a.id=c.article_id
 			INNER JOIN article_categoryinfo AS d ON c.category_id=d.id
-			WHERE a.publish_status=1  AND a.publish_date>=? AND d.id IN (7,11,28,32,45,50,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,95,96) 
-            AND a.id NOT IN (3454,3456,3457,3459,2449,2450,2453,2454,2459,2530,2583,2663,2670,2699,2715,2732,2748,2759,2399,2356,2870,3173,2978,2826,3470) `
+			WHERE a.publish_status=1  AND a.publish_date>=? AND d.id IN (7,11,28,32,45,50,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,95,96) `
+	//AND a.id NOT IN (3454,3456,3457,3459,2449,2450,2453,2454,2459,2530,2583,2663,2670,2699,2715,2732,2748,2759,2399,2356,2870,3173,2978,2826,3470) `
 	//IN(85,71)
 	_, err = o.Raw(sql, endDate).QueryRows(&list)
 	return
@@ -105,8 +105,8 @@ func GetTacticsListAll2() (list []*Tactics2, err error) {
 			INNER JOIN article_content AS b ON a.id=b.article_id
 			INNER JOIN article_category AS c ON a.id=c.article_id
 			INNER JOIN article_categoryinfo AS d ON c.category_id=d.id
-			WHERE a.publish_status=1  AND d.id IN (7,11,28,32,45,50,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,95,96) 
-            AND a.id NOT IN (3454,3456,3457,3459,2449,2450,2453,2454,2459,2530,2583,2663,2670,2699,2715,2732,2748,2759,2399,2356,2870,3173,2978,2826,3470) `
+			WHERE a.publish_status=1  AND d.id IN (7,11,28,32,45,50,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,95,96) `
+	//AND a.id NOT IN (3454,3456,3457,3459,2449,2450,2453,2454,2459,2530,2583,2663,2670,2699,2715,2732,2748,2759,2399,2356,2870,3173,2978,2826,3470) `
 	//IN(85,71)
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
@@ -119,7 +119,7 @@ type TacticsListResp struct {
 
 func GetReportTacticsList(condition string, pars []interface{}, userId, startSize, pageSize int) (items []*ReportArticle, err error) {
 	o := orm.NewOrm()
-	sql := ` SELECT * ,(SELECT COUNT(1) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND  rec.article_id=a.article_id) AS re
+	sql := ` SELECT * ,(SELECT COUNT(1) FROM cygx_article_history_record AS rec WHERE rec.user_id = ` + strconv.Itoa(userId) + ` AND  rec.article_id=a.article_id) AS readnum
                  FROM cygx_article AS a
                 WHERE a.publish_status=1 `
 	if condition != "" {

+ 1 - 0
routers/router.go

@@ -42,6 +42,7 @@ func init() {
 		beego.NSNamespace("/permission",
 			beego.NSInclude(
 				&controllers.ChartPermissionController{},
+				&controllers.ChartPermissionAuthController{},
 			),
 		),
 		beego.NSNamespace("/article",

+ 31 - 35
services/tactics.go

@@ -300,40 +300,36 @@ func SyncTacticsListAddreport() (err error) {
 	}
 	fmt.Println("list len:", len(list))
 
-	listSummary, errsu := models.GetReportMappingCategoryID()
-	if errsu != nil {
-		fmt.Println("GetTacticsList Err:", errsu.Error())
-		return
-	}
+	summaryCategoryIds := "28,32,45,50,57,62,72,74,79,84,86,88,90,95,96" //纪要库的文章类型categoty_id
+	listSummary := strings.Split(summaryCategoryIds, ",")
+	//listSummary, errsu := models.GetReportMappingCategoryID()
+	//if errsu != nil {
+	//	fmt.Println("GetTacticsList Err:", errsu.Error())
+	//	return
+	//}
 
+	noSummaryArticleIds := "3454,3456,3457,3459,2449,2450,2453,2454,2459,2530,2583,2663,2670,2699,2715,2732,2748,2759,2399,2356,2870,3173,2978,2826,3470" //非纪要库类型的文章ID
+	listNoSummaryArticleIds := strings.Split(noSummaryArticleIds, ",")
 	listPermission, errper := models.GetPermissionMappingCategoryID()
 	if errper != nil {
 		fmt.Println("GetTacticsList Err:", errper.Error())
 		return
 	}
 	for k, v := range list {
-		//是否属于纪要库
-		//countSummary, err := models.GetPermissionMappingById(v.CategoryId)
-		//if err != nil && err.Error() != utils.ErrNoRow() {
-		//	br.Msg = "参数解析异常!"
-		//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		//	return
-		//}
-		//if countSummary > 0 {
-		//	v.IsSummary = 1
-		//}
+		//是否属于纪要库的数据
 		for _, vSum := range listSummary {
-			if v.CategoryId == vSum.CategoryId {
+			vSumInt, _ := strconv.Atoi(vSum)
+			if v.CategoryId == vSumInt {
 				v.IsSummary = 1
 			}
 		}
-		//是否属于报告
-		//countReport, err := models.GetReportMappingById(v.CategoryId)
-		//if err != nil && err.Error() != utils.ErrNoRow() {
-		//	br.Msg = "参数解析异常!"
-		//	br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		//	return
-		//}
+		//排除不属于纪要库类型的文章
+		for _, vArt := range listNoSummaryArticleIds {
+			vArtInt, _ := strconv.Atoi(vArt)
+			if v.ArticleId == vArtInt {
+				v.IsSummary = 0
+			}
+		}
 		for _, vPer := range listPermission {
 			if v.CategoryId == vPer.CategoryId {
 				v.IsReport = 1
@@ -344,12 +340,15 @@ func SyncTacticsListAddreport() (err error) {
 			//是否属于行业报告 行业报告自动归类
 			if v.CategoryId == 7 || v.CategoryId == 11 || v.CategoryId == 51 || v.CategoryId == 52 || v.CategoryId == 64 || v.CategoryId == 80 || v.CategoryId == 87 {
 				v.IsClass = 1
-			}
-			if v.CategoryId == 64 || v.CategoryId == 87 || v.CategoryId == 80 {
-				v.ReportType = 2 //是否属于行业报告
+				v.ReportType = 1 //是否属于行业报告
 			} else {
-				v.ReportType = 1 //是否属于产业报告
+				v.ReportType = 2 //是否属于产业报告
 			}
+			//if v.CategoryId == 64 || v.CategoryId == 87 || v.CategoryId == 80 {
+			//	v.ReportType = 2 //是否属于行业报告
+			//} else {
+			//	v.ReportType = 1 //是否属于产业报告
+			//}
 		}
 		v.Department = "弘则权益研究"
 		fmt.Println(k, v.ArticleId)
@@ -358,17 +357,14 @@ func SyncTacticsListAddreport() (err error) {
 		v.PublishDate = v.PublishDate.Add(hh)
 		//判断是否已经存在
 		if v.ArticleId < 0 {
-			if err != nil {
-				fmt.Println("AddCygxArticle Err:", err.Error())
-				return err
-			}
+			fmt.Println("AddCygxArticle Err:")
+			return err
 		}
 		count, err := models.GetArticleCountById(v.ArticleId)
 		if err != nil && err.Error() != utils.ErrNoRow() {
-			if err != nil {
-				fmt.Println("AddCygxArticle Err:", err.Error())
-				return err
-			}
+			fmt.Println("AddCygxArticle Err:", err.Error())
+			return err
+
 		}
 		fmt.Println(v.IsClass)
 		v.Body = strings.Replace(v.Body, "http://vmp.hzinsights.com", "https://vmp.hzinsights.com", -1)

+ 19 - 0
utils/common.go

@@ -550,3 +550,22 @@ func ConvertToFormatDay(excelDaysString string) string {
 	resultTime := time.Unix(int64(baseOriginSecond+realDiffSecond), 0).Format("2006-01-02")
 	return resultTime
 }
+
+//字符串转换为time
+func StrTimeToTime(strTime string) time.Time {
+	timeLayout := "2006-01-02 15:04:05"  //转化所需模板
+	loc, _ := time.LoadLocation("Local") //重要:获取时区
+	resultTime, _ := time.ParseInLocation(timeLayout, strTime, loc)
+	return resultTime
+}
+
+//时间格式去掉时分秒
+func TimeRemoveHms(strTime string) string {
+	var Ymd string
+	var resultTime = StrTimeToTime(strTime)
+	year := resultTime.Year()
+	month := resultTime.Format("01")
+	day1 := resultTime.Day()
+	Ymd = strconv.Itoa(year) + "." + month + "." + strconv.Itoa(day1)
+	return Ymd
+}