|
@@ -11,7 +11,6 @@ import (
|
|
|
"hongze/hz_crm_api/services"
|
|
|
"hongze/hz_crm_api/services/yb"
|
|
|
"hongze/hz_crm_api/utils"
|
|
|
- "sort"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
@@ -421,55 +420,64 @@ func (r *RoadVideoController) TwoWeekClassifyList() {
|
|
|
}
|
|
|
|
|
|
// 2023-04-19 取classify表relate_video=1的二级分类, 但是需要分层级, 所以对应的一级分类也要组合起来
|
|
|
- list, e := models.GetAllClassify()
|
|
|
+ list, e := models.GetAllClassifyByRelateVideo()
|
|
|
if e != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
br.ErrMsg = "获取路演视频可选报告分类失败, Err: " + e.Error()
|
|
|
return
|
|
|
}
|
|
|
- resp := make([]*models.SimpleClassifyList, 0)
|
|
|
- parentMap := make(map[int]*models.SimpleClassifyList)
|
|
|
- classifyMap := make(map[int]*models.Classify)
|
|
|
- for _, c := range list {
|
|
|
- classifyMap[c.Id] = c
|
|
|
- if c.ParentId > 0 && c.RelateVideo == 1 {
|
|
|
- if parentMap[c.ParentId] == nil {
|
|
|
- parentMap[c.ParentId] = new(models.SimpleClassifyList)
|
|
|
+
|
|
|
+ // 获取父级的分类
|
|
|
+ {
|
|
|
+ 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)
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- for k, v := range parentMap {
|
|
|
- p := classifyMap[k]
|
|
|
- if p == nil {
|
|
|
- continue
|
|
|
+
|
|
|
+ findList := list
|
|
|
+ list = make([]*models.Classify, 0)
|
|
|
+
|
|
|
+ tmpList, tmpErr := services.GetParentClassifyListByParentIdList(currParentClassifyIdList)
|
|
|
+ if tmpErr != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取上级分类信息失败,Err:" + tmpErr.Error()
|
|
|
+ return
|
|
|
}
|
|
|
- v.Id = p.Id
|
|
|
- v.ClassifyName = p.ClassifyName
|
|
|
- v.Sort = p.Sort
|
|
|
- v.Child = make([]*models.SimpleClassifyList, 0)
|
|
|
- for _, c := range list {
|
|
|
- if c.ParentId == v.Id && c.RelateVideo == 1 {
|
|
|
- v.Child = append(v.Child, &models.SimpleClassifyList{
|
|
|
- Id: c.Id,
|
|
|
- ClassifyName: c.ClassifyName,
|
|
|
- ParentId: c.ParentId,
|
|
|
- Sort: c.Sort,
|
|
|
- })
|
|
|
+ for _, v := range tmpList {
|
|
|
+ if _, ok := idMap[v.Id]; !ok {
|
|
|
+ list = append(list, v)
|
|
|
}
|
|
|
}
|
|
|
- sort.Slice(v.Child, func(i, j int) bool {
|
|
|
- return v.Child[j].Sort > v.Child[i].Sort
|
|
|
+
|
|
|
+ list = append(list, findList...)
|
|
|
+ }
|
|
|
+
|
|
|
+ allList := make([]*models.SimpleClassifyList, 0)
|
|
|
+ for _, v := range list {
|
|
|
+ allList = append(allList, &models.SimpleClassifyList{
|
|
|
+ Id: v.Id,
|
|
|
+ ClassifyName: v.ClassifyName,
|
|
|
+ ParentId: v.ParentId,
|
|
|
+ Sort: v.Sort,
|
|
|
+ CreateTime: v.CreateTime,
|
|
|
+ Child: make([]*models.SimpleClassifyList, 0),
|
|
|
})
|
|
|
- resp = append(resp, v)
|
|
|
}
|
|
|
- sort.Slice(resp, func(i, j int) bool {
|
|
|
- return resp[j].Sort > resp[i].Sort
|
|
|
- })
|
|
|
+
|
|
|
+ // 先将分类列表排序
|
|
|
+ services.SortClassifyListBySortAndCreateTime(allList)
|
|
|
+ // 接着转换结构
|
|
|
+ allList = services.GetClassifyListTreeRecursive(allList, 0)
|
|
|
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Msg = "操作成功"
|
|
|
- br.Data = resp
|
|
|
+ br.Data = allList
|
|
|
}
|
|
|
|
|
|
// SimpleReportList
|
|
@@ -498,7 +506,8 @@ func (r *RoadVideoController) SimpleReportList() {
|
|
|
classifyIdSecond, _ := r.GetInt("ClassifyIdSecond", 0)
|
|
|
if classifyIdSecond <= 0 {
|
|
|
// 2023-03-03 直接取classify表relate_video=1的二级分类下的报告
|
|
|
- classifyCond := ` AND parent_id > 0 AND relate_video = 1`
|
|
|
+ //classifyCond := ` AND parent_id > 0 AND relate_video = 1`
|
|
|
+ classifyCond := ` AND relate_video = 1`
|
|
|
classifyPars := make([]interface{}, 0)
|
|
|
classifyList, e := models.GetClassifyByCondition(classifyCond, "", classifyPars)
|
|
|
if e != nil {
|
|
@@ -506,28 +515,68 @@ func (r *RoadVideoController) SimpleReportList() {
|
|
|
br.ErrMsg = "获取路演视频可选报告分类失败, Err: " + e.Error()
|
|
|
return
|
|
|
}
|
|
|
- classifyIds := make([]int, 0)
|
|
|
+ var hasChild bool
|
|
|
+ firstClassifyIds := make([]int, 0)
|
|
|
+ secondClassifyIds := make([]int, 0)
|
|
|
+ thirdClassifyIds := make([]int, 0)
|
|
|
for _, c := range classifyList {
|
|
|
- classifyIds = append(classifyIds, c.Id)
|
|
|
+ switch c.Level {
|
|
|
+ case 1:
|
|
|
+ firstClassifyIds = append(firstClassifyIds, c.Id)
|
|
|
+ hasChild = true
|
|
|
+ case 2:
|
|
|
+ secondClassifyIds = append(secondClassifyIds, c.Id)
|
|
|
+ hasChild = true
|
|
|
+ case 3:
|
|
|
+ thirdClassifyIds = append(thirdClassifyIds, c.Id)
|
|
|
+ hasChild = true
|
|
|
+ }
|
|
|
}
|
|
|
- if len(classifyIds) > 0 {
|
|
|
- cond += ` AND classify_id_second IN ( ` + utils.GetOrmInReplace(len(classifyIds)) + ` ) `
|
|
|
- pars = append(pars, classifyIds)
|
|
|
+ if hasChild {
|
|
|
+ classifyCondList := make([]string, 0)
|
|
|
+ if len(firstClassifyIds) > 0 {
|
|
|
+ classifyCondList = append(classifyCondList, ` classify_id_first IN ( `+utils.GetOrmInReplace(len(firstClassifyIds))+` ) `)
|
|
|
+ pars = append(pars, firstClassifyIds)
|
|
|
+ }
|
|
|
+ if len(secondClassifyIds) > 0 {
|
|
|
+ classifyCondList = append(classifyCondList, ` classify_id_second IN ( `+utils.GetOrmInReplace(len(secondClassifyIds))+` ) `)
|
|
|
+ pars = append(pars, secondClassifyIds)
|
|
|
+ }
|
|
|
+ if len(thirdClassifyIds) > 0 {
|
|
|
+ classifyCondList = append(classifyCondList, ` classify_id_third IN ( `+utils.GetOrmInReplace(len(thirdClassifyIds))+` ) `)
|
|
|
+ pars = append(pars, thirdClassifyIds)
|
|
|
+ }
|
|
|
+ cond += fmt.Sprintf(` AND (%s) `, strings.Join(classifyCondList, " OR "))
|
|
|
} else {
|
|
|
cond += ` AND 1 = 2`
|
|
|
}
|
|
|
+ } else {
|
|
|
+ classifyItem, err := models.GetClassifyById(classifyIdSecond)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分类失败, Err: " + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ switch classifyItem.Level {
|
|
|
+ case 1:
|
|
|
+ cond += ` AND classify_id_first = ? `
|
|
|
+ pars = append(pars, classifyIdSecond)
|
|
|
+ case 2:
|
|
|
+ cond += ` AND classify_id_second = ? `
|
|
|
+ pars = append(pars, classifyIdSecond)
|
|
|
+ case 3:
|
|
|
+ cond += ` AND classify_id_third = ? `
|
|
|
+ pars = append(pars, classifyIdSecond)
|
|
|
+ }
|
|
|
}
|
|
|
- if classifyIdSecond > 0 {
|
|
|
- cond += ` AND classify_id_second = ? `
|
|
|
- pars = append(pars, classifyIdSecond)
|
|
|
- }
|
|
|
+
|
|
|
keyword := r.GetString("Keyword", "")
|
|
|
if keyword != "" {
|
|
|
kw := fmt.Sprint("%", keyword, "%")
|
|
|
cond += ` AND title LIKE ?`
|
|
|
pars = append(pars, kw)
|
|
|
}
|
|
|
- fieldArr := []string{"id", "classify_id_second", "title", "publish_time"}
|
|
|
+ fieldArr := []string{"id", "classify_id_first", "classify_id_second", "classify_id_third", "title", "publish_time"}
|
|
|
orderRule := ` ORDER BY publish_time DESC, id DESC`
|
|
|
reports, e := models.GetReportByCondition(cond, pars, fieldArr, orderRule, true, 0, 5)
|
|
|
if e != nil {
|
|
@@ -541,10 +590,16 @@ func (r *RoadVideoController) SimpleReportList() {
|
|
|
{
|
|
|
classifyIds := make([]int, 0)
|
|
|
for _, v := range reports {
|
|
|
- if utils.InArrayByInt(classifyIds, v.ClassifyIdSecond) {
|
|
|
+ minClassifyId, _, e := services.GetMinClassify(v)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取报告的最小分类失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if utils.InArrayByInt(classifyIds, minClassifyId) {
|
|
|
continue
|
|
|
}
|
|
|
- classifyIds = append(classifyIds, v.ClassifyIdSecond)
|
|
|
+ classifyIds = append(classifyIds, minClassifyId)
|
|
|
}
|
|
|
if len(classifyIds) > 0 {
|
|
|
classifyIdsPermissions, e := models.GetPermissionsByClassifyIds(classifyIds)
|
|
@@ -588,13 +643,20 @@ func (r *RoadVideoController) SimpleReportList() {
|
|
|
}
|
|
|
|
|
|
for i := range reports {
|
|
|
+ tmpReport := reports[i]
|
|
|
+ minClassifyId, _, e := services.GetMinClassify(tmpReport)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取报告的最小分类失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
respList = append(respList, &SimpleReportListResp{
|
|
|
- ReportId: reports[i].Id,
|
|
|
- Title: reports[i].Title,
|
|
|
- PublishTime: reports[i].PublishTime.Format(utils.FormatDateTime),
|
|
|
- BindVideo: bindMap[reports[i].Id],
|
|
|
- BindVideoTitle: bindTitleMap[reports[i].Id],
|
|
|
- PermissionIds: classifyPermissions[reports[i].ClassifyIdSecond],
|
|
|
+ ReportId: tmpReport.Id,
|
|
|
+ Title: tmpReport.Title,
|
|
|
+ PublishTime: tmpReport.PublishTime.Format(utils.FormatDateTime),
|
|
|
+ BindVideo: bindMap[tmpReport.Id],
|
|
|
+ BindVideoTitle: bindTitleMap[tmpReport.Id],
|
|
|
+ PermissionIds: classifyPermissions[minClassifyId],
|
|
|
})
|
|
|
}
|
|
|
}
|