Browse Source

ppt版本管理

xyxie 3 months ago
parent
commit
d7f96d15f0

+ 21 - 1
controllers/ppt_v2.go

@@ -322,7 +322,27 @@ func (this *PptV2Controller) EditPpt() {
 	//		return
 	//	}
 	//}
-
+	// 版本记录
+	historyInfo := &models.PptV2History{
+		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(),
+		TitleSetting:  pptInfo.TitleSetting,
+	}
+	err = historyInfo.Add()
+	if err != nil {
+		br.Msg = "保存失败"
+		br.ErrMsg = "保存PPT版本失败, Err: " + err.Error()
+		return
+	}
 	// 日志记录
 	{
 		logInfo := &models.PptV2SaveLog{

+ 299 - 0
controllers/ppt_v2_history.go

@@ -0,0 +1,299 @@
+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
+
+	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 = "操作成功"
+}

+ 89 - 0
models/ppt_v2_history.go

@@ -0,0 +1,89 @@
+package models
+
+import (
+	"eta_gn/eta_api/global"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+type PptV2History struct {
+	Id            int       `gorm:"primaryKey"`
+	PptId         int       `description:"ppt ID"`
+	TemplateType  int       `description:"模板类型"`
+	BackgroundImg string    `description:"背景图"`
+	Title         string    `description:"标题"`
+	ReportType    string    `description:"报告类型"`
+	PptDate       string    `description:"选择日期"`
+	Content       string    `description:"内容"`
+	AdminId       int       `description:"操作人ID"`
+	AdminRealName string    `description:"操作人真实姓名"`
+	CreateTime    time.Time `description:"创建时间"`
+	CoverContent  string    `description:"封面内容"`
+	TitleSetting  string    `description:"标题设置"`
+}
+
+// 获取表名
+func (p *PptV2History) TableName() string {
+	return "ppt_v2_history"
+}
+
+func (p *PptV2History) Add() (err error) {
+	err = global.DmSQL["rddp"].Create(p).Error
+	return
+}
+
+func (p *PptV2History) GetNoContentPageList(condition string, pars []interface{}, startSize, pageSize int) (list []*PptV2History, err error) {
+	sql := fmt.Sprintf(`SELECT id, ppt_id, template_type, background_img, title, report_type, ppt_date, create_time, admin_id, admin_real_name  FROM %s WHERE 1=1 `, p.TableName())
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY create_time DESC, id DESC LIMIT ?, ?`
+	pars = append(pars, startSize, pageSize)
+	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&list).Error
+	return
+}
+
+func (p *PptV2History) GetPageListCount(condition string, pars []interface{}) (count int, err error) {
+	sql := fmt.Sprintf(`SELECT COUNT(1) AS count  FROM %s WHERE 1=1 `, p.TableName())
+	if condition != "" {
+		sql += condition
+	}
+	err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
+	return
+}
+
+// 删除接口
+func (p *PptV2History) Delete() (err error) {
+	err = global.DmSQL["rddp"].Delete(p).Error
+	return
+}
+
+// 查询单条记录
+func (p *PptV2History) GetById(id int) (item *PptV2History, err error) {
+	err = global.DmSQL["rddp"].Where("id = ?", id).First(&item).Error
+	return
+}
+
+// PptV2HistoryListItem 定义PPT历史记录列表项的结构体
+type PptV2HistoryListItem struct {
+	Id            int    `description:"PPT历史记录id"`
+	PptId         int    `description:"ppt ID"`
+	TemplateType  int    `description:"模板类型"`
+	BackgroundImg string `description:"背景图"`
+	Title         string `description:"标题"`
+	ReportType    string `description:"报告类型"`
+	PptDate       string `description:"选择日期"`
+	AdminId       int    `description:"操作人ID"`
+	AdminRealName string `description:"操作人真实姓名"`
+	CreateTime    string `description:"创建时间"`
+}
+
+type PptV2HistoryListResp struct {
+	List   []*PptV2HistoryListItem
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+type DeletePptV2HistoryReq struct {
+	Id int `description:"PPT历史记录id"`
+}

+ 3 - 3
models/report_history.go

@@ -24,7 +24,7 @@ type ReportHistory struct {
 	EndResourceId   int       `description:"版尾资源ID"`
 }
 
-func (r *ReportHistory) GetTableName() string {
+func (r *ReportHistory) TableName() string {
 	return "report_history"
 }
 
@@ -34,7 +34,7 @@ func (r *ReportHistory) Add() (err error) {
 }
 
 func (r *ReportHistory) GetNoContentPageList(condition string, pars []interface{}, startSize, pageSize int) (list []*ReportHistory, err error) {
-	sql := fmt.Sprintf(`SELECT id, report_id, report_chapter_id, title, create_time, admin_id, admin_name  FROM %s WHERE 1=1 `, r.GetTableName())
+	sql := fmt.Sprintf(`SELECT id, report_id, report_chapter_id, title, create_time, admin_id, admin_name  FROM %s WHERE 1=1 `, r.TableName())
 	if condition != "" {
 		sql += condition
 	}
@@ -45,7 +45,7 @@ func (r *ReportHistory) GetNoContentPageList(condition string, pars []interface{
 }
 
 func (r *ReportHistory) GetPageListCount(condition string, pars []interface{}) (count int, err error) {
-	sql := fmt.Sprintf(`SELECT COUNT(1) AS count  FROM %s WHERE 1=1 `, r.GetTableName())
+	sql := fmt.Sprintf(`SELECT COUNT(1) AS count  FROM %s WHERE 1=1 `, r.TableName())
 	if condition != "" {
 		sql += condition
 	}

+ 36 - 0
routers/commentsRouter.go

@@ -6874,6 +6874,42 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/del`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:PptV2HistoryController"],
+        beego.ControllerComments{
+            Method: "Revert",
+            Router: `/revert`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers:ReportAuthorController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers:ReportAuthorController"],
         beego.ControllerComments{
             Method: "Author",

+ 5 - 0
routers/router.go

@@ -349,6 +349,11 @@ func init() {
 				&controllers.ReportHistoryController{},
 			),
 		),
+		web.NSNamespace("/ppt_history",
+			web.NSInclude(
+				&controllers.PptV2HistoryController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }