|
@@ -0,0 +1,604 @@
|
|
|
+package controllers
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "eta_gn/eta_api/models"
|
|
|
+ "eta_gn/eta_api/models/system"
|
|
|
+ "eta_gn/eta_api/services"
|
|
|
+ "eta_gn/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// ReportClassify
|
|
|
+// @Title 获取ppt报告分类
|
|
|
+// @Description 获取ppt报告分类
|
|
|
+// @Param Source query int false "来源:1-我的;2-协作;3-公共"
|
|
|
+// @Success 200 {object} models.PptReportClassifyItem
|
|
|
+// @router /report/classify [get]
|
|
|
+func (this *PptV2Controller) ReportClassify() {
|
|
|
+ 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"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ source, _ := this.GetInt("Source", 1)
|
|
|
+ if source < 1 || source > 3 {
|
|
|
+ source = 1
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取PPT, source:1-我的;2-协作;3-公共
|
|
|
+ pptList := make([]*models.PptV2, 0)
|
|
|
+ {
|
|
|
+ cond := ``
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ switch source {
|
|
|
+ case 1:
|
|
|
+ cond += ` AND admin_id = ?`
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ case 2:
|
|
|
+ cond += ` AND collaborate_type = ? AND (admin_id = ? OR FIND_IN_SET(?, collaborate_users)) `
|
|
|
+ pars = append(pars, utils.ReportWriteTypeGroup, sysUser.AdminId)
|
|
|
+ case 3:
|
|
|
+ cond += ` AND report_source = ? AND state = ?`
|
|
|
+ pars = append(pars, utils.ReportSourceOuter, models.ReportStatePass)
|
|
|
+ }
|
|
|
+ pptOb := new(models.PptV2)
|
|
|
+ list, e := pptOb.GetItemsByCondition(cond, pars, models.PptReportQueryFields, "modify_time DESC")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ pptList = list
|
|
|
+ }
|
|
|
+ classifyPpt := make(map[int][]*models.PptReportItem)
|
|
|
+ for _, v := range pptList {
|
|
|
+ // 当前编辑人
|
|
|
+ t := v.Format2ReportItem(v)
|
|
|
+ editor, e := services.UpdatePptEditing(v.PptId, 0, sysUser.AdminId, sysUser.RealName, false)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT编辑状态失败, err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ t.Editor = editor
|
|
|
+
|
|
|
+ // 权限
|
|
|
+ if source == 1 || source == 2 {
|
|
|
+ t.HasAuth = true
|
|
|
+ } else {
|
|
|
+ if v.AdminId == sysUser.AdminId {
|
|
|
+ t.HasAuth = true
|
|
|
+ }
|
|
|
+ if t.HasAuth == false && v.CollaborateUsers != "" {
|
|
|
+ authorArr := strings.Split(v.CollaborateUsers, ",")
|
|
|
+ strId := strconv.Itoa(sysUser.AdminId)
|
|
|
+ if utils.InArrayByStr(authorArr, strId) {
|
|
|
+ t.HasAuth = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if classifyPpt[v.ClassifyId] == nil {
|
|
|
+ classifyPpt[v.ClassifyId] = make([]*models.PptReportItem, 0)
|
|
|
+ }
|
|
|
+ classifyPpt[v.ClassifyId] = append(classifyPpt[v.ClassifyId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := make([]*models.PptReportClassifyItem, 0)
|
|
|
+
|
|
|
+ // 获取分类
|
|
|
+ classifies := make([]*models.Classify, 0)
|
|
|
+ {
|
|
|
+ // 获取所有分类
|
|
|
+ ob := new(models.Classify)
|
|
|
+ cond := ` AND enabled = ?`
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, 1, utils.ReportTypePPT)
|
|
|
+ list, e := ob.GetItemsByCondition(cond, pars, []string{}, "sort ASC, create_time ASC")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取分类失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上级中的分类类型可能与最下层的不一致,但是要把上级也一起取出来, 所以这里要过滤一遍
|
|
|
+ classifyIds := make([]int, 0)
|
|
|
+ for _, v := range list {
|
|
|
+ if v.ClassifyType != utils.ReportTypePPT {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 没有PPT的分类也都过滤掉
|
|
|
+ //if len(classifyPpt[v.Id]) == 0 {
|
|
|
+ // continue
|
|
|
+ //}
|
|
|
+
|
|
|
+ // 根据LevelPath去处理
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 过滤掉不在ID中的
|
|
|
+ for _, v := range list {
|
|
|
+ if !utils.InArrayByInt(classifyIds, v.Id) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ classifies = append(classifies, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp = services.GetPptReportClassifyTreeRecursive(classifies, 0, classifyPpt)
|
|
|
+
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+}
|
|
|
+
|
|
|
+// ReportList
|
|
|
+// @Title 获取ppt报告列表-分页
|
|
|
+// @Description 获取ppt报告列表-分页
|
|
|
+// @Param Source query int false "来源:1-我的;2-协作;3-公共"
|
|
|
+// @Param ClassifyId query int false "分类ID"
|
|
|
+// @Param Keyword query string false "搜索关键词"
|
|
|
+// @Success 200 {object} models.PptPageReportResp
|
|
|
+// @router /report/list [get]
|
|
|
+func (this *PptV2Controller) ReportList() {
|
|
|
+ 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"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+ source, _ := this.GetInt("Source", 1)
|
|
|
+ if source < 1 || source > 3 {
|
|
|
+ source = 1
|
|
|
+ }
|
|
|
+ classifyId, _ := this.GetInt("ClassifyId", 0)
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+ resp := new(models.PptPageReportResp)
|
|
|
+ resp.List = make([]*models.PptReportItem, 0)
|
|
|
+
|
|
|
+ // 获取PPT, source:1-我的;2-协作;3-公共
|
|
|
+ pptList := make([]*models.PptV2, 0)
|
|
|
+ cond := ``
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ {
|
|
|
+ switch source {
|
|
|
+ case 1:
|
|
|
+ cond += ` AND admin_id = ?`
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ case 2:
|
|
|
+ cond += ` AND collaborate_type = ? AND (admin_id = ? OR FIND_IN_SET(?, collaborate_users)) `
|
|
|
+ pars = append(pars, utils.ReportWriteTypeGroup, sysUser.AdminId, sysUser.AdminId)
|
|
|
+ case 3:
|
|
|
+ cond += ` AND report_source = ? AND state = ?`
|
|
|
+ pars = append(pars, utils.ReportSourceOuter, models.ReportStatePass)
|
|
|
+ }
|
|
|
+ if classifyId > 0 {
|
|
|
+ // 查询分类及子集
|
|
|
+ classifyOb := new(models.Classify)
|
|
|
+ childCond := ` AND FIND_IN_SET(?, level_path)`
|
|
|
+ childPars := make([]interface{}, 0)
|
|
|
+ childPars = append(childPars, classifyId)
|
|
|
+ children, e := classifyOb.GetItemsByCondition(childCond, childPars, []string{"id"}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取分类及子分类失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var childIds []int
|
|
|
+ for _, v := range children {
|
|
|
+ childIds = append(childIds, v.Id)
|
|
|
+ }
|
|
|
+ if len(childIds) == 0 {
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, 0)
|
|
|
+ resp.Paging = page
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ cond += ` AND classify_id IN (?)`
|
|
|
+ pars = append(pars, childIds)
|
|
|
+ }
|
|
|
+ keyword = strings.TrimSpace(keyword)
|
|
|
+ if keyword != "" {
|
|
|
+ cond += ` AND title LIKE ?`
|
|
|
+ pars = append(pars, fmt.Sprint("%", keyword, "%"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pptOb := new(models.PptV2)
|
|
|
+ total, e := pptOb.GetCountByCondition(cond, pars)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT总数失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list, e := pptOb.GetPageItemsByCondition(cond, pars, models.PptReportQueryFields, "modify_time DESC", startSize, pageSize)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ pptList = list
|
|
|
+
|
|
|
+ for _, v := range pptList {
|
|
|
+ // 当前编辑人
|
|
|
+ t := v.Format2ReportItem(v)
|
|
|
+ editor, e := services.UpdatePptEditing(v.PptId, 0, sysUser.AdminId, sysUser.RealName, false)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT编辑状态失败, err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ t.Editor = editor
|
|
|
+
|
|
|
+ // 权限
|
|
|
+ if source == 1 || source == 2 {
|
|
|
+ t.HasAuth = true
|
|
|
+ } else {
|
|
|
+ if v.AdminId == sysUser.AdminId {
|
|
|
+ t.HasAuth = true
|
|
|
+ }
|
|
|
+ if t.HasAuth == false && v.CollaborateUsers != "" {
|
|
|
+ authorArr := strings.Split(v.CollaborateUsers, ",")
|
|
|
+ strId := strconv.Itoa(sysUser.AdminId)
|
|
|
+ if utils.InArrayByStr(authorArr, strId) {
|
|
|
+ t.HasAuth = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resp.List = append(resp.List, t)
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp.Paging = page
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+}
|
|
|
+
|
|
|
+// CreateReport
|
|
|
+// @Title 新增ppt报告
|
|
|
+// @Description 新增ppt报告
|
|
|
+// @Param request body models.PptReportCreateReq true "type json string"
|
|
|
+// @Success 200 Ret=200 新增成功
|
|
|
+// @router /report/add [post]
|
|
|
+func (this *PptV2Controller) CreateReport() {
|
|
|
+ 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"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req models.PptReportCreateReq
|
|
|
+ if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
|
|
|
+ br.Msg = "参数解析异常"
|
|
|
+ br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req.Title = strings.TrimSpace(req.Title)
|
|
|
+ if req.Title == "" {
|
|
|
+ br.Msg = "请输入标题"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.AddType != 1 && req.AddType != 2 {
|
|
|
+ req.AddType = 1
|
|
|
+ }
|
|
|
+ if req.ClassifyId <= 0 {
|
|
|
+ br.Msg = "请选择分类"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.CollaborateType != 1 && req.CollaborateType != 2 {
|
|
|
+ br.Msg = "协作方式异常"
|
|
|
+ br.ErrMsg = fmt.Sprintf("协作方式异常, %d", req.CollaborateType)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.CollaborateType == 2 && len(req.CollaborateUserIds) == 0 {
|
|
|
+ br.Msg = "请选择协作人"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新报告
|
|
|
+ newItem := new(models.PptV2)
|
|
|
+ newItem.Title = req.Title
|
|
|
+ newItem.AddType = req.AddType
|
|
|
+ newItem.ClassifyId = req.ClassifyId
|
|
|
+ newItem.CollaborateType = req.CollaborateType
|
|
|
+ if len(req.CollaborateUserIds) > 0 {
|
|
|
+ var partnerArr []string
|
|
|
+ for _, v := range req.CollaborateUserIds {
|
|
|
+ partnerArr = append(partnerArr, strconv.Itoa(v))
|
|
|
+ }
|
|
|
+ newItem.CollaborateUsers = strings.Trim(strings.Join(partnerArr, ","), `"`)
|
|
|
+ }
|
|
|
+ newItem.PptVersion = 2
|
|
|
+ newItem.AdminId = sysUser.AdminId
|
|
|
+ newItem.AdminRealName = sysUser.RealName
|
|
|
+ newItem.ReportSource = utils.ReportSourceLocal // 固定本地PPT
|
|
|
+ newItem.State = models.ReportStateUnpublished // 默认未发布
|
|
|
+ newItem.CreateTime = time.Now()
|
|
|
+ newItem.ModifyTime = time.Now()
|
|
|
+
|
|
|
+ // 继承PPT内容
|
|
|
+ if req.AddType == utils.ReportAddTypeInherit && req.InheritPptId > 0 {
|
|
|
+ inheritPpt, e := models.GetPptV2ById(req.InheritPptId)
|
|
|
+ if e != nil {
|
|
|
+ if utils.IsErrNoRow(e) {
|
|
|
+ br.Msg = "被继承报告不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("操作失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newItem.TemplateType = inheritPpt.TemplateType
|
|
|
+ newItem.BackgroundImg = inheritPpt.BackgroundImg
|
|
|
+ newItem.CurrentBackgroundImg = inheritPpt.CurrentBackgroundImg
|
|
|
+ newItem.BackCoverImg = inheritPpt.BackCoverImg
|
|
|
+ newItem.ReportType = inheritPpt.ReportType
|
|
|
+ newItem.PptDate = inheritPpt.PptDate
|
|
|
+ newItem.Content = inheritPpt.Content
|
|
|
+ newItem.CoverContent = inheritPpt.CoverContent
|
|
|
+ newItem.TitleSetting = inheritPpt.TitleSetting
|
|
|
+ }
|
|
|
+
|
|
|
+ // 非继承PPT,有内容时写入内容(如合并PPT时)
|
|
|
+ if req.InheritPptId <= 0 {
|
|
|
+ newItem.TemplateType = req.FirstPage.TemplateType
|
|
|
+ newItem.BackgroundImg = req.FirstPage.ImgUrl
|
|
|
+ newItem.CurrentBackgroundImg = req.FirstPage.CurrentBackgroundImg
|
|
|
+ newItem.BackCoverImg = req.FirstPage.BackCoverImg
|
|
|
+ newItem.ReportType = req.FirstPage.ReportType
|
|
|
+ newItem.PptDate = req.FirstPage.PptDate
|
|
|
+ newItem.Content = req.Content
|
|
|
+ newItem.CoverContent = req.CoverContent
|
|
|
+ newItem.TitleSetting = req.TitleSetting
|
|
|
+ }
|
|
|
+
|
|
|
+ // 初始的PPT页数
|
|
|
+ if newItem.Content != "" {
|
|
|
+ var pageContents []services.PPTContent
|
|
|
+ _ = json.Unmarshal([]byte(newItem.Content), &pageContents) // 这里转不过去问题也不大,编辑时自动保存会更新页数字段
|
|
|
+ newItem.PptPage = len(pageContents)
|
|
|
+ }
|
|
|
+
|
|
|
+ newId, e := models.AddPptV2(newItem)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("新增PPT报告失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新报告分类计数
|
|
|
+ go func() {
|
|
|
+ _ = services.UpdateClassifyReportNum(req.ClassifyId)
|
|
|
+ }()
|
|
|
+
|
|
|
+ resp := models.AddPptResp{
|
|
|
+ PptId: newId,
|
|
|
+ }
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|
|
|
+
|
|
|
+// AuthList
|
|
|
+// @Title 获取有权限的列表
|
|
|
+// @Description 获取有权限的列表
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Param Keyword query string false "搜索关键词"
|
|
|
+// @Param ClassifyId query int false "分类ID"
|
|
|
+// @Success 200 {object} models.PptPageReportResp
|
|
|
+// @router /report/auth_list [get]
|
|
|
+func (this *PptV2Controller) AuthList() {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+ keyword := this.GetString("Keyword")
|
|
|
+ classifyId, _ := this.GetInt("ClassifyId", 0)
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ var pptList []*models.PptReportItem
|
|
|
+ // 无相关搜索时,返回空集(其实我感觉没必要,没关键词查全部也属于正常=_=!)
|
|
|
+ if keyword == `` && classifyId <= 0 {
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, 0)
|
|
|
+ resp := new(models.PptPageReportResp)
|
|
|
+ resp.Paging = page
|
|
|
+ resp.List = pptList
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询自己创建的以及协作人包含自己的报告
|
|
|
+ var cond string
|
|
|
+ var pars []interface{}
|
|
|
+ cond += ` AND (admin_id = ? OR (admin_id <> ? AND FIND_IN_SET(?, collaborate_users)))`
|
|
|
+ pars = append(pars, sysUser.AdminId, sysUser.AdminId, sysUser.AdminId)
|
|
|
+ if classifyId > 0 {
|
|
|
+ cond += ` AND classify_id = ? `
|
|
|
+ pars = append(pars, classifyId)
|
|
|
+ }
|
|
|
+ keyword = strings.TrimSpace(keyword)
|
|
|
+ if keyword != `` {
|
|
|
+ cond += ` AND title LIKE ? `
|
|
|
+ pars = utils.GetLikeKeywordPars(pars, keyword, 1)
|
|
|
+ }
|
|
|
+ pptOb := new(models.PptV2)
|
|
|
+ total, e := pptOb.GetCountByCondition(cond, pars)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT总数失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list, e := pptOb.GetPageItemsByCondition(cond, pars, models.PptReportQueryFields, "", startSize, pageSize)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取PPT失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分类完整路径、协作人姓名
|
|
|
+ classifyIdFull := make(map[int]string)
|
|
|
+ {
|
|
|
+ ob := new(models.Classify)
|
|
|
+ classifies, e := ob.GetItemsByCondition("", make([]interface{}, 0), []string{}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取分类失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyIdName := make(map[string]string)
|
|
|
+ for _, v := range classifies {
|
|
|
+ classifyIdName[strconv.Itoa(v.Id)] = v.ClassifyName
|
|
|
+ }
|
|
|
+ for _, v := range classifies {
|
|
|
+ arr := strings.Split(v.LevelPath, ",")
|
|
|
+ if len(arr) == 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ var nameArr []string
|
|
|
+ for _, a := range arr {
|
|
|
+ n := classifyIdName[a]
|
|
|
+ if n == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ nameArr = append(nameArr, n)
|
|
|
+ }
|
|
|
+ classifyIdFull[v.Id] = strings.Join(nameArr, "/")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ adminIdName := make(map[int]string)
|
|
|
+ {
|
|
|
+ cond := ` AND enabled = 1`
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ sysAdmin, e := system.GetSysAdminList(cond, pars, []string{}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取用户失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range sysAdmin {
|
|
|
+ adminIdName[v.AdminId] = v.RealName
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 格式化数据
|
|
|
+ for _, v := range list {
|
|
|
+ t := v.Format2ReportItem(v)
|
|
|
+ t.HasAuth = true // 该列表固定有权限
|
|
|
+ t.FullClassify = classifyIdFull[v.ClassifyId] // 分类的完整路径
|
|
|
+
|
|
|
+ // 协作人
|
|
|
+ if v.CollaborateUsers != "" {
|
|
|
+ var authors []models.PptReportCollaborateUser
|
|
|
+ authorArr := strings.Split(v.CollaborateUsers, ",")
|
|
|
+ for _, au := range authorArr {
|
|
|
+ uid, _ := strconv.Atoi(au)
|
|
|
+ if uid <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ name := adminIdName[uid]
|
|
|
+ if name == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ authors = append(authors, models.PptReportCollaborateUser{
|
|
|
+ AdminId: uid,
|
|
|
+ RealName: name,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ t.CollaborateUsers = authors
|
|
|
+ }
|
|
|
+ pptList = append(pptList, t)
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp := new(models.PptPageReportResp)
|
|
|
+ resp.Paging = page
|
|
|
+ resp.List = pptList
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|