package controllers import ( "encoding/json" "eta_gn/eta_api/models" "eta_gn/eta_api/utils" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "strings" "time" ) // PptV2HistoryController PPT type PptV2HistoryController struct { BaseAuthController } // List // @Title 获取PPT列表接口 // @Description 获取PPT列表 // @Param PptId query int true "PPTID" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param IsShowMe query bool true "是否只看我的,true、false" // @Success 200 {object} models.ReportListResp // @router /list [get] func (this *PptV2HistoryController) List() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") pptId, _ := this.GetInt("PptId") isShowMe, _ := this.GetBool("IsShowMe") if pptId <= 0 { br.Msg = "请选择PPT" br.ErrMsg = "请选择PPT" return } var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} condition += ` AND ppt_id = ? ` pars = append(pars, pptId) if isShowMe { condition += ` AND admin_id = ? ` pars = append(pars, this.SysUser.AdminId) } var err error var total int var list []*models.PptV2HistoryListItem historyObj := new(models.PptV2History) total, err = historyObj.GetPageListCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } listTmp, err := historyObj.GetNoContentPageList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } for _, item := range listTmp { tmp := &models.PptV2HistoryListItem{ Id: item.Id, PptId: item.PptId, TemplateType: item.TemplateType, BackgroundImg: item.BackgroundImg, Title: item.Title, ReportType: item.ReportType, PptDate: item.PptDate, AdminId: item.AdminId, AdminRealName: item.AdminRealName, CreateTime: item.CreateTime.Format(utils.FormatDateTime), } list = append(list, tmp) } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(models.PptV2HistoryListResp) resp.Paging = page resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // Delete // @Title 删除版本 // @Description 删除版本 // @Param Id query int true "版本ID" // @Success 200 {object} models.ReportListResp // @router /del [post] func (this *PptV2HistoryController) Delete() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.DeleteReportHistoryReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Id <= 0 { br.Msg = "请选择PPT版本" return } historyObj := new(models.PptV2History) item, err := historyObj.GetById(req.Id) if err != nil { br.Msg = "该版本已删除" return } err = item.Delete() if err != nil { br.Msg = "删除失败" br.ErrMsg = "删除失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "操作成功" } // Detail // @Title 获取PPT历史版本详情接口 // @Description 获取PPT详情 // @Param request body models.ReportDetailReq true "type json string" // @Success 200 {object} models.Report // @router /detail [get] func (this *PptV2HistoryController) Detail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() id, _ := this.GetInt("Id") if id <= 0 { br.Msg = "请选择PPT版本" return } historyObj := new(models.PptV2History) history, err := historyObj.GetById(id) if err != nil { br.Msg = "该版本已删除" return } pptId := history.PptId pptInfo, err := models.GetPptV2ById(pptId) if err != nil { br.Msg = "信息获取失败" br.ErrMsg = "信息获取失败,Err:" + err.Error() return } pptInfo.TemplateType = history.TemplateType pptInfo.BackgroundImg = history.BackgroundImg pptInfo.Title = history.Title pptInfo.ReportType = history.ReportType pptInfo.PptDate = history.PptDate pptInfo.Content = history.Content pptInfo.CoverContent = history.CoverContent pptInfo.TitleSetting = history.TitleSetting pptInfo.AdminId = history.AdminId pptInfo.AdminRealName = history.AdminRealName pptInfo.ModifyTime = history.CreateTime resp := new(models.PPTDetailResp) resp.PptV2 = pptInfo br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // Revert // @Title 恢复PPT内容 // @Description 恢复PPT内容 // @Param Id query int true "版本ID" // @Success 200 {object} models.ReportListResp // @router /revert [post] func (this *PptV2HistoryController) Revert() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.DeleteReportHistoryReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Id <= 0 { br.Msg = "请选择PPT版本" return } historyObj := new(models.PptV2History) history, err := historyObj.GetById(req.Id) if err != nil { br.Msg = "该版本已删除" return } // 获取PPT详情 pptInfo, err := models.GetPptV2ById(history.PptId) if err != nil { br.Msg = "信息获取失败" br.ErrMsg = "信息获取失败,Err:" + err.Error() return } // 协作人权限 if pptInfo.AdminId != this.SysUser.AdminId { if pptInfo.CollaborateType != utils.ReportWriteTypeGroup { br.Msg = "非协作人无权操作" return } if pptInfo.CollaborateUsers == "" { br.Msg = "非协作人无权操作" return } partnerArr := strings.Split(pptInfo.CollaborateUsers, ",") if !utils.InArrayByStr(partnerArr, fmt.Sprint(this.SysUser.AdminId)) { br.Msg = "非协作人无权操作" return } } // 修改 pptInfo.TemplateType = history.TemplateType pptInfo.BackgroundImg = history.BackgroundImg pptInfo.Title = history.Title pptInfo.ReportType = history.ReportType pptInfo.PptDate = history.PptDate pptInfo.Content = history.Content pptInfo.CoverContent = history.CoverContent pptInfo.ModifyTime = time.Now() pptInfo.TitleSetting = history.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 } // 记录修改日志 { 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) } br.Ret = 200 br.Success = true br.Msg = "操作成功" }