Browse Source

品种筛选sql修改

xiziwen 4 months ago
parent
commit
ea6f0ac6b6
3 changed files with 29 additions and 11 deletions
  1. 11 1
      models/permission.go
  2. 2 4
      models/report.go
  3. 16 6
      services/document_manage_service/document_manage_service.go

+ 11 - 1
models/permission.go

@@ -1,6 +1,9 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_api/utils"
+	"github.com/beego/beego/v2/client/orm"
+)
 
 // ChartPermissionSearchKeyWordMapping 权限相关
 type ChartPermissionSearchKeyWordMapping struct {
@@ -124,3 +127,10 @@ func GetPermissionByClassifyId(classifyId int) (items []*ChartPermissionSearchKe
 	_, err = o.Raw(sql, classifyId).QueryRows(&items)
 	return
 }
+
+func GetClassifyIdsByPermissionId(chartPermissionIdList []string) (classifyIds []string, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := "SELECT GROUP_CONCAT(classify_id) FROM chart_permission_search_key_word_mapping WHERE `from` =  'rddp' and chart_permission_id IN (" + utils.GetOrmInReplace(len(chartPermissionIdList)) + ") and classify_id <> 0; "
+	_, err = o.Raw(sql, chartPermissionIdList).QueryRows(&classifyIds)
+	return
+}

+ 2 - 4
models/report.go

@@ -166,8 +166,7 @@ type ReportListResp struct {
 // @return err error
 func GetReportListCountV1(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrmUsingDB("rddp")
-	sql := `SELECT COUNT(DISTINCT a.id) AS count  FROM report as a left join chart_permission_search_key_word_mapping b on
-a.classify_id_first = b.classify_id WHERE 1=1 `
+	sql := `SELECT COUNT(DISTINCT a.id) AS count  FROM report as a WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
@@ -204,8 +203,7 @@ func GetReportListByCondition(condition string, pars []interface{}, startSize, p
 
 	sql := `SELECT a.id, a.title, a.author, a.modify_time, a.publish_time,a.classify_id_first,
 a.classify_name_first,a.classify_id_second,a.classify_name_second,a.classify_id_third,
-a.classify_name_third FROM report as a left join chart_permission_search_key_word_mapping b on
-a.classify_id_first = b.classify_id WHERE 1=1  `
+a.classify_name_third FROM report as a WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}

+ 16 - 6
services/document_manage_service/document_manage_service.go

@@ -231,12 +231,6 @@ func RuiSiReportList(classifyIdFirst, classifyIdSecond, classifyIdThird int, cha
 		condition += ` AND a.classify_id_third = ? `
 		pars = append(pars, classifyIdThird)
 	}
-	if len(chartPermissionIdList) > 0 {
-		condition += ` and b.chart_permission_id in (` + utils.GetOrmInReplace(len(chartPermissionIdList)) + `)`
-		for _, chartPermissionId := range chartPermissionIdList {
-			pars = append(pars, chartPermissionId)
-		}
-	}
 	if keyword != "" {
 		condition += ` and ( a.title like ? or a.admin_real_name like ? ) `
 		pars = append(pars, "%"+keyword+"%", "%"+keyword+"%")
@@ -247,6 +241,22 @@ func RuiSiReportList(classifyIdFirst, classifyIdSecond, classifyIdThird int, cha
 	// 已发布的报告
 	condition += ` and a.state = 2`
 
+	if len(chartPermissionIdList) > 0 {
+		classifyIds, err := models.GetClassifyIdsByPermissionId(chartPermissionIdList)
+		if err != nil {
+			return nil, err
+		}
+
+		if len(classifyIds) > 0 {
+			condition += ` AND ( (a.classify_id_first IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND a.classify_id_second = 0) 
+			OR (a.classify_id_second IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) AND a.classify_id_third = 0) 
+			OR a.classify_id_third IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) )`
+			for _, classifyId := range classifyIds {
+				pars = append(pars, classifyId)
+			}
+		}
+	}
+
 	count, err := models.GetReportListCountV1(condition, pars)
 	if err != nil {
 		return nil, err