From ccd4018f872086b8370b35c18514a051cabc0093 Mon Sep 17 00:00:00 2001 From: SysProChan Date: Tue, 15 Apr 2025 07:30:25 +0800 Subject: [PATCH] add:monitor_config --- server/plugin/monitor/api/enter.go | 10 +- server/plugin/monitor/api/monitor_config.go | 186 +++++++ server/plugin/monitor/gen/gen.go | 17 +- server/plugin/monitor/initialize/gorm.go | 3 +- server/plugin/monitor/initialize/router.go | 2 + server/plugin/monitor/model/monitor_config.go | 31 ++ .../monitor/model/request/monitor_config.go | 11 + server/plugin/monitor/router/enter.go | 10 +- .../plugin/monitor/router/monitor_config.go | 30 ++ server/plugin/monitor/service/enter.go | 4 +- .../plugin/monitor/service/monitor_config.go | 74 +++ web/src/plugin/monitor/api/monitorConfig.js | 109 ++++ web/src/plugin/monitor/form/monitorConfig.vue | 151 ++++++ web/src/plugin/monitor/view/monitorConfig.vue | 489 ++++++++++++++++++ 14 files changed, 1108 insertions(+), 19 deletions(-) create mode 100644 server/plugin/monitor/api/monitor_config.go create mode 100644 server/plugin/monitor/model/monitor_config.go create mode 100644 server/plugin/monitor/model/request/monitor_config.go create mode 100644 server/plugin/monitor/router/monitor_config.go create mode 100644 server/plugin/monitor/service/monitor_config.go create mode 100644 web/src/plugin/monitor/api/monitorConfig.js create mode 100644 web/src/plugin/monitor/form/monitorConfig.vue create mode 100644 web/src/plugin/monitor/view/monitorConfig.vue diff --git a/server/plugin/monitor/api/enter.go b/server/plugin/monitor/api/enter.go index 989fb350..aaa55e7b 100644 --- a/server/plugin/monitor/api/enter.go +++ b/server/plugin/monitor/api/enter.go @@ -1,6 +1,10 @@ package api -var Api = new(api) +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/service" -type api struct { -} +var ( + Api = new(api) + serviceMonitorConfig = service.Service.MonitorConfig +) + +type api struct{ MonitorConfig MC } diff --git a/server/plugin/monitor/api/monitor_config.go b/server/plugin/monitor/api/monitor_config.go new file mode 100644 index 00000000..9876e8e8 --- /dev/null +++ b/server/plugin/monitor/api/monitor_config.go @@ -0,0 +1,186 @@ +package api + +import ( + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +var MonitorConfig = new(MC) + +type MC struct {} + +// CreateMonitorConfig 创建监控配置 +// @Tags MonitorConfig +// @Summary 创建监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "创建监控配置" +// @Success 200 {object} response.Response{msg=string} "创建成功" +// @Router /MC/createMonitorConfig [post] +func (a *MC) CreateMonitorConfig(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + var info model.MonitorConfig + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = serviceMonitorConfig.CreateMonitorConfig(ctx,&info) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败:" + err.Error(), c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteMonitorConfig 删除监控配置 +// @Tags MonitorConfig +// @Summary 删除监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "删除监控配置" +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /MC/deleteMonitorConfig [delete] +func (a *MC) DeleteMonitorConfig(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + ID := c.Query("ID") + err := serviceMonitorConfig.DeleteMonitorConfig(ctx,ID) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// DeleteMonitorConfigByIds 批量删除监控配置 +// @Tags MonitorConfig +// @Summary 批量删除监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "批量删除成功" +// @Router /MC/deleteMonitorConfigByIds [delete] +func (a *MC) DeleteMonitorConfigByIds(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + IDs := c.QueryArray("IDs[]") + err := serviceMonitorConfig.DeleteMonitorConfigByIds(ctx,IDs) + if err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// UpdateMonitorConfig 更新监控配置 +// @Tags MonitorConfig +// @Summary 更新监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "更新监控配置" +// @Success 200 {object} response.Response{msg=string} "更新成功" +// @Router /MC/updateMonitorConfig [put] +func (a *MC) UpdateMonitorConfig(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + var info model.MonitorConfig + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = serviceMonitorConfig.UpdateMonitorConfig(ctx,info) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败:" + err.Error(), c) + return + } + response.OkWithMessage("更新成功", c) +} + +// FindMonitorConfig 用id查询监控配置 +// @Tags MonitorConfig +// @Summary 用id查询监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param ID query uint true "用id查询监控配置" +// @Success 200 {object} response.Response{data=model.MonitorConfig,msg=string} "查询成功" +// @Router /MC/findMonitorConfig [get] +func (a *MC) FindMonitorConfig(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + ID := c.Query("ID") + reMC, err := serviceMonitorConfig.GetMonitorConfig(ctx,ID) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:" + err.Error(), c) + return + } + response.OkWithData(reMC, c) +} +// GetMonitorConfigList 分页获取监控配置列表 +// @Tags MonitorConfig +// @Summary 分页获取监控配置列表 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data query request.MonitorConfigSearch true "分页获取监控配置列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" +// @Router /MC/getMonitorConfigList [get] +func (a *MC) GetMonitorConfigList(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + var pageInfo request.MonitorConfigSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := serviceMonitorConfig.GetMonitorConfigInfoList(ctx,pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败:" + err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} +// GetMonitorConfigPublic 不需要鉴权的监控配置接口 +// @Tags MonitorConfig +// @Summary 不需要鉴权的监控配置接口 +// @Accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /MC/getMonitorConfigPublic [get] +func (a *MC) GetMonitorConfigPublic(c *gin.Context) { + // 创建业务用Context + ctx := c.Request.Context() + + // 此接口不需要鉴权 示例为返回了一个固定的消息接口,一般本接口用于C端服务,需要自己实现业务逻辑 + serviceMonitorConfig.GetMonitorConfigPublic(ctx) + response.OkWithDetailed(gin.H{"info": "不需要鉴权的监控配置接口信息"}, "获取成功", c) +} diff --git a/server/plugin/monitor/gen/gen.go b/server/plugin/monitor/gen/gen.go index 9c13452c..d5aa1dd0 100644 --- a/server/plugin/monitor/gen/gen.go +++ b/server/plugin/monitor/gen/gen.go @@ -2,17 +2,16 @@ package main import ( "gorm.io/gen" - "path/filepath" + "path/filepath" //go:generate go mod tidy + //go:generate go mod download + //go:generate go run gen.go + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model" ) -//go:generate go mod tidy -//go:generate go mod download -//go:generate go run gen.go func main() { - g := gen.NewGenerator(gen.Config{ - OutPath: filepath.Join("..", "..", "..", "monitor", "blender", "model", "dao"), - Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, - }) - g.ApplyBasic() + g := gen.NewGenerator(gen.Config{OutPath: filepath.Join("..", "..", "..", "monitor", "blender", "model", "dao"), Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface}) + g.ApplyBasic( + new(model.MonitorConfig), + ) g.Execute() } diff --git a/server/plugin/monitor/initialize/gorm.go b/server/plugin/monitor/initialize/gorm.go index e42ccaac..95116095 100644 --- a/server/plugin/monitor/initialize/gorm.go +++ b/server/plugin/monitor/initialize/gorm.go @@ -4,12 +4,13 @@ import ( "context" "fmt" "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model" "github.com/pkg/errors" "go.uber.org/zap" ) func Gorm(ctx context.Context) { - err := global.GVA_DB.WithContext(ctx).AutoMigrate() + err := global.GVA_DB.WithContext(ctx).AutoMigrate(model.MonitorConfig{}) if err != nil { err = errors.Wrap(err, "注册表失败!") zap.L().Error(fmt.Sprintf("%+v", err)) diff --git a/server/plugin/monitor/initialize/router.go b/server/plugin/monitor/initialize/router.go index f7f8ed0f..f89b742a 100644 --- a/server/plugin/monitor/initialize/router.go +++ b/server/plugin/monitor/initialize/router.go @@ -3,6 +3,7 @@ package initialize import ( "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/router" "github.com/gin-gonic/gin" ) @@ -11,4 +12,5 @@ func Router(engine *gin.Engine) { public.Use() private := engine.Group(global.GVA_CONFIG.System.RouterPrefix).Group("") private.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + router.Router.MonitorConfig.Init(public, private) } diff --git a/server/plugin/monitor/model/monitor_config.go b/server/plugin/monitor/model/monitor_config.go new file mode 100644 index 00000000..6814b400 --- /dev/null +++ b/server/plugin/monitor/model/monitor_config.go @@ -0,0 +1,31 @@ + +package model +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "time" +) + +// MonitorConfig 监控配置 结构体 +type MonitorConfig struct { + global.GVA_MODEL + BusinessDB *string `json:"businessDB" form:"businessDB" gorm:"column:business_db;comment:;" binding:"required"` //业务库名 + Database *string `json:"database" form:"database" gorm:"column:database;comment:;" binding:"required"` //数据库名 + Table *string `json:"table" form:"table" gorm:"column:table;comment:;" binding:"required"` //表名 + Columns *string `json:"columns" form:"columns" gorm:"column:columns;comment:;" binding:"required"` //字段 + IsEnable *bool `json:"isEnable" form:"isEnable" gorm:"column:is_enable;comment:;" binding:"required"` //是否启用 + StartTime *time.Time `json:"startTime" form:"startTime" gorm:"column:start_time;comment:;"` //开始时间 + EndTime *time.Time `json:"endTime" form:"endTime" gorm:"column:end_time;comment:;"` //结束时间 +} + + +// TableName 监控配置 MonitorConfig自定义表名 monitor_config +func (MonitorConfig) TableName() string { + return "monitor_config" +} + + + + + + + diff --git a/server/plugin/monitor/model/request/monitor_config.go b/server/plugin/monitor/model/request/monitor_config.go new file mode 100644 index 00000000..9fdb7381 --- /dev/null +++ b/server/plugin/monitor/model/request/monitor_config.go @@ -0,0 +1,11 @@ + +package request +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "time" +) +type MonitorConfigSearch struct{ + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` + request.PageInfo +} \ No newline at end of file diff --git a/server/plugin/monitor/router/enter.go b/server/plugin/monitor/router/enter.go index 78517b37..a12293f9 100644 --- a/server/plugin/monitor/router/enter.go +++ b/server/plugin/monitor/router/enter.go @@ -1,6 +1,10 @@ package router -var Router = new(router) +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/api" -type router struct { -} +var ( + Router = new(router) + apiMonitorConfig = api.Api.MonitorConfig +) + +type router struct{ MonitorConfig MC } diff --git a/server/plugin/monitor/router/monitor_config.go b/server/plugin/monitor/router/monitor_config.go new file mode 100644 index 00000000..87c45270 --- /dev/null +++ b/server/plugin/monitor/router/monitor_config.go @@ -0,0 +1,30 @@ +package router + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +var MonitorConfig = new(MC) + +type MC struct {} + +// Init 初始化 监控配置 路由信息 +func (r *MC) Init(public *gin.RouterGroup, private *gin.RouterGroup) { + { + group := private.Group("MC").Use(middleware.OperationRecord()) + group.POST("createMonitorConfig", apiMonitorConfig.CreateMonitorConfig) // 新建监控配置 + group.DELETE("deleteMonitorConfig", apiMonitorConfig.DeleteMonitorConfig) // 删除监控配置 + group.DELETE("deleteMonitorConfigByIds", apiMonitorConfig.DeleteMonitorConfigByIds) // 批量删除监控配置 + group.PUT("updateMonitorConfig", apiMonitorConfig.UpdateMonitorConfig) // 更新监控配置 + } + { + group := private.Group("MC") + group.GET("findMonitorConfig", apiMonitorConfig.FindMonitorConfig) // 根据ID获取监控配置 + group.GET("getMonitorConfigList", apiMonitorConfig.GetMonitorConfigList) // 获取监控配置列表 + } + { + group := public.Group("MC") + group.GET("getMonitorConfigPublic", apiMonitorConfig.GetMonitorConfigPublic) // 监控配置开放接口 + } +} diff --git a/server/plugin/monitor/service/enter.go b/server/plugin/monitor/service/enter.go index 034facba..d761d1c3 100644 --- a/server/plugin/monitor/service/enter.go +++ b/server/plugin/monitor/service/enter.go @@ -2,6 +2,4 @@ package service var Service = new(service) -type service struct { -} - +type service struct{ MonitorConfig MC } diff --git a/server/plugin/monitor/service/monitor_config.go b/server/plugin/monitor/service/monitor_config.go new file mode 100644 index 00000000..a7c0d427 --- /dev/null +++ b/server/plugin/monitor/service/monitor_config.go @@ -0,0 +1,74 @@ + +package service + +import ( + "context" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/monitor/model/request" +) + +var MonitorConfig = new(MC) + +type MC struct {} +// CreateMonitorConfig 创建监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) CreateMonitorConfig(ctx context.Context, MC *model.MonitorConfig) (err error) { + err = global.GVA_DB.Create(MC).Error + return err +} + +// DeleteMonitorConfig 删除监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) DeleteMonitorConfig(ctx context.Context, ID string) (err error) { + err = global.GVA_DB.Delete(&model.MonitorConfig{},"id = ?",ID).Error + return err +} + +// DeleteMonitorConfigByIds 批量删除监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) DeleteMonitorConfigByIds(ctx context.Context, IDs []string) (err error) { + err = global.GVA_DB.Delete(&[]model.MonitorConfig{},"id in ?",IDs).Error + return err +} + +// UpdateMonitorConfig 更新监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) UpdateMonitorConfig(ctx context.Context, MC model.MonitorConfig) (err error) { + err = global.GVA_DB.Model(&model.MonitorConfig{}).Where("id = ?",MC.ID).Updates(&MC).Error + return err +} + +// GetMonitorConfig 根据ID获取监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) GetMonitorConfig(ctx context.Context, ID string) (MC model.MonitorConfig, err error) { + err = global.GVA_DB.Where("id = ?", ID).First(&MC).Error + return +} +// GetMonitorConfigInfoList 分页获取监控配置记录 +// Author [yourname](https://github.com/yourname) +func (s *MC) GetMonitorConfigInfoList(ctx context.Context, info request.MonitorConfigSearch) (list []model.MonitorConfig, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&model.MonitorConfig{}) + var MCs []model.MonitorConfig + // 如果有条件搜索 下方会自动创建搜索语句 + if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } + err = db.Count(&total).Error + if err!=nil { + return + } + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + err = db.Find(&MCs).Error + return MCs, total, err +} + +func (s *MC)GetMonitorConfigPublic(ctx context.Context) { + +} diff --git a/web/src/plugin/monitor/api/monitorConfig.js b/web/src/plugin/monitor/api/monitorConfig.js new file mode 100644 index 00000000..e6ac8235 --- /dev/null +++ b/web/src/plugin/monitor/api/monitorConfig.js @@ -0,0 +1,109 @@ +import service from '@/utils/request' +// @Tags MonitorConfig +// @Summary 创建监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "创建监控配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /MC/createMonitorConfig [post] +export const createMonitorConfig = (data) => { + return service({ + url: '/MC/createMonitorConfig', + method: 'post', + data + }) +} + +// @Tags MonitorConfig +// @Summary 删除监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "删除监控配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /MC/deleteMonitorConfig [delete] +export const deleteMonitorConfig = (params) => { + return service({ + url: '/MC/deleteMonitorConfig', + method: 'delete', + params + }) +} + +// @Tags MonitorConfig +// @Summary 批量删除监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除监控配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /MC/deleteMonitorConfig [delete] +export const deleteMonitorConfigByIds = (params) => { + return service({ + url: '/MC/deleteMonitorConfigByIds', + method: 'delete', + params + }) +} + +// @Tags MonitorConfig +// @Summary 更新监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data body model.MonitorConfig true "更新监控配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /MC/updateMonitorConfig [put] +export const updateMonitorConfig = (data) => { + return service({ + url: '/MC/updateMonitorConfig', + method: 'put', + data + }) +} + +// @Tags MonitorConfig +// @Summary 用id查询监控配置 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data query model.MonitorConfig true "用id查询监控配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /MC/findMonitorConfig [get] +export const findMonitorConfig = (params) => { + return service({ + url: '/MC/findMonitorConfig', + method: 'get', + params + }) +} + +// @Tags MonitorConfig +// @Summary 分页获取监控配置列表 +// @Security ApiKeyAuth +// @Accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取监控配置列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /MC/getMonitorConfigList [get] +export const getMonitorConfigList = (params) => { + return service({ + url: '/MC/getMonitorConfigList', + method: 'get', + params + }) +} +// @Tags MonitorConfig +// @Summary 不需要鉴权的监控配置接口 +// @Accept application/json +// @Produce application/json +// @Param data query request.MonitorConfigSearch true "分页获取监控配置列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /MC/getMonitorConfigPublic [get] +export const getMonitorConfigPublic = () => { + return service({ + url: '/MC/getMonitorConfigPublic', + method: 'get', + }) +} diff --git a/web/src/plugin/monitor/form/monitorConfig.vue b/web/src/plugin/monitor/form/monitorConfig.vue new file mode 100644 index 00000000..d35db42b --- /dev/null +++ b/web/src/plugin/monitor/form/monitorConfig.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/web/src/plugin/monitor/view/monitorConfig.vue b/web/src/plugin/monitor/view/monitorConfig.vue new file mode 100644 index 00000000..d198d176 --- /dev/null +++ b/web/src/plugin/monitor/view/monitorConfig.vue @@ -0,0 +1,489 @@ + + + + + +