Browse Source

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

xingzai 1 year ago
parent
commit
8d3062d1aa
2 changed files with 151 additions and 21 deletions
  1. 100 21
      controllers/home.go
  2. 51 0
      models/article.go

+ 100 - 21
controllers/home.go

@@ -699,43 +699,89 @@ func (this *HomeController) NewList() {
 				br.ErrMsg = "GetCygxTagByTagId,Err:" + err.Error()
 				return
 			}
-			activityTypes += tagInfo.ActivityTypes + ","
-			articleTypes += tagInfo.ArticleTypes + ","
-			industries += tagInfo.Industries + ","
-			subjectNames += tagInfo.SubjectNames + ","
+			if tagInfo.ActivityTypes != "" {
+				activityTypes += tagInfo.ActivityTypes + ","
+			}
+			if tagInfo.ArticleTypes != "" {
+				articleTypes += tagInfo.ArticleTypes + ","
+			}
+			if tagInfo.Industries != "" {
+				industries += tagInfo.Industries + ","
+			}
+			if tagInfo.SubjectNames != "" {
+				subjectNames += tagInfo.SubjectNames + ","
+			}
 		}
 	}
-	activityTypes = strings.TrimRight(activityTypes,",")
+
 	articleTypes = strings.TrimRight(articleTypes,",")
+	activityTypes = strings.TrimRight(activityTypes,",")
 	industries = strings.TrimRight(industries,",")
 	subjectNames = strings.TrimRight(subjectNames,",")
 
 	articleTypesCond := ``
 	if articleTypes != "" {
-		articleTypesCond += ` AND sub_category_name In (`+ activityTypes +`) `
+		articleTypeSlice := strings.Split(articleTypes, ",")
+		newArticleTypeSlice := make([]string,0)
+		for _, s := range articleTypeSlice {
+			newArticleTypeSlice = append(newArticleTypeSlice, "'"+ s + "'")
+		}
+		articleTypeStr := strings.Join(newArticleTypeSlice, ",")
+		articleTypeStr = strings.TrimRight(articleTypeStr,",")
+		articleTypesCond += ` AND (art.sub_category_name In (`+ articleTypeStr +`) OR (art.article_type_name In (`+ articleTypeStr +`) AND art.article_type_name <> '路演精华' AND art.article_type_id <> 0 ) ) `
 	}
 	activityTypesCond := ``
 	if activityTypes != "" {
-		activityTypesCond += ` AND sub_category_name In (`+ activityTypes +`) `
+		activityTypeSlice := strings.Split(activityTypes, ",")
+		newActivityTypeSlice := make([]string,0)
+		for _, s := range activityTypeSlice {
+			newActivityTypeSlice = append(newActivityTypeSlice, "'"+ s + "'")
+		}
+		activityTypeStr := strings.Join(newActivityTypeSlice, ",")
+		activityTypeStr = strings.TrimRight(activityTypeStr,",")
+		activityTypesCond += ` AND act.activity_type_name In (`+ activityTypeStr +`) `
 	}
 	industriesCond := ``
+	var industryStr string
 	if industries != "" {
-		industriesCond += ` AND sub_category_name In (`+ activityTypes +`) `
+		industrieSlice := strings.Split(industries, ",")
+		newIndustrieSlice := make([]string,0)
+		for _, s := range industrieSlice {
+			newIndustrieSlice = append(newIndustrieSlice, "'"+ s + "'")
+		}
+		industryStr = strings.Join(newIndustrieSlice, ",")
+		industryStr = strings.TrimRight(industryStr, ",")
+		industriesCond += ` AND im.industry_name In (`+ industryStr +`) `
 	}
 	subjectNamesCond := ``
