package english_report import ( "fmt" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/models" "hongze/hz_crm_api/utils" "sort" ) // EnglishClassifyController 英文分类 //type EnglishClassifyController struct { // controllers.BaseAuthController //} // 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() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") keyWord := this.GetString("KeyWord") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) page := paging.GetPaging(currentIndex, pageSize, 0) resp := new(models.EnglishClassifyListResp) // 处理一级分类分页的情况 rootList, err := models.GetEnglishClassifyRootId(startSize, pageSize, keyWord) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() 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{}{} } total, err := models.GetEnglishClassifyListCount(keyWord) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if total == 0 { resp.List = make([]*models.EnglishClassifyList, 0) resp.Paging = page br.Data = resp br.Ret = 200 br.Success = true br.Msg = "获取成功" return } page = paging.GetPaging(currentIndex, pageSize, total) //获取相关的分类ID idList, err := models.GetEnglishClassifyListByRootId(rootIds, keyWord) 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) } if _, ok := childIdMap[v.Id]; !ok { ids = append(ids, v.Id) } } 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 resp.Paging = page br.Data = resp br.Ret = 200 br.Success = true br.Msg = "获取成功" } //// @Title 新增分类 //// @Description 新增分类接口 //// @Param ClassifyName int true "分类名称" //// @Param ParentId query int true "父级Id 添加父级时为0" //// @Param Sort query string false "排序" //// @Success 200 新增成功 //// @router /classify/add [get] //func (this *EnglishReportController) AddClassify() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // classifyName := this.GetString("ClassifyName") // parentId, _ := this.GetInt("ParentId") // classifyType, _ := this.GetInt("ClassifyType", 0) // sort, _ := this.GetInt("Sort") // // item := &models.EnglishClassify{ // ClassifyName: classifyName, // Sort: sort, // ParentId: parentId, // CreateTime: time.Now(), // ModifyTime: time.Now(), // ClassifyType: classifyType, // IsShow: 1, // } // counts, err := models.GetEnglishClassifyCountsByName(classifyName, parentId, classifyType) // if err != nil { // br.Msg = "查询失败" // br.ErrMsg = "查询失败,Err:" + err.Error() // return // } // if counts > 0 { // br.Msg = "该名称已存在" // br.ErrMsg = "该名称已存在!" // return // } // _, err = models.AddEnglishClassify(item) // if err != nil { // br.Msg = "保存失败" // br.ErrMsg = "保存失败,Err:" + err.Error() // return // } // // br.Ret = 200 // br.Success = true // br.Msg = "新增成功" //} // //// @Title 编辑分类 //// @Description 编辑分类接口 //// @Param ClassifyId int true "分类Id" //// @Param ClassifyName string true "分类名称" //// @Param ParentId query int true "父级Id 添加父级时为0" //// @Param Sort query string false "排序" //// @Success 200 保存成功 //// @router /classify/edit [get] //func (this *EnglishReportController) EditClassify() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // classifyId, _ := this.GetInt("ClassifyId") // classifyName := this.GetString("ClassifyName") // parentId, _ := this.GetInt("ParentId") // sort, _ := this.GetInt("Sort") // // if parentId == classifyId { // br.Msg = "上级分类不能选择自己" // return // } // if classifyId <= 0 { // br.Msg = "参数错误" // return // } // if classifyName == "" { // br.Msg = "分类名称不可为空" // return // } // // oldItem, err := models.GetEnglishReportClassifyById(classifyId) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取信息失败,Err:" + err.Error() // return // } // parent, err := models.GetEnglishReportClassifyById(parentId) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取信息失败,Err:" + err.Error() // return // } // // if oldItem.ParentId == 0 && parentId > 0 { // // 一级分类变更为二级分类,禁止 // br.Msg = "一级分类不允许更改为二级分类" // return // } // // //判断是否已存在同个名称的分类 // existItem, e := models.GetEnglishClassifyByClassifyNameParentId(classifyName, parentId, oldItem.ClassifyType) // if e != nil { // if e.Error() != utils.ErrNoRow() { // br.Msg = "查询已存在的分类出错" // br.ErrMsg = "查询已存在的分类出错, Err:" + e.Error() // return // } // } // if e == nil && existItem.Id != oldItem.Id { // br.Msg = "分类名称:" + classifyName + "已存在" // return // } // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取信息失败,Err:" + err.Error() // return // } // // //oldParentId := item.ParentId // item := &models.EnglishClassify{ // Id: oldItem.Id, // ClassifyName: classifyName, // Sort: sort, // ParentId: parentId, // ModifyTime: time.Now(), // ClassifyType: oldItem.ClassifyType, // IsShow: 1, // } // if oldItem.ClassifyType == 1 { // err = services.UpdateEnglishVideoClassifyId(oldItem, item, parent, classifyId) // if err != nil { // br.Msg = err.Error() // return // } // } else { // // 更新研报里的分类名称 // err = services.UpdateEnglishReportClassifyId(oldItem, item, parent, classifyId) // if err != nil { // br.Msg = err.Error() // return // } // } // // err = models.ModifyEnglishClassify(item) // if err != nil { // br.Msg = "保存失败" // br.ErrMsg = "保存失败,Err:" + err.Error() // return // } // // br.Ret = 200 // br.Success = true // br.Msg = "保存成功" //} // //// @Title 删除分类列表 //// @Description 删除分类列表 //// @Param ClassifyId int true "分类名称" //// @Param ParentId query int true "父级Id" //// @Success 200 保存成功 //// @router /classify/delete [get] //func (this *EnglishReportController) DelClassify() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // classifyId, _ := this.GetInt("ClassifyId") // //parentId, _ := this.GetInt("ParentId") // // classifyInfo, err := models.GetEnglishReportClassifyById(classifyId) // if err != nil { // if err.Error() == utils.ErrNoRow() { // br.Msg = "当前分类不存在" // br.ErrMsg = "当前分类不存在" // return // } // br.Msg = "获取分类信息失败" // br.ErrMsg = "获取分类信息失败,Err:" + err.Error() // return // } // // count, err := models.GetEnglishClassifyChildCounts(classifyId) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return // } // // if count > 0 { // br.Msg = "请先删除该分类下关联分类" // br.Ret = 403 // return // } // // if classifyInfo.ClassifyType == 0 { // reportCount, e := models.GetEnglishReportCounts(classifyId, classifyInfo.ParentId) // if e != nil && e.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取失败,Err:" + e.Error() // return // } // // if reportCount > 0 { // br.Msg = "该分类有关联报告,不允许删除" // br.Ret = 403 // return // } // } else { // videoCount, e := models.GetEnglishVideoCounts(classifyId, classifyInfo.ParentId) // if e != nil && e.Error() != utils.ErrNoRow() { // br.Msg = "获取信息失败" // br.ErrMsg = "获取失败,Err:" + e.Error() // return // } // // if videoCount > 0 { // br.Msg = "该分类有关联的路演视频,不允许删除" // br.Ret = 403 // return // } // } // // if err = models.DeleteEnglishClassify(classifyId); err != nil { // br.Msg = "删除失败" // br.ErrMsg = "删除报告失败, Err: " + err.Error() // return // } // // br.Ret = 200 // br.Success = true // br.Msg = "删除成功" //} // //// @Title 获取一级分类列表 //// @Description 获取一级分类列表 //// @Param PageSize query int true "每页数据条数" //// @Param CurrentIndex query int true "当前页页码,从1开始" //// @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部" //// @Success 200 {object} models.EnglishClassifyListResp //// @router /classify/first/list [get] //func (this *EnglishReportController) FistListClassify() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // pageSize, _ := this.GetInt("PageSize") // currentIndex, _ := this.GetInt("CurrentIndex") // classifyType, _ := this.GetInt("ClassifyType", 0) // // var startSize int // if pageSize <= 0 { // pageSize = utils.PageSize20 // } // if currentIndex <= 0 { // currentIndex = 1 // } // // startSize = utils.StartIndex(currentIndex, pageSize) // list, err := models.GetEnglishFirstClassifyList(classifyType, startSize, pageSize) // if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return // } // total, err := models.GetEnglishFirstClassifyListCount(classifyType) // if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return // } // // page := paging.GetPaging(currentIndex, pageSize, total) // resp := new(models.EnglishClassifyListResp) // resp.List = list // resp.Paging = page // // br.Data = resp // br.Ret = 200 // br.Success = true // br.Msg = "获取成功" //} // //// PermissionEdit //// @Title 编辑品种权限 //// @Description 编辑品种权限 //// @Param request body models.EnPermissionAddReq true "type json string" //// @Success 200 Ret=200 操作成功 //// @router /permission/edit [post] //func (this *EnglishClassifyController) PermissionEdit() { // br := new(models.BaseResponse).Init() // defer func() { // if br.ErrMsg == "" { // br.IsSendEmail = false // } // this.Data["json"] = br // this.ServeJSON() // }() // sysUser := this.SysUser // if sysUser == nil { // br.Msg = "请登录" // br.ErrMsg = "请登录,SysUser Is Empty" // br.Ret = 408 // return // } // var req models.EnClassifyPermissionEditReq // if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil { // br.Msg = "参数解析异常!" // br.ErrMsg = "参数解析失败,Err:" + e.Error() // return // } // if req.ClassifyId <= 0 { // br.Msg = "参数有误" // return // } // // // 更新品种权限 // nowTime := time.Now().Local() // permissions := make([]*models.EnClassifyPermission, 0) // for _, p := range req.EnPermissions { // v := new(models.EnClassifyPermission) // v.EnPermissionId = p // v.EnClassifyId = req.ClassifyId // v.CreateTime = nowTime // permissions = append(permissions, v) // } // if e := models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil { // br.Msg = "保存失败" // br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error() // return // } // // br.Ret = 200 // br.Success = true // br.Msg = "操作成功" //}