mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
perf👌 : 配置文件功能代码优化
This commit is contained in:
@@ -2,7 +2,9 @@ package sys_config
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
|
||||
"go-admin/app/admin/models/system"
|
||||
"go-admin/app/admin/service"
|
||||
"go-admin/app/admin/service/dto"
|
||||
"go-admin/common/apis"
|
||||
@@ -15,6 +17,202 @@ type SysConfig struct {
|
||||
apis.Api
|
||||
}
|
||||
|
||||
func (e *SysConfig) GetSysConfigList(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
d := new(dto.SysConfigSearch)
|
||||
db, err := tools.GetOrm(c)
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
//查询列表
|
||||
err = d.Bind(c)
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] 参数验证失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "参数验证失败")
|
||||
return
|
||||
}
|
||||
|
||||
list := make([]system.SysConfig, 0)
|
||||
var count int64
|
||||
serviceStudent := service.SysConfig{}
|
||||
serviceStudent.MsgID = msgID
|
||||
serviceStudent.Orm = db
|
||||
err = serviceStudent.GetSysConfigPage(d, &list, &count)
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] GetSysConfigPage 查询失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "查询失败")
|
||||
return
|
||||
}
|
||||
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
|
||||
}
|
||||
|
||||
func (e *SysConfig) GetSysConfig(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
control := new(dto.SysConfigById)
|
||||
db, err := tools.GetOrm(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
//查看详情
|
||||
err = control.Bind(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
var object system.SysConfig
|
||||
|
||||
serviceSysLoginLog := service.SysConfig{}
|
||||
serviceSysLoginLog.MsgID = msgID
|
||||
serviceSysLoginLog.Orm = db
|
||||
err = serviceSysLoginLog.GetSysConfig(control, &object)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "查询失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
e.OK(c, object, "查看成功")
|
||||
}
|
||||
|
||||
func (e *SysConfig) InsertSysConfig(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
control := new(dto.SysConfigControl)
|
||||
db, err := tools.GetOrm(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
//新增操作
|
||||
err = control.Bind(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
object, err := control.Generate()
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
// 设置创建人
|
||||
object.SetCreateBy(tools.GetUserId(c))
|
||||
|
||||
serviceSysLoginLog := service.SysConfig{}
|
||||
serviceSysLoginLog.Orm = db
|
||||
serviceSysLoginLog.MsgID = msgID
|
||||
err = serviceSysLoginLog.InsertSysConfig(object)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
e.Error(c, http.StatusInternalServerError, err, "创建失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
e.OK(c, object.GetId(), "创建成功")
|
||||
}
|
||||
|
||||
func (e *SysConfig) UpdateSysConfig(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
control := new(dto.SysConfigControl)
|
||||
db, err := tools.GetOrm(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
//更新操作
|
||||
err = control.Bind(c)
|
||||
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
object, err := control.Generate()
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
object.SetUpdateBy(tools.GetUserId(c))
|
||||
|
||||
serviceSysLoginLog := service.SysConfig{}
|
||||
serviceSysLoginLog.Orm = db
|
||||
serviceSysLoginLog.MsgID = msgID
|
||||
err = serviceSysLoginLog.UpdateSysConfig(object)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "更新失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
e.OK(c, object.GetId(), "更新成功")
|
||||
}
|
||||
|
||||
func (e *SysConfig) DeleteSysConfig(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
control := new(dto.SysConfigById)
|
||||
db, err := tools.GetOrm(c)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
//删除操作
|
||||
err = control.Bind(c)
|
||||
if err != nil {
|
||||
log.Errorf("MsgID[%s] Bind error: %s", msgID, err)
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
object, err := control.GenerateM()
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusInternalServerError, err, "模型生成失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
|
||||
// 设置编辑人
|
||||
object.SetUpdateBy(tools.GetUserId(c))
|
||||
|
||||
serviceSysLoginLog := service.SysConfig{}
|
||||
serviceSysLoginLog.Orm = db
|
||||
serviceSysLoginLog.MsgID = msgID
|
||||
err = serviceSysLoginLog.RemoveSysConfig(control, object)
|
||||
if err != nil {
|
||||
e.Error(c, http.StatusUnprocessableEntity, err, "删除失败")
|
||||
log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "Orm获取失败")
|
||||
return
|
||||
}
|
||||
e.OK(c, object.GetId(), "删除成功")
|
||||
}
|
||||
|
||||
// GetSysConfigByKEYForService 根据Key获取SysConfig的Service
|
||||
func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) {
|
||||
msgID := tools.GenerateMsgIDFromContext(c)
|
||||
@@ -25,7 +223,7 @@ func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
var v dto.SysConfigControl
|
||||
err = c.Bind(&v)
|
||||
err = v.Bind(c)
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] 参数验证错误, error:%s", msgID, err)
|
||||
app.Error(c, 422, err, "参数验证失败")
|
||||
@@ -36,6 +234,7 @@ func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) {
|
||||
s.Orm = db
|
||||
err = s.GetSysConfigByKEY(&v)
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] 通过Key获取配置失败, error:%s", msgID, err)
|
||||
app.Error(c, 500, err, "")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -4,9 +4,6 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"go-admin/app/admin/apis/system/sys_config"
|
||||
"go-admin/app/admin/middleware"
|
||||
"go-admin/app/admin/models/system"
|
||||
"go-admin/app/admin/service/dto"
|
||||
"go-admin/common/actions"
|
||||
jwt "go-admin/pkg/jwtauth"
|
||||
)
|
||||
|
||||
@@ -18,20 +15,17 @@ func init() {
|
||||
func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||
r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||
{
|
||||
model := &system.SysConfig{}
|
||||
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysConfigSearch), func() interface{} {
|
||||
list := make([]system.SysConfig, 0)
|
||||
return &list
|
||||
}))
|
||||
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysConfigById), nil))
|
||||
r.POST("", actions.CreateAction(new(dto.SysConfigControl)))
|
||||
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysConfigControl)))
|
||||
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysConfigById)))
|
||||
api := &sys_config.SysConfig{}
|
||||
r.GET("", api.GetSysConfigList)
|
||||
r.GET("/:id", api.GetSysConfig)
|
||||
r.POST("", api.InsertSysConfig)
|
||||
r.PUT("/:id", api.UpdateSysConfig)
|
||||
r.DELETE("/:id", api.DeleteSysConfig)
|
||||
}
|
||||
|
||||
r1 := v1.Group("/configKey").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||
{
|
||||
model := &sys_config.SysConfig{}
|
||||
r1.POST("", model.GetSysConfigByKEYForService)
|
||||
api := &sys_config.SysConfig{}
|
||||
r1.POST("", api.GetSysConfigByKEYForService)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
"go-admin/app/admin/models/system"
|
||||
"go-admin/common/dto"
|
||||
"go-admin/common/log"
|
||||
@@ -9,6 +11,7 @@ import (
|
||||
"go-admin/tools"
|
||||
)
|
||||
|
||||
// SysConfigSearch 列表或者搜索使用结构体
|
||||
type SysConfigSearch struct {
|
||||
dto.Pagination `search:"-"`
|
||||
ConfigName string `form:"configName" search:"type:exact;column:config_name;table:sys_config" comment:""`
|
||||
@@ -20,6 +23,7 @@ func (m *SysConfigSearch) GetNeedSearch() interface{} {
|
||||
return *m
|
||||
}
|
||||
|
||||
// Bind 映射上下文中的结构体数据
|
||||
func (m *SysConfigSearch) Bind(ctx *gin.Context) error {
|
||||
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||
err := ctx.ShouldBind(m)
|
||||
@@ -29,11 +33,7 @@ func (m *SysConfigSearch) Bind(ctx *gin.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *SysConfigSearch) Generate() dto.Index {
|
||||
o := *m
|
||||
return &o
|
||||
}
|
||||
|
||||
// SysConfigControl 增、改使用的结构体
|
||||
type SysConfigControl struct {
|
||||
ID int `uri:"ID" comment:"编码"` // 编码
|
||||
ConfigName string `json:"configName" comment:""`
|
||||
@@ -43,7 +43,60 @@ type SysConfigControl struct {
|
||||
Remark string `json:"remark" comment:""`
|
||||
}
|
||||
|
||||
// Bind 映射上下文中的结构体数据
|
||||
func (s *SysConfigControl) Bind(ctx *gin.Context) error {
|
||||
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||
err := ctx.ShouldBindUri(s)
|
||||
if err != nil {
|
||||
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
|
||||
return err
|
||||
}
|
||||
err = ctx.ShouldBindBodyWith(s, binding.JSON)
|
||||
if err != nil {
|
||||
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||
}
|
||||
var jsonStr []byte
|
||||
jsonStr, err = json.Marshal(s)
|
||||
if err != nil {
|
||||
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
|
||||
}
|
||||
ctx.Set("body", string(jsonStr))
|
||||
return err
|
||||
}
|
||||
|
||||
// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型
|
||||
func (s *SysConfigControl) Generate() (*system.SysConfig, error) {
|
||||
return &system.SysConfig{
|
||||
Model: common.Model{ID: s.ID},
|
||||
ConfigName: s.ConfigName,
|
||||
ConfigKey: s.ConfigKey,
|
||||
ConfigValue: s.ConfigValue,
|
||||
ConfigType: s.ConfigType,
|
||||
Remark: s.Remark,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetId 获取数据对应的ID
|
||||
func (s *SysConfigControl) GetId() interface{} {
|
||||
return s.ID
|
||||
}
|
||||
|
||||
// SysConfigById 获取单个或者删除的结构体
|
||||
type SysConfigById struct {
|
||||
Id int `uri:"id"`
|
||||
Ids []int `json:"ids"`
|
||||
}
|
||||
|
||||
func (s *SysConfigById) Generate() *SysConfigById {
|
||||
cp := *s
|
||||
return &cp
|
||||
}
|
||||
|
||||
func (s *SysConfigById) GetId() interface{} {
|
||||
return s.Id
|
||||
}
|
||||
|
||||
func (s *SysConfigById) Bind(ctx *gin.Context) error {
|
||||
msgID := tools.GenerateMsgIDFromContext(ctx)
|
||||
err := ctx.ShouldBindUri(s)
|
||||
if err != nil {
|
||||
@@ -57,35 +110,6 @@ func (s *SysConfigControl) Bind(ctx *gin.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *SysConfigControl) Generate() dto.Control {
|
||||
cp := *s
|
||||
return &cp
|
||||
}
|
||||
|
||||
func (s *SysConfigControl) GenerateM() (common.ActiveRecord, error) {
|
||||
return &system.SysConfig{
|
||||
Model: common.Model{ID: s.ID},
|
||||
ConfigName: s.ConfigName,
|
||||
ConfigKey: s.ConfigKey,
|
||||
ConfigValue: s.ConfigValue,
|
||||
ConfigType: s.ConfigType,
|
||||
Remark: s.Remark,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *SysConfigControl) GetId() interface{} {
|
||||
return s.ID
|
||||
}
|
||||
|
||||
type SysConfigById struct {
|
||||
dto.ObjectById
|
||||
}
|
||||
|
||||
func (s *SysConfigById) Generate() dto.Control {
|
||||
cp := *s
|
||||
return &cp
|
||||
}
|
||||
|
||||
func (s *SysConfigById) GenerateM() (common.ActiveRecord, error) {
|
||||
func (s *SysConfigById) GenerateM() (*system.SysConfig, error) {
|
||||
return &system.SysConfig{}, nil
|
||||
}
|
||||
|
||||
@@ -1,16 +1,115 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"go-admin/app/admin/models/system"
|
||||
"go-admin/app/admin/service/dto"
|
||||
cDto "go-admin/common/dto"
|
||||
"go-admin/common/log"
|
||||
"go-admin/common/service"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SysConfig struct {
|
||||
service.Service
|
||||
}
|
||||
|
||||
|
||||
// GetSysConfigPage 获取SysConfig列表
|
||||
func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]system.SysConfig, count *int64) error {
|
||||
var err error
|
||||
var data system.SysConfig
|
||||
msgID := e.MsgID
|
||||
|
||||
err = e.Orm.Model(&data).
|
||||
Scopes(
|
||||
cDto.MakeCondition(c.GetNeedSearch()),
|
||||
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
||||
).
|
||||
Find(list).Limit(-1).Offset(-1).
|
||||
Count(count).Error
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetSysConfig 获取SysConfig对象
|
||||
func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *system.SysConfig) error {
|
||||
var err error
|
||||
var data system.SysConfig
|
||||
msgID := e.MsgID
|
||||
|
||||
db := e.Orm.Model(&data).
|
||||
First(model, d.GetId())
|
||||
err = db.Error
|
||||
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
err = errors.New("查看对象不存在或无权查看")
|
||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||
return err
|
||||
}
|
||||
if db.Error != nil {
|
||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// InsertSysConfig 创建SysConfig对象
|
||||
func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error {
|
||||
var err error
|
||||
var data system.SysConfig
|
||||
msgID := e.MsgID
|
||||
|
||||
err = e.Orm.Model(&data).
|
||||
Create(model).Error
|
||||
if err != nil {
|
||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateSysConfig 修改SysConfig对象
|
||||
func (e *SysConfig) UpdateSysConfig(c *system.SysConfig) error {
|
||||
var err error
|
||||
var data system.SysConfig
|
||||
msgID := e.MsgID
|
||||
|
||||
db := e.Orm.Model(&data).
|
||||
Where(c.GetId()).Updates(c)
|
||||
if db.Error != nil {
|
||||
log.Errorf("msgID[%s] db error:%s", msgID, err)
|
||||
return err
|
||||
}
|
||||
if db.RowsAffected == 0 {
|
||||
return errors.New("无权更新该数据")
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RemoveSysConfig 删除SysConfig
|
||||
func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById,c *system.SysConfig) error {
|
||||
var err error
|
||||
var data system.SysConfig
|
||||
msgID := e.MsgID
|
||||
|
||||
db := e.Orm.Model(&data).
|
||||
Where(d.GetId()).Delete(c)
|
||||
if db.Error != nil {
|
||||
err = db.Error
|
||||
log.Errorf("MsgID[%s] Delete error: %s", msgID, err)
|
||||
return err
|
||||
}
|
||||
if db.RowsAffected == 0 {
|
||||
err = errors.New("无权删除该数据")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetSysConfigByKEY 根据Key获取SysConfig
|
||||
func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigControl) error {
|
||||
var err error
|
||||
|
||||
Reference in New Issue
Block a user