+	var subjectNameStr string
 	if subjectNames != "" {
-		subjectNamesCond += ` AND sub_category_name In (`+ activityTypes +`) `
+		subjectNameSlice := strings.Split(subjectNames, ",")
+		newSubjectNameSlice := make([]string,0)
+		for _, s := range subjectNameSlice {
+			newSubjectNameSlice = append(newSubjectNameSlice, "'"+ s + "'")
+		}
+		subjectNameStr = strings.Join(newSubjectNameSlice, ",")
+		subjectNameStr = strings.TrimRight(subjectNameStr, ",")
+		subjectNamesCond += ` AND cis.subject_name In (`+ subjectNameStr +`) `
 	}
 
-	//condition += " AND source = 'article' "
+	tagArticleIds, tagActivityIds, err := models.GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industryStr, subjectNameStr)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
+		return
+	}
+
+	//fmt.Println("condition:",condition)
+
 	//查询近一个月的数据
 	conditionInit = " AND publish_date  >   '" + time.Now().AddDate(0, 0, -30).Format(utils.FormatDateTime) + "'"
+	//conditionInit += `  AND source IN ('newchart')`
 	if user.CompanyId <= 1 || totalRai == 0 {
-		condition += " AND source IN ('roadshow','article','activityvideo','activityvoice') " + conditionInit
-		if user.Mobile == "" && user.Email == "" {
-			startSize = 0
-			pageSize = 4
-		}
+		condition += " AND source IN ('roadshow','article') "
+		startSize = 0
+		pageSize = 4
 	} else {
 		condition += ` AND source NOT IN ('activity','activityspecial','newchart') ` + conditionInit
 		conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "1,2,3", "", 0, 0, "", 0, 1)
