ziwen před 1 rokem
rodič
revize
92dbf24a16
2 změnil soubory, kde provedl 40 přidání a 14 odebrání
  1. 25 7
      controllers/home.go
  2. 15 7
      models/article.go

+ 25 - 7
controllers/home.go

@@ -323,10 +323,17 @@ func (this *MobileHomeController) NewList() {
 		articleTypeStr = strings.TrimRight(articleTypeStr,",")
 		articleTypesCond += ` AND art.sub_category_name In (`+ articleTypeStr +`) `
 	}
-	//activityTypesCond := ``
-	//if activityTypes != "" {
-	//	activityTypesCond += ` AND sub_category_name In (`+ activityTypes +`) `
-	//}
+	activityTypesCond := ``
+	if 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 := ``
 	if industries != "" {
 		industrieSlice := strings.Split(industries, ",")
@@ -350,15 +357,26 @@ func (this *MobileHomeController) NewList() {
 		subjectNamesCond += ` AND cis.subject_name In (`+ subjectNameStr +`) `
 	}
 
-	articleIntIds, err := models.GetCygxCygxArticleListByCondition(articleTypesCond, industriesCond, subjectNamesCond)
+	articleIds, activityIds, err := models.GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industriesCond, subjectNamesCond)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
 		return
 	}
 
-	if articleIntIds != "" {
-		condition += ` AND (source = 'article' AND source_id IN (` + articleIntIds + `) )`
+	if tagIds != "" {
+		if articleIds != "" {
+			condition += ` AND ((source = 'article' AND source_id IN (` + articleIds + `) ) `
+			if activityIds != "" {
+				condition += ` OR (source = 'activity' AND source_id IN (` + activityIds + `))) `
+			} else {
+				condition += ` OR (source = 'activity' AND source_id IN (0))) `
+			}
+		} else if activityIds != "" {
+			condition += ` AND ((source = 'article' AND source_id IN (0)) OR (source = 'activity' AND source_id IN (` + activityIds + `))) `
+		} else {
+			condition += ` AND ((source = 'article' AND source_id IN (0)) OR (source = 'activity' AND source_id IN (0))) `
+		}
 	}
 
 	//查询近一个月的数据

+ 15 - 7
models/article.go

@@ -327,23 +327,31 @@ func GetCygxArticleCount(condition string, pars []interface{}) (count int, err e
 }
 
 // 列表
-func GetCygxCygxArticleListByCondition(articleTypesCond, industriesCond, subjectNamesCond string) (ids string, err error) {
+func GetCygxCygxArticleListByCondition(articleTypesCond, activityTypesCond, industriesCond, subjectNamesCond string) (artIds,actIds string, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT GROUP_CONCAT(DISTINCT art.article_id SEPARATOR ',') AS ids FROM cygx_article as art `
+	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 != ""{
-		sql += ` INNER JOIN cygx_industrial_article_group_management  AS iam ON iam.cygx_article_id = art.id 
+		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 != ""{
-		sql += ` INNER JOIN cygx_industrial_article_group_subject  AS ias ON ias.cygx_article_id = art.id 
+		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 
 				INNER JOIN cygx_industrial_subject AS cis ON cis.industrial_subject_id=ias.industrial_subject_id  `
 	}
-	sql += ` WHERE 1=1 `
+	artSql += ` WHERE 1=1 `
+	artSql += articleTypesCond + industriesCond + subjectNamesCond
+	err = o.Raw(artSql).QueryRow(&artIds)
 
-	sql += articleTypesCond + industriesCond + subjectNamesCond
+	actSql += ` WHERE 1=1 `
+	actSql += activityTypesCond + industriesCond + subjectNamesCond
+	err = o.Raw(actSql).QueryRow(&actIds)
 
-	err = o.Raw(sql).QueryRow(&ids)
 	return
 }