bi/controller/panel_controller.go

343 lines
8.4 KiB
Go
Raw Normal View History

2022-01-26 16:40:50 +08:00
package controller
import (
"errors"
"github.com/1340691923/xwl_bi/model"
"github.com/1340691923/xwl_bi/platform-basic-libs/jwt"
"github.com/1340691923/xwl_bi/platform-basic-libs/request"
"github.com/1340691923/xwl_bi/platform-basic-libs/response"
"github.com/1340691923/xwl_bi/platform-basic-libs/service/pannel"
"github.com/gofiber/fiber/v2"
"strings"
)
type PanelController struct {
BaseController
}
//查看自己的已存报表
func (this PanelController) ReportTableList(ctx *fiber.Ctx) error {
var req model.ReportTable
if err := ctx.BodyParser(&req); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
2022-03-16 16:04:29 +08:00
list, err := pannelService.ReportTableList(req.Appid, req.RtType, c.UserID)
2022-01-26 16:40:50 +08:00
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.SearchSuccess, list)
}
//删除自己的已存报表
func (this PanelController) DeleteReportTableByID(ctx *fiber.Ctx) error {
var reportTable model.ReportTable
if err := ctx.BodyParser(&reportTable); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
err := pannelService.DeleteReportTableByID(reportTable, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//新增/修改自己的已存报表
func (this PanelController) AddReportTable(ctx *fiber.Ctx) error {
var reportTable model.ReportTable
if err := ctx.BodyParser(&reportTable); err != nil {
return this.Error(ctx, err)
}
if reportTable.Name == "" {
return this.Error(ctx, errors.New("报表名不能为空"))
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
reportTable.UserId = int(c.UserID)
if reportTable.Remark == "" {
reportTable.Remark = reportTable.Name
}
if err := reportTable.InsertOrUpdate(); err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//检测报表名称是否重名
func (this PanelController) FindNameCount(ctx *fiber.Ctx) error {
var req request.FindNameCount
if err := ctx.BodyParser(&req); err != nil {
return this.Error(ctx, err)
}
if req.Name == "" {
return this.Error(ctx, errors.New("报表名不能为空"))
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
count, err := pannelService.FindNameCount(req, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, count)
}
//通过ID查看报表信息
func (this PanelController) FindRtById(ctx *fiber.Ctx) error {
var req request.FindRtById
if err := ctx.BodyParser(&req); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
res, err := pannelService.FindRtById(req.Id, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, res)
}
//查看面板信息
func (this PanelController) GetPannelList(ctx *fiber.Ctx) error {
var req request.GetPannelList
if err := ctx.BodyParser(&req); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
res, err := pannelService.GetPannelList(c.UserID, req.Appid)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.SearchSuccess, res)
}
//新建文件夹
func (this PanelController) NewDir(ctx *fiber.Ctx) error {
var reqData request.NewDir
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
reqData.CreateBy = int(c.UserID)
pannelService := pannel.PannelService{}
err := pannelService.AddDir(reqData)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//新建面板
func (this PanelController) NewPannel(ctx *fiber.Ctx) error {
var reqData request.NewPannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
if reqData.PannelName == "" {
return this.Error(ctx, errors.New("面板名称不能为空"))
}
if reqData.FolderId == 0 {
return this.Error(ctx, errors.New("文件夹不能为空"))
}
pannelService := pannel.PannelService{}
err := pannelService.AddPannel(reqData, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//修改面板名称
func (this PanelController) Rename(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
if reqData.PannelName == "" {
return this.Error(ctx, errors.New("面板名称不能为空"))
}
pannelService := pannel.PannelService{}
err := pannelService.Rename(reqData.PannelName, reqData.Id, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//迁移面板到指定文件夹
func (this PanelController) MovePannel2Dir(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
err := pannelService.MovePannel2Dir(reqData.Id, reqData.FolderId, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//删除面板
func (this PanelController) DeletePannel(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
err := pannelService.DeletePannel(reqData.Id, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//删除文件夹
func (this PanelController) DeleteDir(ctx *fiber.Ctx) error {
var reqData model.PannelFolder
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
reqData.CreateBy = int(c.UserID)
pannelService := pannel.PannelService{}
err := pannelService.DeleteDir(reqData)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//复制面板
func (this PanelController) CopyPannel(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
reportTablesArr := strings.Split(reqData.ReportTables, ",")
if len(reportTablesArr) == 0 {
return this.Error(ctx, errors.New("该面板的报表数量为0"))
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
reqData.CreateBy = int(c.UserID)
pannelService := pannel.PannelService{}
err := pannelService.CopyPannel(reqData, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//修改面板的报表排序
func (this PanelController) UpdatePannelRt(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
reqData.CreateBy = int(c.UserID)
pannelService := pannel.PannelService{}
err := pannelService.UpdatePannelRt(reqData.ReportTables, reqData.Id, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.ChangeLayoutSuccess, nil)
}
//分享面板给其他成员
func (this PanelController) UpdatePannelManager(ctx *fiber.Ctx) error {
var reqData model.Pannel
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
c, _ := jwt.ParseToken(this.GetToken(ctx))
pannelService := pannel.PannelService{}
err := pannelService.UpdatePannelManager(reqData.Managers, reqData.Id, c.UserID)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.OperateSuccess, nil)
}
//获取面板的报表相关属性
func (this PanelController) RtListByAppid(ctx *fiber.Ctx) error {
var reqData model.ReportTable
if err := ctx.BodyParser(&reqData); err != nil {
return this.Error(ctx, err)
}
pannelService := pannel.PannelService{}
res, err := pannelService.RtListByAppid(reqData.Appid)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.SearchSuccess, res)
}