123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package eta
- import (
- "fmt"
- "hongze/hz_crm_eta/models/eta"
- "hongze/hz_crm_eta/services/alarm_msg"
- "hongze/hz_crm_eta/utils"
- "sort"
- )
- // UpdateParentClassifyHasTel 更新父级分类是否含有电话字段
- func UpdateParentClassifyHasTel(classifyId, parentId, hasTeleconference int) (err error) {
- if classifyId <= 0 || parentId <= 0 {
- return
- }
- defer func() {
- if err != nil {
- alarm_msg.SendAlarmMsg("编辑分类后-修改父级分类电话会信息失败, ErrMsg: "+err.Error(), 3)
- }
- }()
- ob := new(eta.Classify)
- parentClassify, e := ob.GetClassifyById(parentId)
- if e != nil {
- if e == utils.ErrNoRow {
- err = fmt.Errorf("父级分类不存在")
- return
- }
- err = fmt.Errorf("获取父级分类信息失败, Err: %s", e.Error())
- return
- }
- if parentClassify == nil {
- err = fmt.Errorf("父级分类不存在")
- return
- }
- updateParent := false
- updateCols := make([]string, 0)
- updateCols = append(updateCols, "HasTeleconference")
- if hasTeleconference == 1 {
- // 二级分类包含电话会,则一级分类也默认包含电话会
- if parentClassify.HasTeleconference == 0 {
- parentClassify.HasTeleconference = 1
- updateParent = true
- }
- } else {
- // 二级分类均无电话会,则一级分类也无电话会
- if parentClassify.HasTeleconference == 1 {
- child, e := eta.GetClassifyChild(parentClassify.Id, "")
- if e != nil {
- err = fmt.Errorf("获取子分类失败, Err: %s", e.Error())
- return
- }
- // 存在同一级分类下的二级分类有电话会则不变动
- hasTel := false
- for i := 0; i < len(child); i++ {
- if child[i].HasTeleconference == 1 && child[i].Id != classifyId {
- hasTel = true
- break
- }
- }
- if !hasTel {
- parentClassify.HasTeleconference = 0
- updateParent = true
- }
- }
- }
- if updateParent {
- if e = parentClassify.UpdateClassify(updateCols); e != nil {
- err = fmt.Errorf("更新父级分类失败, Err: %s", e.Error())
- return
- }
- }
- return
- }
- func GetParentClassifyListByParentIdList(parentClassifyIdList []int) (list []*eta.ClassifyListV2, err error) {
- num := len(parentClassifyIdList)
- if num <= 0 {
- return
- }
- list, err = eta.GetClassifyListByParentIdList(parentClassifyIdList)
- if err != nil {
- return
- }
- // 是否还有上级
- {
- currParentClassifyIdList := make([]int, 0)
- for _, v := range list {
- if v.ParentId > 0 {
- currParentClassifyIdList = append(currParentClassifyIdList, v.ParentId)
- }
- }
- if len(currParentClassifyIdList) > 0 {
- tmpList, tmpErr := GetParentClassifyListByParentIdList(currParentClassifyIdList)
- if tmpErr != nil {
- err = tmpErr
- return
- }
- list = append(tmpList, list...)
- }
- }
- return
- }
- // GetClassifyListTreeRecursive
- // @Description: 递归获取分类树形结构
- // @author: Roc
- // @datetime 2024-06-19 13:23:28
- // @param list []*models.ClassifyList
- // @param parentId int
- // @return []*models.ClassifyList
- func GetClassifyListTreeRecursive(list []*eta.ClassifyListV2, parentId int) []*eta.ClassifyListV2 {
- res := make([]*eta.ClassifyListV2, 0)
- for _, v := range list {
- if v.ParentId == parentId {
- v.Child = GetClassifyListTreeRecursive(list, v.Id)
- res = append(res, v)
- }
- }
- // 前端的JP需要我这么返回
- if len(res) <= 0 {
- res = nil
- }
- return res
- }
- // BySortAndCreateTime 用来排序,先按Sort字段升序排序,若Sort相同,则按照CreateTime字段升序排序。
- type BySortAndCreateTime []*eta.ClassifyListV2
- func (a BySortAndCreateTime) Len() int {
- return len(a)
- }
- func (a BySortAndCreateTime) Swap(i, j int) {
- a[i], a[j] = a[j], a[i]
- }
- func (a BySortAndCreateTime) Less(i, j int) bool {
- if a[i].Sort == a[j].Sort {
- return a[i].CreateTime.Before(a[j].CreateTime)
- }
- return a[i].Sort < a[j].Sort
- }
- // SortClassifyListBySortAndCreateTime sorts the ClassifyList slice by Sort and then CreateTime in ascending order.
- func SortClassifyListBySortAndCreateTime(classifyList []*eta.ClassifyListV2) {
- sort.Sort(BySortAndCreateTime(classifyList))
- }
|