|
@@ -1452,7 +1452,6 @@ func InsertMultiReport(items []*Report) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-
|
|
|
func GetReportListByCollectCount(classifyIdFirst, classifyIdSecond, classifyIdThird []string, keyword, author string, state int) (count int, err error) {
|
|
|
o := orm.NewOrmUsingDB("rddp")
|
|
|
var params []interface{}
|
|
@@ -1685,3 +1684,144 @@ func GetReportListByCollectList(classifyIdFirst, classifyIdSecond, classifyIdThi
|
|
|
_, err = o.Raw(sql, params...).QueryRows(&items)
|
|
|
return items, err
|
|
|
}
|
|
|
+
|
|
|
+func GetReportListByCollectCountV2(classifyIdFirst, classifyIdSecond, classifyIdThird []string, keyword, author string, state int) (count int, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("rddp")
|
|
|
+ var params []interface{}
|
|
|
+
|
|
|
+ // SQL 主体
|
|
|
+ sql := `
|
|
|
+ SELECT COUNT(DISTINCT t.id) AS totalCount
|
|
|
+ FROM (
|
|
|
+ SELECT b.id
|
|
|
+ FROM report AS b
|
|
|
+ WHERE 1 = 1
|
|
|
+ `
|
|
|
+
|
|
|
+ // 处理关键词
|
|
|
+ if keyword != "" {
|
|
|
+ sql += " AND (b.title LIKE ? OR b.admin_real_name LIKE ?)"
|
|
|
+ params = append(params, "%"+keyword+"%", "%"+keyword+"%")
|
|
|
+ }
|
|
|
+
|
|
|
+ if author != "" {
|
|
|
+ sql += " AND b.author = ? "
|
|
|
+ params = append(params, author)
|
|
|
+ }
|
|
|
+
|
|
|
+ if state > 0 {
|
|
|
+ sql += " AND b.state = ? "
|
|
|
+ params = append(params, state)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分类id判断
|
|
|
+ classifyIdSqlList := make([]string, 0)
|
|
|
+ // 处理 classifyIdFirst
|
|
|
+ if len(classifyIdFirst) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_first IN ( "+utils.GetOrmInReplace(len(classifyIdFirst))+" ) AND classify_id_second = 0 AND classify_id_third = 0 ) ")
|
|
|
+ for _, id := range classifyIdFirst {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理 classifyIdSecond
|
|
|
+ if len(classifyIdSecond) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_second IN ( "+utils.GetOrmInReplace(len(classifyIdSecond))+" ) AND classify_id_third = 0) ")
|
|
|
+ for _, id := range classifyIdSecond {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理 classifyIdThird
|
|
|
+ if len(classifyIdThird) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_third IN ( "+utils.GetOrmInReplace(len(classifyIdThird))+" ) ) ")
|
|
|
+ for _, id := range classifyIdThird {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(classifyIdSqlList) > 0 {
|
|
|
+ sql += ` AND (` + strings.Join(classifyIdSqlList, " OR ") + `) `
|
|
|
+ }
|
|
|
+
|
|
|
+ sql += ") AS t"
|
|
|
+
|
|
|
+ // 执行 SQL 查询获取总数
|
|
|
+ err = o.Raw(sql, params...).QueryRow(&count)
|
|
|
+ return count, err
|
|
|
+}
|
|
|
+
|
|
|
+func GetReportListByCollectListV2(classifyIdFirst, classifyIdSecond, classifyIdThird []string, keyword, orderField, orderType string, startSize, pageSize int, author string, state int) (items []*ReportList, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("rddp")
|
|
|
+ var params []interface{}
|
|
|
+
|
|
|
+ // SQL 主体
|
|
|
+ sql := `
|
|
|
+ SELECT DISTINCT t.id, t.title, t.author, t.modify_time, t.publish_time,t.classify_id_first,t.classify_name_first,t.classify_id_second,t.classify_name_second,t.classify_id_third,t.classify_name_third
|
|
|
+ FROM (
|
|
|
+ SELECT b.id, b.title, b.author, b.modify_time, b.publish_time,b.classify_id_first,b.classify_name_first,b.classify_id_second,b.classify_name_second,b.classify_id_third,b.classify_name_third
|
|
|
+ FROM report AS b
|
|
|
+ WHERE 1 = 1
|
|
|
+ `
|
|
|
+
|
|
|
+ // 处理关键词
|
|
|
+ if keyword != "" {
|
|
|
+ sql += " AND (b.title LIKE ? OR b.admin_real_name LIKE ?)"
|
|
|
+ params = append(params, "%"+keyword+"%", "%"+keyword+"%")
|
|
|
+ }
|
|
|
+
|
|
|
+ if author != "" {
|
|
|
+ sql += " AND b.author = ? "
|
|
|
+ params = append(params, author)
|
|
|
+ }
|
|
|
+
|
|
|
+ if state > 0 {
|
|
|
+ sql += " AND b.state = ? "
|
|
|
+ params = append(params, state)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分类id判断
|
|
|
+ classifyIdSqlList := make([]string, 0)
|
|
|
+ // 处理 classifyIdFirst
|
|
|
+ if len(classifyIdFirst) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_first IN ( "+utils.GetOrmInReplace(len(classifyIdFirst))+" ) AND classify_id_second = 0 AND classify_id_third = 0 ) ")
|
|
|
+ for _, id := range classifyIdFirst {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理 classifyIdSecond
|
|
|
+ if len(classifyIdSecond) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_second IN ( "+utils.GetOrmInReplace(len(classifyIdSecond))+" ) AND classify_id_third = 0) ")
|
|
|
+ for _, id := range classifyIdSecond {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理 classifyIdThird
|
|
|
+ if len(classifyIdThird) > 0 {
|
|
|
+ classifyIdSqlList = append(classifyIdSqlList, " ( b.classify_id_third IN ( "+utils.GetOrmInReplace(len(classifyIdThird))+" ) ) ")
|
|
|
+ for _, id := range classifyIdThird {
|
|
|
+ params = append(params, id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(classifyIdSqlList) > 0 {
|
|
|
+ sql += ` AND (` + strings.Join(classifyIdSqlList, " OR ") + `) `
|
|
|
+ }
|
|
|
+
|
|
|
+ sql += ") AS t "
|
|
|
+
|
|
|
+ // 排序处理
|
|
|
+ if orderField != "" && orderType != "" {
|
|
|
+ sql += " ORDER BY " + orderField + " " + orderType
|
|
|
+ } else {
|
|
|
+ sql += " ORDER BY t.modify_time DESC, t.publish_time DESC "
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分页
|
|
|
+ sql += " LIMIT ?, ?"
|
|
|
+ params = append(params, (startSize-1)*pageSize, pageSize)
|
|
|
+
|
|
|
+ // 执行 SQL 查询
|
|
|
+ _, err = o.Raw(sql, params...).QueryRows(&items)
|
|
|
+ return items, err
|
|
|
+}
|