@@ -748,7 +794,11 @@ func (this *HomeController) NewList() {
 		var conditionOrder string
 		conditionOrder = ` ORDER BY art.activity_time DESC ,  art.active_state ASC   `
 		conditionActivity += conditionOrder
-		listActivity, err := models.GetActivityListHomeNew(conditionActivity, 0, 200)
+		actPageSize := 200
+		if tagIds != "" {
+			actPageSize = 2000
+		}
+		listActivity, err := models.GetActivityListHomeNew(conditionActivity, 0, actPageSize)
 		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取可见活动数据失败,Err:" + err.Error()
@@ -760,10 +810,7 @@ func (this *HomeController) NewList() {
 			activityIds = append(activityIds, v.ActivityId)
 		}
 		lenActivityIds := len(activityIds)
-		if lenActivityIds > 0 {
-			condition += ` OR ( source = 'activity' AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) ` + conditionInit + ` )    `
-			pars = append(pars, activityIds)
-		}
+
 
 		listActivitySpecial, _, err := services.GetActivitySpecialList(user, 1, 200, "")
 		if err != nil {
@@ -777,11 +824,43 @@ func (this *HomeController) NewList() {
 			activityspecialIds = append(activityspecialIds, v.ActivityId)
 		}
 		lenActivityspecialIds := len(activityspecialIds)
-		if lenActivityspecialIds > 0 {
+
+
+		if tagIds != "" {
+			if tagArticleIds != "" {
+				condition = ` AND ((source = 'article' AND source_id IN (` + tagArticleIds + `) ) `
+				if tagActivityIds != "" && lenActivityIds > 0 {
+					condition += ` OR (source = 'activity' AND source_id IN (` + tagActivityIds + `) AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) )) `
+					pars = append(pars, activityIds)
+				} else {
+					// 无可见活动
+					condition += ` OR (source = 'activity' AND source_id IN (0))) `
+				}
+			} else if tagActivityIds != "" {
+				condition = ` AND ((source = 'article' AND source_id IN (0))  `
+				if tagActivityIds != "" && lenActivityIds > 0 {
+					condition += ` OR (source = 'activity' AND source_id IN (` + tagActivityIds + `) AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `))) `
+					pars = append(pars, activityIds)
+				} else {
+					// 无可见活动
+					condition += ` OR (source = 'activity' AND source_id IN (0))) `
+				}
+			} else {
+				condition += ` AND ((source = 'article' AND source_id IN (0)) OR (source = 'activity' AND source_id IN (0))) `
+			}
+		}
+
+		if lenActivityIds > 0 && tagIds == "" {
+			condition += ` OR ( source = 'activity' AND source_id IN (` + utils.GetOrmInReplace(lenActivityIds) + `) ` + conditionInit + ` )    `
+			pars = append(pars, activityIds)
+		}
+
+		if lenActivityspecialIds > 0  && tagIds == "" {
 			condition += ` OR ( source = 'activityspecial' AND source_id IN (` + utils.GetOrmInReplace(lenActivityspecialIds) + `) ` + conditionInit + ` )   `
 			pars = append(pars, activityspecialIds)
 		}
 	}
+	//fmt.Println("condition:",condition)
 	total, err := models.GetResourceDataCount(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"

+ 51 - 0
models/article.go

@@ -756,3 +756,54 @@ func GetCygxArticleCount(condition string, pars []interface{}) (count int, err e
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
+
+// 列表
+func GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industryStr, subjectNameStr string) (artIds, actIds string, err error) {
+	o := orm.NewOrm()
+	artSql := `SELECT GROUP_CONCAT(DISTINCT art.article_id SEPARATOR ',') AS art_ids FROM cygx_article as art `
+
+	actSql := ` SELECT GROUP_CONCAT(DISTINCT act.activity_id SEPARATOR ',') AS act_ids FROM cygx_activity as act `
+
+	if industryStr != "" {
+		artSql += ` INNER JOIN cygx_industrial_article_group_management  AS iam ON iam.article_id = art.article_id 
+				INNER JOIN cygx_industrial_management AS im ON im.industrial_management_id=iam.industrial_management_id  `
+		actSql += ` INNER JOIN cygx_industrial_activity_group_management  AS iam ON iam.activity_id = act.activity_id 
+				INNER JOIN cygx_industrial_management AS im ON im.industrial_management_id=iam.industrial_management_id  `
+	}
+	if subjectNameStr != "" {
+		artSql += ` INNER JOIN cygx_industrial_article_group_subject  AS ias ON ias.article_id = art.article_id 
+				INNER JOIN cygx_industrial_subject AS cis ON cis.industrial_subject_id=ias.industrial_subject_id  `
+		actSql += ` INNER JOIN cygx_industrial_activity_group_subject  AS ias ON ias.activity_id = act.activity_id 
+				INNER JOIN cygx_industrial_subject AS cis ON cis.industrial_subject_id=ias.industrial_subject_id  `
+	}
+	artSql += ` WHERE 1=1 `
+	if articleTypesCond != "" || (articleTypesCond == "" && activityTypesCond == "") {
+		if industryStr != "" && subjectNameStr != "" {
+			artSql += articleTypesCond + ` AND (im.industry_name In (` + industryStr + `) OR cis.subject_name In (` + subjectNameStr + `) )`
+		} else if industryStr == "" && subjectNameStr != "" {
+			artSql += articleTypesCond + ` AND  cis.subject_name In (` + subjectNameStr + `) `
+		} else if industryStr != "" && subjectNameStr == "" {
+			artSql += articleTypesCond + ` AND im.industry_name In (` + industryStr + `) `
+		} else {
+			artSql += articleTypesCond
+		}
+		err = o.Raw(artSql).QueryRow(&artIds)
+	}
+
+
+	actSql += ` WHERE 1=1 `
+	if activityTypesCond != "" || (articleTypesCond == "" && activityTypesCond == "") {
+		if industryStr != "" && subjectNameStr != "" {
+			actSql += activityTypesCond + ` AND (im.industry_name In (` + industryStr + `) OR cis.subject_name In (` + subjectNameStr + `) )`
+		} else if industryStr == "" && subjectNameStr != "" {
+			actSql += activityTypesCond + ` AND  cis.subject_name In (` + subjectNameStr + `) `
+		} else if industryStr != "" && subjectNameStr == "" {
+			actSql += activityTypesCond + ` AND im.industry_name In (` + industryStr + `) `
+		} else {
+			actSql += activityTypesCond
+		}
+		err = o.Raw(actSql).QueryRow(&actIds)
+	}
+
+	return
+}