|
@@ -6,6 +6,8 @@ import (
|
|
|
"eta_gn/eta_api/services"
|
|
|
"eta_gn/eta_api/utils"
|
|
|
"fmt"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -458,110 +460,178 @@ func (this *ClassifyController) ListClassify() {
|
|
|
enabled = reqEnabled
|
|
|
}
|
|
|
|
|
|
- list, err := models.GetClassifyListByKeyword(keyWord, enabled, classifyType)
|
|
|
+ //list, err := models.GetClassifyListByKeyword(keyWord, enabled, classifyType)
|
|
|
+ //if err != nil {
|
|
|
+ // br.Msg = "获取失败"
|
|
|
+ // br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ //if keyWord != `` {
|
|
|
+ // idMap := make(map[int]bool)
|
|
|
+ //
|
|
|
+ // currParentClassifyIdList := make([]int, 0)
|
|
|
+ // for _, v := range list {
|
|
|
+ // idMap[v.Id] = true
|
|
|
+ // if v.ParentId > 0 {
|
|
|
+ // currParentClassifyIdList = append(currParentClassifyIdList, v.ParentId)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // findList := list
|
|
|
+ // list = make([]*models.ClassifyList, 0)
|
|
|
+ //
|
|
|
+ // tmpList, tmpErr := services.GetParentClassifyListByParentIdList(currParentClassifyIdList)
|
|
|
+ // if tmpErr != nil {
|
|
|
+ // br.Msg = "获取失败"
|
|
|
+ // br.ErrMsg = "获取上级分类信息失败,Err:" + tmpErr.Error()
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for _, v := range tmpList {
|
|
|
+ // if _, ok := idMap[v.Id]; !ok {
|
|
|
+ // list = append(list, v)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // list = append(list, findList...)
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ //classifyIdList := make([]int, 0)
|
|
|
+ //for i := range list {
|
|
|
+ // classifyIdList = append(classifyIdList, list[i].Id)
|
|
|
+ //}
|
|
|
+ //parentIdLen := len(classifyIdList)
|
|
|
+ //if parentIdLen == 0 {
|
|
|
+ // resp := &models.ClassifyListResp{
|
|
|
+ // List: list,
|
|
|
+ // }
|
|
|
+ // br.Data = resp
|
|
|
+ // br.Ret = 200
|
|
|
+ // br.Success = true
|
|
|
+ // br.Msg = "获取成功"
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ //// 获取子目录列表
|
|
|
+ //menuListMap := make(map[int][]*models.ClassifyMenu, 0)
|
|
|
+ //var menuCond string
|
|
|
+ //var menuPars []interface{}
|
|
|
+ //menuCond += ` AND classify_id IN (` + utils.GetOrmInReplace(parentIdLen) + `)`
|
|
|
+ //menuPars = append(menuPars, classifyIdList)
|
|
|
+ //parentMenus, e := models.GetClassifyMenuList(menuCond, menuPars)
|
|
|
+ //if e != nil {
|
|
|
+ // br.Msg = "获取失败"
|
|
|
+ // br.ErrMsg = "获取一级分类子目录列表失败"
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ //for i := range parentMenus {
|
|
|
+ // if menuListMap[parentMenus[i].ClassifyId] == nil {
|
|
|
+ // menuListMap[parentMenus[i].ClassifyId] = make([]*models.ClassifyMenu, 0)
|
|
|
+ // }
|
|
|
+ // menuListMap[parentMenus[i].ClassifyId] = append(menuListMap[parentMenus[i].ClassifyId], parentMenus[i])
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ //// 分类与子目录关联
|
|
|
+ //relateMap := make(map[int]int, 0)
|
|
|
+ //{
|
|
|
+ // var relateCond string
|
|
|
+ // var relatePars []interface{}
|
|
|
+ // relateCond += ` AND classify_id IN (` + utils.GetOrmInReplace(parentIdLen) + `)`
|
|
|
+ // relatePars = append(relatePars, classifyIdList)
|
|
|
+ // relates, e := models.GetClassifyMenuRelationList(relateCond, relatePars)
|
|
|
+ // if e != nil {
|
|
|
+ // br.Msg = "获取失败"
|
|
|
+ // br.ErrMsg = "获取二级分类子目录关联失败, Err: " + e.Error()
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // for i := range relates {
|
|
|
+ // relateMap[relates[i].ClassifyId] = relates[i].MenuId
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //
|
|
|
+ //// 查询分类绑定的权限
|
|
|
+ //permissionList, _ := models.GetAllPermissionMapping()
|
|
|
+ //classifyPermissionMap := make(map[int][]int)
|
|
|
+ //if len(permissionList) > 0 {
|
|
|
+ // for _, v := range permissionList {
|
|
|
+ // classifyPermissionMap[v.ClassifyId] = append(classifyPermissionMap[v.ClassifyId], v.ChartPermissionId)
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //// 遍历分类并绑定子目录和权限
|
|
|
+ //for i, v := range list {
|
|
|
+ // list[i].ClassifyMenuList = menuListMap[v.Id]
|
|
|
+ //
|
|
|
+ // list[i].ClassifyMenuId = relateMap[v.Id]
|
|
|
+ // if permissionIds, ok := classifyPermissionMap[v.Id]; ok {
|
|
|
+ // list[i].ChartPermissionIdList = permissionIds
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ // 获取所有分类
|
|
|
+ originList, err := models.GetClassifyListByKeyword("", enabled, 0)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
+ list := originList
|
|
|
|
|
|
- if keyWord != `` {
|
|
|
- idMap := make(map[int]bool)
|
|
|
-
|
|
|
- currParentClassifyIdList := make([]int, 0)
|
|
|
- for _, v := range list {
|
|
|
- idMap[v.Id] = true
|
|
|
- if v.ParentId > 0 {
|
|
|
- currParentClassifyIdList = append(currParentClassifyIdList, v.ParentId)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- findList := list
|
|
|
+ // 指定分类类型(上级中的分类类型可能与最下层的不一致,但是要把上级也一起取出来, 这需求...=_=!)
|
|
|
+ if classifyType > 0 {
|
|
|
list = make([]*models.ClassifyList, 0)
|
|
|
-
|
|
|
- tmpList, tmpErr := services.GetParentClassifyListByParentIdList(currParentClassifyIdList)
|
|
|
- if tmpErr != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取上级分类信息失败,Err:" + tmpErr.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- for _, v := range tmpList {
|
|
|
- if _, ok := idMap[v.Id]; !ok {
|
|
|
- list = append(list, v)
|
|
|
+ // 先取出指定分类以及他对应的LevelPath中的所有ID
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
+ for _, v := range originList {
|
|
|
+ if v.ClassifyType != classifyType {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ pathArr := strings.Split(v.LevelPath, ",")
|
|
|
+ for _, p := range pathArr {
|
|
|
+ id, _ := strconv.Atoi(p)
|
|
|
+ if id <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if utils.InArrayByInt(classifyIds, id) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ classifyIds = append(classifyIds, id)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- list = append(list, findList...)
|
|
|
- }
|
|
|
-
|
|
|
- classifyIdList := make([]int, 0)
|
|
|
- for i := range list {
|
|
|
- classifyIdList = append(classifyIdList, list[i].Id)
|
|
|
- }
|
|
|
- parentIdLen := len(classifyIdList)
|
|
|
- if parentIdLen == 0 {
|
|
|
- resp := &models.ClassifyListResp{
|
|
|
- List: list,
|
|
|
- }
|
|
|
- br.Data = resp
|
|
|
- br.Ret = 200
|
|
|
- br.Success = true
|
|
|
- br.Msg = "获取成功"
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 获取子目录列表
|
|
|
- menuListMap := make(map[int][]*models.ClassifyMenu, 0)
|
|
|
- var menuCond string
|
|
|
- var menuPars []interface{}
|
|
|
- menuCond += ` AND classify_id IN (` + utils.GetOrmInReplace(parentIdLen) + `)`
|
|
|
- menuPars = append(menuPars, classifyIdList)
|
|
|
- parentMenus, e := models.GetClassifyMenuList(menuCond, menuPars)
|
|
|
- if e != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取一级分类子目录列表失败"
|
|
|
- return
|
|
|
- }
|
|
|
- for i := range parentMenus {
|
|
|
- if menuListMap[parentMenus[i].ClassifyId] == nil {
|
|
|
- menuListMap[parentMenus[i].ClassifyId] = make([]*models.ClassifyMenu, 0)
|
|
|
- }
|
|
|
- menuListMap[parentMenus[i].ClassifyId] = append(menuListMap[parentMenus[i].ClassifyId], parentMenus[i])
|
|
|
- }
|
|
|
-
|
|
|
- // 分类与子目录关联
|
|
|
- relateMap := make(map[int]int, 0)
|
|
|
- {
|
|
|
- var relateCond string
|
|
|
- var relatePars []interface{}
|
|
|
- relateCond += ` AND classify_id IN (` + utils.GetOrmInReplace(parentIdLen) + `)`
|
|
|
- relatePars = append(relatePars, classifyIdList)
|
|
|
- relates, e := models.GetClassifyMenuRelationList(relateCond, relatePars)
|
|
|
- if e != nil {
|
|
|
- br.Msg = "获取失败"
|
|
|
- br.ErrMsg = "获取二级分类子目录关联失败, Err: " + e.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- for i := range relates {
|
|
|
- relateMap[relates[i].ClassifyId] = relates[i].MenuId
|
|
|
+ // 过滤掉不在ID中的
|
|
|
+ for _, v := range originList {
|
|
|
+ if !utils.InArrayByInt(classifyIds, v.Id) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ list = append(list, v)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 查询分类绑定的权限
|
|
|
- permissionList, _ := models.GetAllPermissionMapping()
|
|
|
- classifyPermissionMap := make(map[int][]int)
|
|
|
- if len(permissionList) > 0 {
|
|
|
- for _, v := range permissionList {
|
|
|
- classifyPermissionMap[v.ClassifyId] = append(classifyPermissionMap[v.ClassifyId], v.ChartPermissionId)
|
|
|
+ // 有关键词,那么按照上面的方法再筛一遍
|
|
|
+ keyWord = strings.TrimSpace(keyWord)
|
|
|
+ if keyWord != `` {
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
+ for _, v := range list {
|
|
|
+ if !strings.Contains(v.ClassifyName, keyWord) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ pathArr := strings.Split(v.LevelPath, ",")
|
|
|
+ for _, p := range pathArr {
|
|
|
+ id, _ := strconv.Atoi(p)
|
|
|
+ if id <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if utils.InArrayByInt(classifyIds, id) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ classifyIds = append(classifyIds, id)
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- // 遍历分类并绑定子目录和权限
|
|
|
- for i, v := range list {
|
|
|
- list[i].ClassifyMenuList = menuListMap[v.Id]
|
|
|
-
|
|
|
- list[i].ClassifyMenuId = relateMap[v.Id]
|
|
|
- if permissionIds, ok := classifyPermissionMap[v.Id]; ok {
|
|
|
- list[i].ChartPermissionIdList = permissionIds
|
|
|
+ for _, v := range originList {
|
|
|
+ if !utils.InArrayByInt(classifyIds, v.Id) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ list = append(list, v)
|
|
|
}
|
|
|
}
|
|
|
|