Browse Source

fix: 阅读统计筛选

hsun 2 weeks ago
parent
commit
c7c0dcfa89
1 changed files with 15 additions and 3 deletions
  1. 15 3
      controllers/report.go

+ 15 - 3
controllers/report.go

@@ -148,18 +148,30 @@ func (this *ReportController) ReadRecord() {
 				thirdClassifyIds = append(thirdClassifyIds, v.Id)
 			}
 		}
+		var classifyIdsCond string
 		if len(firstClassifyIds) > 0 {
-			cond += fmt.Sprintf(` AND %s IN (%s)`, recordOb.Cols().ClassifyIdFirst, utils.GetOrmInReplace(len(firstClassifyIds)))
+			classifyIdsCond += fmt.Sprintf(` %s IN (%s)`, recordOb.Cols().ClassifyIdFirst, utils.GetOrmInReplace(len(firstClassifyIds)))
 			pars = append(pars, firstClassifyIds)
 		}
 		if len(secondClassifyIds) > 0 {
-			cond += fmt.Sprintf(` AND %s IN (%s)`, recordOb.Cols().ClassifyIdSecond, utils.GetOrmInReplace(len(secondClassifyIds)))
+			if classifyIdsCond != "" {
+				classifyIdsCond += fmt.Sprintf(` OR %s IN (%s)`, recordOb.Cols().ClassifyIdSecond, utils.GetOrmInReplace(len(secondClassifyIds)))
+			} else {
+				classifyIdsCond += fmt.Sprintf(` %s IN (%s)`, recordOb.Cols().ClassifyIdSecond, utils.GetOrmInReplace(len(secondClassifyIds)))
+			}
 			pars = append(pars, secondClassifyIds)
 		}
 		if len(thirdClassifyIds) > 0 {
-			cond += fmt.Sprintf(` AND %s IN (%s)`, recordOb.Cols().ClassifyIdThird, utils.GetOrmInReplace(len(thirdClassifyIds)))
+			if classifyIdsCond != "" {
+				classifyIdsCond += fmt.Sprintf(` OR %s IN (%s)`, recordOb.Cols().ClassifyIdThird, utils.GetOrmInReplace(len(thirdClassifyIds)))
+			} else {
+				classifyIdsCond += fmt.Sprintf(` %s IN (%s)`, recordOb.Cols().ClassifyIdThird, utils.GetOrmInReplace(len(thirdClassifyIds)))
+			}
 			pars = append(pars, thirdClassifyIds)
 		}
+		if classifyIdsCond != "" {
+			cond += fmt.Sprintf(` AND (%s)`, classifyIdsCond)
+		}
 	}
 
 	total, e := recordOb.GetCountByCondition(cond, pars)