package controllers import ( "encoding/json" "errors" "eta_gn/eta_api/models" "eta_gn/eta_api/models/bi_dashboard" "eta_gn/eta_api/services/ppt" "eta_gn/eta_api/utils" "time" ) type BIDaShboardController struct { BaseAuthController } // GroupList // @Title 获取可见的目录列表 // @Description 获取可见的目录列表接口 // @Success 200 {object} models.RespGroupList // @router /my_list [get] func (this *BIDaShboardController) MyList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() // 获取我的看板列表 privateCond := ` AND sys_admin_id = ? AND state IN (1,6) ` privatePars := []interface{}{this.SysUser.AdminId} privateList, err := bi_dashboard.GetBiDashboardList(privateCond, privatePars) if err != nil { err = errors.New("我的看板列表查询出错:" + err.Error()) return } br.Ret = 200 br.Success = true br.Msg = "查询成功" br.Data = privateList return } // AddDashboard // @Title 新增ppt // @Description 新增ppt接口 // @Param request body models.AddPptV2Req true "type json string" // @Success 200 Ret=200 新增成功 // @router /add [post] func (this *BIDaShboardController) AddDashboard() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req bi_dashboard.AddDashboardReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.BiDashboardName == "" { br.Msg = "名称不能为空" return } item := &bi_dashboard.BiDashboard{ //BiDashboardClassifyId: req.ClassifyId, BiDashboardName: req.BiDashboardName, SysAdminId: this.SysUser.AdminId, SysAdminName: this.SysUser.AdminName, //Sort: 0, CreateTime: time.Now(), ModifyTime: time.Now(), State: 1, } id, e := bi_dashboard.AddBiDashboard(item) if e != nil { err = e br.Msg = "新增失败" br.ErrMsg = "新增失败,Err:" + e.Error() return } detailList := make([]*bi_dashboard.BiDashboardDetail, 0) for _, v := range req.List { item := &bi_dashboard.BiDashboardDetail{ BiDashboardId: int(id), Type: v.Type, UniqueCode: v.UniqueCode, Sort: v.Sort, CreateTime: time.Now(), ModifyTime: time.Now(), } detailList = append(detailList, item) } err = bi_dashboard.AddBiDashboardDetailMulti(detailList) if err != nil { br.Msg = "新增详情失败" br.ErrMsg = "新增详情失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "新增成功" //br.Data = } // EditPpt // @Title 编辑ppt // @Description 编辑ppt接口 // @Param request body models.AddPptV2Req true "type json string" // @Success 200 Ret=200 编辑成功 // @router /edit [post] func (this *BIDaShboardController) EditPpt() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.AddPptV2Req err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.FirstPage.Title == "" { br.Msg = "标题不能为空" return } item, err := models.GetPptV2ByTitleAndId(req.FirstPage.Title, this.SysUser.AdminId) if err != nil && !utils.IsErrNoRow(err) { br.Msg = "获取数据异常!" br.ErrMsg = "获取数据异常,Err:" + err.Error() return } if item != nil && item.PptId != int(req.PptId) { br.Msg = "标题已存在,不可重复添加" br.IsSendEmail = false return } pptInfo, err := models.GetPptV2ById(int(req.PptId)) if err != nil { br.Msg = "信息获取失败" br.ErrMsg = "信息获取失败,Err:" + err.Error() return } // 判断权限 if pptInfo.AdminId != this.SysUser.AdminId { _, err := models.GetPPtGrantConf(pptInfo.PptId, this.SysUser.AdminId) if err != nil { if utils.IsErrNoRow(err) { br.Msg = `该PPT已取消共享,保存失败` br.ErrMsg = `该PPT已取消共享,保存失败` br.IsSendEmail = false } else { br.Msg = `保存失败` br.ErrMsg = `保存失败,ERR:` + err.Error() } return } } // 修改 pptInfo.TemplateType = req.FirstPage.TemplateType pptInfo.BackgroundImg = req.FirstPage.ImgUrl pptInfo.Title = req.FirstPage.Title pptInfo.ReportType = req.FirstPage.ReportType pptInfo.PptDate = req.FirstPage.PptDate pptInfo.Content = req.Content pptInfo.CoverContent = req.CoverContent pptInfo.ModifyTime = time.Now() pptInfo.TitleSetting = req.TitleSetting err = pptInfo.Update([]string{"TemplateType", "BackgroundImg", "Title", "ReportType", "PptDate", "Content", "ModifyTime", "CoverContent", "TitleSetting"}) if err != nil { br.Msg = "编辑失败" br.ErrMsg = "编辑失败,Err:" + err.Error() return } pptMap, err := models.GetPptMappingByPptId(req.PptId) if err != nil { br.Msg = `该PPT信息不存在, 保存失败` br.ErrMsg = `该PPT信息不存在, 保存失败, Err` + err.Error() br.IsSendEmail = false return } pptMapList, err := models.GetPptMappingListByGroupId(pptMap.GroupId) if err != nil { br.ErrMsg = "PPT目录信息异常" return } count, err := models.GetPptMappingByGroupPptCountId(pptMap.GroupPptId, this.SysUser.AdminId) if err != nil { br.Msg = "查询映射关系失败" br.ErrMsg = "查询映射关系失败, 保存失败, Err:" + err.Error() return } if !pptMap.IsMoved && len(pptMapList) > 1 && count > 0 { // 如果没有人为移动位置, 默认将当前ppt置顶 err = ppt.MoveGroupPpt(pptMap.GroupId, pptMap.GroupPptId, pptMapList[0].GroupPptId, 0, this.SysUser.AdminId) if err != nil { br.Msg = err.Error() br.ErrMsg = "移动失败,Err:" + err.Error() return } } // 日志记录 { logInfo := &models.PptV2SaveLog{ PptId: pptInfo.PptId, TemplateType: pptInfo.TemplateType, BackgroundImg: pptInfo.BackgroundImg, Title: pptInfo.Title, ReportType: pptInfo.ReportType, PptDate: pptInfo.PptDate, Content: pptInfo.Content, CoverContent: pptInfo.CoverContent, AdminId: this.SysUser.AdminId, AdminRealName: this.SysUser.RealName, CreateTime: time.Now(), } _, err = models.AddPptV2SaveLog(logInfo) } resp := models.AddPptResp{ PptId: req.PptId, } br.Ret = 200 br.Success = true br.Msg = "编辑成功" br.IsAddLog = true br.Data = resp } // DeletePpt // @Title 删除ppt // @Description 删除ppt接口 // @Param request body models.DeletePptV2Req true "type json string" // @Success 200 Ret=200 删除成功 // @router /delete [post] func (this *BIDaShboardController) DeletePpt() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.DeletePptV2Req err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.PptId <= 0 { br.Msg = "参数错误" return } pptInfo, err := models.GetPptV2ById(req.PptId) if err != nil { br.Msg = "ppt不存在" return } if pptInfo.AdminId != this.SysUser.AdminId { br.Msg = "无权删除" return } err = models.DeletePptV2(req.PptId) if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } //如果该ppt存在单个共享记录,则删除共享 err = ppt.DeleteGroupPpt(req.PptId) if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.IsAddLog = true br.Msg = "删除成功" } // DetailPpt // @Title 获取ppt详情 // @Description 获取ppt详情接口 // @Param PptId query int true "PptId" // @Success 200 {object} models.PptV2 // @router /detail [get] func (this *BIDaShboardController) DetailPpt() { 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 } dashboardId, _ := this.GetInt("DashboardId") dashboardItem, err := bi_dashboard.GetDashboardById(dashboardId) if err != nil { err = errors.New("我的看板列表查询出错:" + err.Error()) br.Msg = "我的看板列表查询出错" br.ErrMsg = err.Error() return } detailList, err := bi_dashboard.GetBiDashboardDetailById(dashboardId) if err != nil { br.Msg = "详情获取失败" br.ErrMsg = "详情获取失败,Err:" + err.Error() return } resp := new(bi_dashboard.DashboardDetailResp) resp.BiDashboard = dashboardItem resp.List = detailList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }