ziwen 1 سال پیش
والد
کامیت
d44895bde5
2فایلهای تغییر یافته به همراه28 افزوده شده و 10 حذف شده
  1. 7 5
      controllers/home.go
  2. 21 5
      models/article.go

+ 7 - 5
controllers/home.go

@@ -336,29 +336,31 @@ func (this *MobileHomeController) NewList() {
 		activityTypesCond += ` AND act.activity_type_name In (`+ activityTypeStr +`) `
 	}
 	industriesCond := ``
+	var industryStr string
 	if industries != "" {
 		industrieSlice := strings.Split(industries, ",")
 		newIndustrieSlice := make([]string,0)
 		for _, s := range industrieSlice {
 			newIndustrieSlice = append(newIndustrieSlice, "'"+ s + "'")
 		}
-		industrieStr := strings.Join(newIndustrieSlice, ",")
-		industrieStr = strings.TrimRight(industrieStr, ",")
-		industriesCond += ` AND im.industry_name In (`+ industrieStr +`) `
+		industryStr = strings.Join(newIndustrieSlice, ",")
+		industryStr = strings.TrimRight(industryStr, ",")
+		industriesCond += ` AND im.industry_name In (`+ industryStr +`) `
 	}
 	subjectNamesCond := ``
+	var subjectNameStr string
 	if subjectNames != "" {
 		subjectNameSlice := strings.Split(subjectNames, ",")
 		newSubjectNameSlice := make([]string,0)
 		for _, s := range subjectNameSlice {
 			newSubjectNameSlice = append(newSubjectNameSlice, "'"+ s + "'")
 		}
-		subjectNameStr := strings.Join(newSubjectNameSlice, ",")
+		subjectNameStr = strings.Join(newSubjectNameSlice, ",")
 		subjectNameStr = strings.TrimRight(subjectNameStr, ",")
 		subjectNamesCond += ` AND cis.subject_name In (`+ subjectNameStr +`) `
 	}
 
-	tagArticleIds, tagActivityIds, err := models.GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industriesCond, subjectNamesCond)
+	tagArticleIds, tagActivityIds, err := models.GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industryStr, subjectNameStr)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()

+ 21 - 5
models/article.go

@@ -327,19 +327,19 @@ func GetCygxArticleCount(condition string, pars []interface{}) (count int, err e
 }
 
 // 列表
-func GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industriesCond, subjectNamesCond string) (artIds,actIds string, err error) {
+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 industriesCond != ""{
+	if industryStr != "" {
 		artSql += ` INNER JOIN cygx_industrial_article_group_management  AS iam ON iam.cygx_article_id = art.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 subjectNamesCond != ""{
+	if subjectNameStr != "" {
 		artSql += ` INNER JOIN cygx_industrial_article_group_subject  AS ias ON ias.cygx_article_id = art.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 
@@ -347,14 +347,30 @@ func GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, indu
 	}
 	artSql += ` WHERE 1=1 `
 	if articleTypesCond != "" {
-		artSql += articleTypesCond + industriesCond + subjectNamesCond
+		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 != "" {
-		actSql += activityTypesCond + industriesCond + subjectNamesCond
+		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)
 	}