xyxie 3 сар өмнө
parent
commit
2ff86cd4f8

+ 53 - 9
controllers/eta_business/eta_business.go

@@ -1545,10 +1545,6 @@ func (this *EtaBusinessController) AddChartPermission() {
 		br.Msg = "请选择商户"
 		br.Msg = "请选择商户"
 		return
 		return
 	}
 	}
-	if req.ChartClassifyIdStr == "" {
-		br.Msg = "请选择图表分类"
-		return
-	}
 
 
 	// 权限校验
 	// 权限校验
 	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
 	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
@@ -1576,6 +1572,9 @@ func (this *EtaBusinessController) AddChartPermission() {
 	chartClassifyIdArr := strings.Split(req.ChartClassifyIdStr, ",")
 	chartClassifyIdArr := strings.Split(req.ChartClassifyIdStr, ",")
 	addList := make([]*eta_business.BusinessChartClassifyPermission, 0)
 	addList := make([]*eta_business.BusinessChartClassifyPermission, 0)
 	for _, v := range chartClassifyIdArr {
 	for _, v := range chartClassifyIdArr {
+		if v == "" {
+			continue
+		}
 		classifyId, e := strconv.Atoi(v)
 		classifyId, e := strconv.Atoi(v)
 		if e != nil {
 		if e != nil {
 			br.Msg = "设置社区权限失败"
 			br.Msg = "设置社区权限失败"
@@ -1624,6 +1623,7 @@ func (this *EtaBusinessController) GetChartPermission() {
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		return
 		return
 	}
 	}
+	keyword := this.GetString("Keyword")
 	etaBusinessId, _ := this.GetInt("EtaBusinessId")
 	etaBusinessId, _ := this.GetInt("EtaBusinessId")
 	if etaBusinessId <= 0 {
 	if etaBusinessId <= 0 {
 		br.Msg = "请选择商户"
 		br.Msg = "请选择商户"
@@ -1666,12 +1666,56 @@ func (this *EtaBusinessController) GetChartPermission() {
 			checkList = append(checkList, v.ChartClassifyId)
 			checkList = append(checkList, v.ChartClassifyId)
 		}
 		}
 	}
 	}
-	allList, err := models.GetChartClassify()
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取数据失败,Err:" + err.Error()
-		return
+	allList := make([]*models.ChartClassifyItems, 0)
+	keywordClassifyIdMap := make(map[int]struct{})
+	keywordClassifyIds := make([]int, 0)
+	if keyword != "" {
+		keywordList, e := models.GetChartClassifyListByKeyword(keyword)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + e.Error()
+			return
+		}
+		for _, v := range keywordList {
+			if _, ok1 := keywordClassifyIdMap[v.ChartClassifyId]; !ok1 {
+				keywordClassifyIdMap[v.ChartClassifyId] = struct{}{}
+				// 解析当前的父级路径,找到路径下的所有分类
+				if v.LevelPath == "" {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取失败,Err: 分类的父级路径为空"
+					return
+				}
+				paths := strings.Split(v.LevelPath, ",")
+				for _, path := range paths {
+					if path != "" {
+						pathInt, _ := strconv.Atoi(path)
+						if _, ok2 := keywordClassifyIdMap[pathInt]; !ok2 {
+							keywordClassifyIdMap[pathInt] = struct{}{}
+						}
+					}
+				}
+			}
+		}
+		for k := range keywordClassifyIdMap {
+			keywordClassifyIds = append(keywordClassifyIds, k)
+		}
+		if len(keywordClassifyIds) > 0 {
+			allList, err = models.GetChartClassifyItemsByIdList(keywordClassifyIds)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取数据失败,Err:" + err.Error()
+				return
+			}
+		}
+	} else {
+		allList, err = models.GetChartClassify()
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+			return
+		}
 	}
 	}
+
 	nodeAll := make([]*models.ChartClassifyItems, 0)
 	nodeAll := make([]*models.ChartClassifyItems, 0)
 	list := make([]*models.ChartClassifyItems, 0)
 	list := make([]*models.ChartClassifyItems, 0)
 	var sortList models.ChartClassifyItemList
 	var sortList models.ChartClassifyItemList

+ 28 - 0
models/chart_classify.go

@@ -437,3 +437,31 @@ type BusinessChartClassifyResp struct {
 	List      []*ChartClassifyItems
 	List      []*ChartClassifyItems
 	CheckList []int
 	CheckList []int
 }
 }
+
+func GetChartClassifyListByKeyword(keyword string) (items []*ChartClassify, err error) {
+	sql := ``
+	pars := make([]interface{}, 0)
+
+	sql = `SELECT * FROM chart_classify WHERE 1=1 `
+	if keyword != `` {
+		sql += ` AND chart_classify_name LIKE ? `
+		pars = append(pars, `%`+keyword+`%`)
+	}
+	sql += ` ORDER BY sort ASC, create_time ASC`
+
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, pars...).QueryRows(&items)
+	return
+}
+
+func GetChartClassifyItemsByIdList(classifyIdList []int) (items []*ChartClassifyItems, err error) {
+	num := len(classifyIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_classify WHERE chart_classify_id in (` + utils.GetOrmInReplace(num) + `) `
+	_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
+
+	return
+}