123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- package english_report
- import (
- "fmt"
- "hongze/hz_crm_api/models"
- "hongze/hz_crm_api/utils"
- "sort"
- )
- // ListClassify
- // @Title 获取分类列表
- // @Description 获取分类列表
- // @Param PageSize query int true "每页数据条数"
- // @Param CurrentIndex query int true "当前页页码,从1开始"
- // @Param KeyWord query string true "检索关键词"
- // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
- // @Success 200 {object} models.EnglishClassifyListResp
- // @router /classify/list [get]
- func (this *EnglishReportController) ListClassify() {
- br := new(models.BaseResponse).Init()
- defer func() {
- this.Data["json"] = br
- this.ServeJSON()
- }()
- keyWord := this.GetString("KeyWord")
- reqEnabled, _ := this.GetInt("Enabled", -1)
- enabled := -1
- if reqEnabled == 1 {
- enabled = reqEnabled
- }
- resp := new(models.EnglishClassifyListResp)
- // 处理一级分类分页的情况
- rootList, err := models.GetEnglishClassifyRootId(keyWord, enabled)
- if err != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取失败,Err:" + err.Error()
- return
- }
- if len(rootList) == 0 {
- resp.List = make([]*models.EnglishClassifyList, 0)
- br.Data = resp
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- return
- }
- var ids []int
- var rootIds []int
- rootMap := make(map[int]struct{}, 0)
- for _, v := range rootList {
- rootIds = append(rootIds, v.Id)
- rootMap[v.Id] = struct{}{}
- }
- //获取相关的分类ID
- idList, err := models.GetEnglishClassifyListByRootId(rootIds, keyWord, enabled)
- if err != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取失败,Err:" + err.Error()
- return
- }
- secondListMap := make(map[int][]*models.EnglishClassifyList)
- thirdListMap := make(map[int][]*models.EnglishClassifyList)
- var thirdIds []int
- var sortChildList models.RSChildClassifyList
- // 三级分类-品种权限
- permissionMap := make(map[int][]int)
- if len(idList) > 0 {
- childIdMap := make(map[int]struct{}, 0)
- for _, v := range idList {
- if _, ok := childIdMap[v.ParentId]; !ok {
- ids = append(ids, v.ParentId)
- childIdMap[v.ParentId] = struct{}{}
- }
- if _, ok := childIdMap[v.Id]; !ok {
- ids = append(ids, v.Id)
- childIdMap[v.Id] = struct{}{}
- }
- }
- tmpList, err := models.GetEnglishClassifyChildByIds(ids)
- if err != nil {
- br.Msg = "获取二级分类失败"
- br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
- return
- }
- for _, v := range tmpList {
- if _, ok := rootMap[v.ParentId]; !ok {
- thirdIds = append(thirdIds, v.Id)
- }
- }
- {
- classifyIds := thirdIds
- if len(classifyIds) > 0 {
- cond := fmt.Sprintf(` AND %s IN (%s)`, models.EnClassifyPermissionColumns.EnClassifyId, utils.GetOrmInReplace(len(classifyIds)))
- pars := make([]interface{}, 0)
- pars = append(pars, classifyIds)
- ob := new(models.EnClassifyPermission)
- items, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
- if e != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取客户权限列表失败, Err: " + e.Error()
- return
- }
- for _, v := range items {
- if permissionMap[v.EnClassifyId] == nil {
- permissionMap[v.EnClassifyId] = make([]int, 0)
- }
- permissionMap[v.EnClassifyId] = append(permissionMap[v.EnClassifyId], v.EnPermissionId)
- }
- }
- }
- // 处理三级分类
- for _, v := range tmpList {
- if _, ok := rootMap[v.ParentId]; !ok {
- if p, ok1 := permissionMap[v.Id]; ok1 {
- v.EnPermissions = p
- }
- thirdListMap[v.ParentId] = append(thirdListMap[v.ParentId], v)
- }
- }
- //处理二级分类
- for _, v := range tmpList {
- if _, ok := rootMap[v.ParentId]; ok {
- if child, ok1 := thirdListMap[v.Id]; ok1 {
- sortChildList = child
- sort.Sort(sortChildList)
- v.Child = sortChildList
- }
- secondListMap[v.ParentId] = append(secondListMap[v.ParentId], v)
- }
- }
- }
- //处理一级分类
- var sortList models.RSClassifyList
- for _, v := range rootList {
- if child, ok := secondListMap[v.Id]; ok {
- sortChildList = child
- sort.Sort(sortChildList)
- v.Child = sortChildList
- }
- sortList = append(sortList, v)
- }
- sort.Sort(sortList)
- resp.List = sortList
- br.Data = resp
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- }
|