Explorar el Código

Merge branch 'cygx_v2' of hongze/hongze_cygx into master

hongze hace 4 años
padre
commit
8aa5fbfc98

+ 143 - 236
controllers/article.go

@@ -40,8 +40,8 @@ func (this *ArticleController) Detail() {
 	uid := user.UserId
 	articleId, err := this.GetInt("ArticleId")
 	if articleId <= 0 {
-		br.Msg = "参数错误"
-		br.ErrMsg = "参数错误"
+		br.Msg = "文章不存在"
+		br.ErrMsg = "文章不存在,文章ID错误"
 		return
 	}
 	detail := new(models.ArticleDetail)
@@ -64,7 +64,6 @@ func (this *ArticleController) Detail() {
 			return
 		}
 		detail, err = models.GetArticleDetailById(articleId)
-		services.BodyAnalysis2(detail.Body)
 		if err != nil {
 			br.Msg = "获取信息失败"
 			br.ErrMsg = "获取信息失败,Err:" + err.Error()
@@ -114,18 +113,25 @@ func (this *ArticleController) Detail() {
 			//		hasPermission = 3
 			//	}
 			//}
-			articlePermission, err := models.GetArticlePermission(detail.CategoryId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
-				return
-			}
-			if articlePermission == nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
-				return
+			var articlePermissionPermissionName string
+			if detail.CategoryId > 0 {
+				articlePermission, err := models.GetArticlePermission(detail.CategoryId)
+				if err != nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				if articlePermission == nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				articlePermissionPermissionName = articlePermission.PermissionName
+			} else {
+				articlePermissionPermissionName = detail.CategoryName
 			}
-			if strings.Contains(companyPermission, articlePermission.PermissionName) {
+
+			if strings.Contains(companyPermission, articlePermissionPermissionName) {
 				hasPermission = 1
 				historyRecord := new(models.CygxArticleHistoryRecord)
 				historyRecord.UserId = uid
@@ -432,227 +438,128 @@ func (this *ArticleCommonController) Detail() {
 	br.Data = resp
 }
 
-// @Title 获取报告同步
-// @Description 获取报告详情接口
-// @Param   ArticleIdMd5   query   int  true       "报告ID"
+// @Title 上传文章阅读时间
+// @Description 上传文章阅读时间接口
+// @Param  request	body models.AddStopTimeRep true "type json string"
 // @Success 200 {object} models.ArticleDetailResp
-// @router /tongbu [get]
-//func (this *ArticleCommonController) Tongbu() {
-//	br := new(models.BaseResponse).Init()
-//	defer func() {
-//		this.Data["json"] = br
-//		this.ServeJSON()
-//	}()
-//
-//	fmt.Println("同步数据")
-//	indexName := utils.IndexName
-//	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))
-//
-//	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)
-//	}
-//
-//	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 {
-//
-//			}
-//		}
-//	}
-//
-//	br.Msg = "测试!"
-//	br.ErrMsg = "参数解析失败,Err:"
-//	return
+// @router /addStopTime [post]
+func (this *ArticleController) AddStopTime() {
+	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
+	}
+	var req models.AddStopTimeRep
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	uid := user.UserId
+	articleId := req.ArticleId
+	stopTime := req.StopTime
+	if articleId <= 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误"
+		return
+	}
+
+	if stopTime == 0 {
+		stopTime = 1
+		//br.Msg = "时间格式错误"
+		//br.ErrMsg = "时间错误"
+		//return
+	}
+	detail := new(models.ArticleDetail)
+	hasPermission := 0
+	hasFree := 0
+
+	//判断是否已经申请过
+	applyCount, err := models.GetApplyRecordCount(uid)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
+		return
+	}
+	//`description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下,3:无该品类权限,4:潜在客户,未提交过申请,5:潜在客户,已提交过申请"`
+	if user.CompanyId > 1 {
+		companyPermission, err := models.GetCompanyPermission(user.CompanyId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "判断是否已申请访谈失败,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+			return
+		}
+		detail, err = models.GetArticleDetailById(articleId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
+		if companyPermission == "" {
+			if applyCount > 0 {
+				hasPermission = 5
+			} else {
+				hasPermission = 2
+			}
+			hasFree = 2
+			goto Loop
+		} else {
+			hasFree = 1
+			var articlePermissionPermissionName string
+			if detail.CategoryId > 0 {
+				articlePermission, err := models.GetArticlePermission(detail.CategoryId)
+				if err != nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				if articlePermission == nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				articlePermissionPermissionName = articlePermission.PermissionName
+			} else {
+				articlePermissionPermissionName = detail.CategoryName
+			}
 
-//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
-//		}
-//	}
-//	//是否属于报告
-//	//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
-//		}
-//	}
-//	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 //是否属于产业报告
-//		}
-//	}
-//	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
-//		}
-//	}
-//	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 = "弘则权益研究"
-//		}
-//		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
-//		}
-//	}
-//	//纪要库的数据同步到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 = "同步成功"
-//}
+			if strings.Contains(companyPermission, articlePermissionPermissionName) {
+				detailNew, err := models.GetNewArticleHistoryRecord(uid, articleId)
+				if err != nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "获取信息失败,Err:" + err.Error()
+					return
+				}
+				hasPermission = 1
+				historyRecord := new(models.AddStopTimeNewRep)
+				historyRecord.StopTime = detailNew.StopTime + stopTime
+				historyRecord.Id = detailNew.Id
+				go models.AddArticleStopTime(historyRecord)
+			} else { //无该行业权限
+				hasPermission = 3
+			}
+		}
+	} else { //潜在客户
+		if applyCount > 0 {
+			hasPermission = 5
+		} else {
+			hasPermission = 4
+		}
+	}
+Loop:
+	resp := new(models.ArticleDetailAddStopTimeRep)
+	resp.HasPermission = hasPermission
+	resp.HasFree = hasFree
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	br.Data = resp
+}

+ 8 - 1
controllers/home.go

@@ -50,6 +50,12 @@ func (this *HomeController) ListHome() {
 			br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
 			return
 		}
+		categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取信息失败,Err:" + err.Error()
+			return
+		}
 		page = paging.GetPaging(currentIndex, pageSize, total)
 		if categoryId == "" {
 			list := make([]*models.HomeArticle, 0)
@@ -62,8 +68,9 @@ func (this *HomeController) ListHome() {
 			return
 		}
 		condition = ` AND category_id IN(` + categoryId + `)`
+		condition += ` OR ( category_name = '` + categoryinfo.PermissionName + `' AND publish_status = 1 )`
 	}
-	condition += ` AND is_summary = 1 `
+	condition += ` AND is_summary = 1  `
 	//condition = ` AND a.category_id NOT IN (85,71) `
 
 	total, err := models.GetHomeCount(condition, pars)

+ 2 - 2
controllers/report.go

@@ -55,7 +55,7 @@ func (this *ReportController) TradeList() {
 		count, err := models.CheckThisCategoryNewArticleIsRead(uid, v.CategoryId)
 		if err != nil {
 			br.Msg = "获取信息失败"
-			br.Msg = "获取帖子总数失败,Err:" + err.Error()
+			br.ErrMsg = "获取帖子总数失败,Err:" + err.Error()
 			return
 		}
 		if count == 0 && user.CreatedTime.Before(utils.StrTimeToTime(v.UpdateTime)) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(v.UpdateTime)) {
@@ -404,7 +404,7 @@ func (this *ReportController) ArticleCollect() {
 	}
 	if countIndustrial == 0 {
 		br.Msg = "产业不存在!"
-		br.ErrMsg = "产业不存在"
+		br.ErrMsg = "产业ID不存在:" + strconv.Itoa(industrialManagementId)
 		return
 	}
 	count, err := models.GetCygxIndustryTop(uid, industrialManagementId)

+ 17 - 11
controllers/tactics.go

@@ -184,18 +184,24 @@ func (this *TacticsController) Detail() {
 			goto Loop
 		} else {
 			hasFree = 1
-			articlePermission, err := models.GetArticlePermission(detail.CategoryId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
-				return
-			}
-			if articlePermission == nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
-				return
+			var articlePermissionPermissionName string
+			if detail.CategoryId > 0 {
+				articlePermission, err := models.GetArticlePermission(detail.CategoryId)
+				if err != nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "获取报告权限失败,Err:" + err.Error() + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				if articlePermission == nil {
+					br.Msg = "获取信息失败"
+					br.ErrMsg = "报告权限不存在,Err:" + strconv.Itoa(uid) + ";articleId" + strconv.Itoa(articleId)
+					return
+				}
+				articlePermissionPermissionName = articlePermission.PermissionName
+			} else {
+				articlePermissionPermissionName = detail.CategoryName
 			}
-			if strings.Contains(companyPermission, articlePermission.PermissionName) {
+			if strings.Contains(companyPermission, articlePermissionPermissionName) {
 				hasPermission = 1
 				historyRecord := new(models.CygxArticleHistoryRecord)
 				historyRecord.UserId = uid

+ 1 - 0
models/article.go

@@ -29,6 +29,7 @@ type CygxArticle struct {
 	IsReport         int    `description:"是否属于报告,1是,0否"`
 	ReportType       int    `description:"报告类型,1行业报告,2产业报告,0无"`
 	FileLink         string `description:"下载预览链接"`
+	MatchTypeName    string `description:"匹配类型"`
 }
 
 //新增文章

+ 43 - 10
models/article_history_record.go

@@ -29,19 +29,21 @@ func AddCygxArticleHistoryRecord(item *CygxArticleHistoryRecord) (lastId int64,
 			o.Rollback()
 		}
 	}()
-	var count int
-	sql := `SELECT COUNT(1) AS count FROM cygx_article_history_record WHERE user_id=? AND article_id=? `
-	err = o.Raw(sql, item.UserId, item.ArticleId).QueryRow(&count)
+	//var count int
+	//sql := `SELECT COUNT(1) AS count FROM cygx_article_history_record WHERE user_id=? AND article_id=? `
+	//err = o.Raw(sql, item.UserId, item.ArticleId).QueryRow(&count)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return
 	}
-	if count > 0 {
-		sql := `UPDATE cygx_article_history_record SET modify_time=NOW() WHERE user_id=? AND article_id=? `
-		_, err = o.Raw(sql, item.UserId, item.ArticleId).Exec()
-	} else {
-		item.ModifyTime = time.Now()
-		lastId, err = o.Insert(item)
-	}
+	//if count > 0 {
+	//	sql := `UPDATE cygx_article_history_record SET modify_time=NOW() WHERE user_id=? AND article_id=? `
+	//	_, err = o.Raw(sql, item.UserId, item.ArticleId).Exec()
+	//} else {
+	//	item.ModifyTime = time.Now()
+	//	lastId, err = o.Insert(item)
+	//}
+	item.ModifyTime = time.Now()
+	lastId, err = o.Insert(item)
 	return
 }
 
@@ -52,3 +54,34 @@ func GetUserToArticleCount(uid, articleId int) (count int, err error) {
 	err = o.Raw(sqlCount, uid, articleId).QueryRow(&count)
 	return
 }
+
+type AddStopTimeRep struct {
+	ArticleId int `description:"文章ID"`
+	StopTime  int `description:"停留时间"`
+}
+
+type AddStopTimeNewRep struct {
+	Id        int `description:"ID"`
+	ArticleId int `description:"文章ID"`
+	StopTime  int `description:"停留时间"`
+}
+
+type ArticleDetailAddStopTimeRep struct {
+	HasPermission int `description:"1:有该行业权限,正常展示,2:无该行业权限,不存在权益客户下,3:无该品类权限,已提交过申请,4:无该行业权限,未提交过申请,5:潜在客户,未提交过申请,6:潜在客户,已提交过申请"`
+	HasFree       int `description:"1:已付费(至少包含一个品类的权限),2:未付费(没有任何品类权限)"`
+}
+
+func AddArticleStopTime(item *AddStopTimeNewRep) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_article_history_record SET stop_time = ? WHERE id =?`
+	_, err = o.Raw(sql, item.StopTime, item.Id).Exec()
+	return
+}
+
+//获取最新的一条阅读记录
+func GetNewArticleHistoryRecord(uid, articleId int) (item *AddStopTimeNewRep, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM  cygx_article_history_record WHERE user_id = ? AND article_id = ? ORDER BY id DESC LIMIT 1;`
+	err = o.Raw(sql, uid, articleId).QueryRow(&item)
+	return
+}

+ 20 - 13
models/chart_permission.go

@@ -3,8 +3,8 @@ package models
 import "rdluck_tools/orm"
 
 type ChartPermission struct {
-	ChartPermissionId   int       `description:"权限id"`
-	PermissionName      string    `description:"权限名称"`
+	ChartPermissionId int    `description:"权限id"`
+	PermissionName    string `description:"权限名称"`
 }
 
 type ChartPermissionResp struct {
@@ -12,25 +12,32 @@ type ChartPermissionResp struct {
 }
 
 func GetChartPermissionAll() (items []*ChartPermission, err error) {
-	o:=orm.NewOrm()
-	sql:=`SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1 ORDER BY sort ASC `
-	_,err=o.Raw(sql).QueryRows(&items)
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1 ORDER BY sort ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
-func GetCategoryId(chartPermissionId int)(category_id string,err error) {
-	o:=orm.NewOrm()
-	sql:=` SELECT GROUP_CONCAT(a.category_id) AS category_id 
+func GetCategoryId(chartPermissionId int) (category_id string, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT GROUP_CONCAT(a.category_id) AS category_id 
 			FROM cygx_permission_mapping AS a
 			WHERE a.chart_permission_id=? 
 			GROUP BY a.chart_permission_id `
-	err=o.Raw(sql,chartPermissionId).QueryRow(&category_id)
+	err = o.Raw(sql, chartPermissionId).QueryRow(&category_id)
 	return
 }
 
 func GetChartPermissionReportAll() (items []*ChartPermission, err error) {
-	o:=orm.NewOrm()
-	sql:=`SELECT * FROM chart_permission WHERE product_id=2 AND is_report=1 ORDER BY sort ASC `
-	_,err=o.Raw(sql).QueryRows(&items)
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND is_report=1 ORDER BY sort ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
-}
+}
+
+func GetChartPermissionById(chartPermissionId int) (item *ChartPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE chart_permission_id = ? `
+	err = o.Raw(sql, chartPermissionId).QueryRow(&item)
+	return
+}

+ 8 - 0
models/report_mapping.go

@@ -121,3 +121,11 @@ func CheckThisCategoryNewArticleIsRead(uid, categoryId int) (count int, err erro
 	err = o.Raw(sql, uid, categoryId).QueryRow(&count)
 	return
 }
+
+//获取策略下面的所有分类
+func GetMatchTypeNamenNotNull() (items []*ReportMapping, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT category_id,match_type_name FROM cygx_report_mapping WHERE match_type_name <> ''`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 2 - 2
models/tactics.go

@@ -90,7 +90,7 @@ 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,9,11,28,32,45,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,93,95,96,98) `
+			WHERE a.publish_status=1  AND a.publish_date>=? AND d.id IN (7,9,11,28,32,45,51,52,57,62,64,65,66,67,69,71,72,74,79,80,84,85,86,87,88,89,90,93,95,96,98) `
 	//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)
@@ -105,7 +105,7 @@ 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,9,11,28,32,45,51,52,57,62,64,65,66,67,69,71,74,79,80,84,85,86,87,88,89,90,93,95,96,98) `
+			WHERE a.publish_status=1  AND d.id IN (7,9,11,28,32,45,51,52,57,62,64,65,66,67,69,71,72,74,79,80,84,85,86,87,88,89,90,93,95,96,98) `
 	//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)

+ 2 - 2
models/user.go

@@ -176,8 +176,8 @@ func GetArticleUserBrowseHistoryCount(userId int, endDate string) (count int, er
 
 func GetArticleUserBrowseHistoryList(startSize, pageSize, userId int, endDate string) (items []*ArticleInterviewApplyList, err error) {
 	sql := `SELECT a.* FROM cygx_article_history_record AS a
-			WHERE a.user_id=? AND a.create_time>=? 
-           ORDER BY a.modify_time DESC LIMIT ?,? `
+			WHERE a.user_id=? AND a.create_time>=?  GROUP BY a.article_id
+           ORDER BY a.id DESC LIMIT ?,? `
 	_, err = orm.NewOrm().Raw(sql, userId, endDate, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 41 - 8
services/tactics.go

@@ -304,8 +304,15 @@ func SyncTacticsListAddreport() (err error) {
 		fmt.Println("GetTacticsList Err:", err.Error())
 		return
 	}
+
+	listGetMatchTypeName, errMatch := models.GetMatchTypeNamenNotNull() //手动归类的文章,不替换文章类型
+	if errMatch != nil {
+		fmt.Println("GetTacticsList Err:", errMatch.Error())
+		return
+	}
+
 	fmt.Println("list len:", len(list))
-	summaryCategoryIds := "28,32,45,50,57,62,72,74,79,84,86,88,90,93,95,96,98" //纪要库的文章类型categoty_id
+	summaryCategoryIds := "28,32,45,50,57,62,72,74,79,84,86,88,90,93,95,96" //纪要库的文章类型categoty_id
 	listSummary := strings.Split(summaryCategoryIds, ",")
 	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, ",")
@@ -314,14 +321,31 @@ func SyncTacticsListAddreport() (err error) {
 		fmt.Println("GetTacticsList Err:", errper.Error())
 		return
 	}
+
+	summaryMap := make(map[int]int)
+	for _, vSum := range listSummary {
+		vSumInt, _ := strconv.Atoi(vSum)
+		summaryMap[vSumInt] = 1
+	}
+
 	for k, v := range list {
-		//是否属于纪要库的数据
-		for _, vSum := range listSummary {
-			vSumInt, _ := strconv.Atoi(vSum)
-			if v.CategoryId == vSumInt {
-				v.IsSummary = 1
+		//同步匹配类型
+		matchTypeName := ""
+		for _, vMatch := range listGetMatchTypeName {
+			if v.CategoryId == vMatch.CategoryId {
+				matchTypeName = vMatch.MatchTypeName
 			}
 		}
+		//是否属于纪要库的数据
+		if _, has := summaryMap[v.CategoryId]; has {
+			v.IsSummary = 1
+		}
+		//for _, vSum := range listSummary {
+		//	vSumInt, _ := strconv.Atoi(vSum)
+		//	if v.CategoryId == vSumInt {
+		//		v.IsSummary = 1
+		//	}
+		//}
 		//排除不属于纪要库类型的文章
 		for _, vArt := range listNoSummaryArticleIds {
 			vArtInt, _ := strconv.Atoi(vArt)
@@ -374,7 +398,12 @@ func SyncTacticsListAddreport() (err error) {
 		// 7资金流向 、11大类资产 、51每日复盘 、80医药周报、9估值研究
 		if v.CategoryId == 7 || v.CategoryId == 11 || v.CategoryId == 51 || v.CategoryId == 9 {
 			if v.UpdateFrequency == "daily" {
-				titleNew = v.Title + "(" + strconv.Itoa(v.PublishDate.Year())[2:len(strconv.Itoa(v.PublishDate.Year()))-0] + v.PublishDate.Format("01") + strconv.Itoa(v.PublishDate.Day()) + ")"
+				var daystr string
+				daystr = strconv.Itoa(v.PublishDate.Day())
+				if len(daystr) == 1 {
+					daystr = "0" + daystr
+				}
+				titleNew = v.Title + "(" + strconv.Itoa(v.PublishDate.Year())[2:len(strconv.Itoa(v.PublishDate.Year()))-0] + v.PublishDate.Format("01") + daystr + ")"
 			} else if v.UpdateFrequency == "weekly" {
 				titleNew = v.Title + utils.WeekByDate(v.PublishDate)
 			}
@@ -409,6 +438,7 @@ func SyncTacticsListAddreport() (err error) {
 			}
 			if isCustom == false {
 				updateParams["CategoryId"] = v.CategoryId
+				updateParams["MatchTypeName"] = matchTypeName
 			}
 			//updateParams["CategoryId"] = v.CategoryId
 			updateParams["PublishStatus"] = v.PublishStatus
@@ -457,6 +487,7 @@ func SyncTacticsListAddreport() (err error) {
 			item.IsReport = v.IsReport
 			item.ReportType = v.ReportType
 			item.FileLink = fileLink
+			item.MatchTypeName = matchTypeName
 			_, err = models.AddCygxArticles(item)
 			if err != nil {
 				fmt.Println("AddCygxArticle Err:", err.Error())
@@ -656,7 +687,9 @@ func BodyAnalysis2(body string) (expertNumStr, expertContentStr, interviewDateSt
 				numEnd := strings.Index(v, ".pdf")
 				fileLink = v[numStar : numEnd+4]
 			}
-			body = strings.Replace(body, v, "", -1)
+			if strings.Index(v, ".pdf") > 0 {
+				body = strings.Replace(body, v, "", -1)
+			}
 		}
 		if !strings.HasPrefix(fileLink, "https") && len(fileLink) > 0 {
 			fileLink = "https" + fileLink[4:len(fileLink)]

+ 75 - 69
services/task.go

@@ -2,8 +2,13 @@ package services
 
 import (
 	"fmt"
+	"github.com/PuerkitoBio/goquery"
 	"github.com/astaxie/beego/toolbox"
+	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
+	"html"
+	"strconv"
+	"strings"
 	//"github.com/astaxie/beego/cache"
 )
 
@@ -38,7 +43,8 @@ func Task() {
 	//syncTacticsListAddreport := toolbox.NewTask("syncTacticsListAddreport", "0 42 09 * * *", SyncTacticsListAddreport)
 	//toolbox.AddTask("syncTacticsListAddreport", syncTacticsListAddreport)
 	//toolbox.StartTask()
-
+	//AddAllArticle()
+	//SyncTacticsListToEs()
 	fmt.Println("end")
 }
 
@@ -194,74 +200,74 @@ searchItem.Body = v.Highlight["BodyText"]
 searchItem.Title = title
 searchItem.PublishDate = article.PublishDate
 */
-//func CreateIndex() {
-//	indexName := "cygx_article_v4" //utils.IndexName
-//	mappingJson := `{
-//  "mappings": {
-//    "dynamic": true,
-//    "properties": {
-//      "ArticleId": {
-//        "type": "integer"
-//      },
-//      "BodyText": {
-//        "type": "text",
-//        "term_vector": "with_positions_offsets",
-//		"analyzer": "ik_smart"
-//      },
-//      "PublishDate": {
-//        "type": "keyword"
-//      },
-//      "SubCategoryName": {
-//        "type": "text",
-//        "term_vector": "with_positions_offsets",
-//		"analyzer": "ik_smart"
-//      },
-//      "Title": {
-//        "type": "text",
-//        "term_vector": "with_positions_offsets",
-//		"analyzer": "ik_smart"
-//      },
-//      "TitleEn": {
-//        "type": "text",
-//        "term_vector": "with_positions_offsets"
-//      },
-//      "UpdateFrequency": {
-//        "type": "text",
-//        "term_vector": "with_positions_offsets"
-//      }
-//    }
-//  }
-//}`
-//	EsCreateIndex(indexName, mappingJson)
-//}
-//
-//func AddAllArticle() {
-//	allList, err := models.GetArticleAll()
-//	if err != nil {
-//		fmt.Println("GetArticleAll Err:", err.Error())
-//		return
-//	}
-//
-//	indexName := "cygx_article_v4"
-//
-//	for _, v := range allList {
-//		content := html.UnescapeString(v.Body)
-//		doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
-//		if err != nil {
-//			fmt.Println("create doc err:", err.Error())
-//			return
-//		}
-//		bodyText := doc.Text()
-//
-//		item := new(ElasticTestArticleDetail)
-//		item.ArticleId = v.ArticleId
-//		item.Title = v.Title
-//		item.PublishDate = v.PublishDate
-//		item.BodyText = bodyText
-//		EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
-//		fmt.Println(v.ArticleId)
-//	}
-//}
+func CreateIndex() {
+	indexName := "cygx_article_v4" //utils.IndexName
+	mappingJson := `{
+ "mappings": {
+   "dynamic": true,
+   "properties": {
+     "ArticleId": {
+       "type": "integer"
+     },
+     "BodyText": {
+       "type": "text",
+       "term_vector": "with_positions_offsets",
+		"analyzer": "ik_smart"
+     },
+     "PublishDate": {
+       "type": "keyword"
+     },
+     "SubCategoryName": {
+       "type": "text",
+       "term_vector": "with_positions_offsets",
+		"analyzer": "ik_smart"
+     },
+     "Title": {
+       "type": "text",
+       "term_vector": "with_positions_offsets",
+		"analyzer": "ik_smart"
+     },
+     "TitleEn": {
+       "type": "text",
+       "term_vector": "with_positions_offsets"
+     },
+     "UpdateFrequency": {
+       "type": "text",
+       "term_vector": "with_positions_offsets"
+     }
+   }
+ }
+}`
+	EsCreateIndex(indexName, mappingJson)
+}
+
+func AddAllArticle() {
+	allList, err := models.GetArticleAll()
+	if err != nil {
+		fmt.Println("GetArticleAll Err:", err.Error())
+		return
+	}
+
+	indexName := "cygx_article_v3"
+
+	for _, v := range allList {
+		content := html.UnescapeString(v.Body)
+		doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
+		if err != nil {
+			fmt.Println("create doc err:", err.Error())
+			return
+		}
+		bodyText := doc.Text()
+
+		item := new(ElasticTestArticleDetail)
+		item.ArticleId = v.ArticleId
+		item.Title = v.Title
+		item.PublishDate = v.PublishDate
+		item.BodyText = bodyText
+		EsAddOrEditData(indexName, strconv.Itoa(v.ArticleId), item)
+		fmt.Println(v.ArticleId)
+	}
+}
 
 // "term_vector": "with_positions_offsets"
 

+ 3 - 2
utils/config.go

@@ -75,7 +75,8 @@ func init() {
 		WxPublicAppSecret = "26c586e7ccb3c575433f0f37797b3eeb"
 		WxPublicId = "gh_b67e0049fb8c"
 		//IndexName="cygx_article_v1"
-		IndexName = "cygx_article_v2"
+		//IndexName = "cygx_article_v2"
+		IndexName = "cygx_article_v3"
 	} else {
 		WxAppId = "wxcc32b61f96720d2f"
 		WxAppSecret = "06894933fafb24dafead7eaae09c08e0"
@@ -89,7 +90,7 @@ func init() {
 		WxPublicAppId = "wx9b5d7291e581233a"
 		WxPublicAppSecret = "f4d52e34021eee262dce9682b31f8861"
 		WxPublicId = "gh_5dc508325c6f"
-		IndexName = "test_article"
+		IndexName = "cygx_article_v1"
 	}
 }