✨ 新增几大中心功能
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.echol.cn/loser/Go-Web-Template/server/global"
|
||||
"git.echol.cn/loser/Go-Web-Template/server/model/common/response"
|
||||
"git.echol.cn/loser/Go-Web-Template/server/model/system"
|
||||
systemReq "git.echol.cn/loser/Go-Web-Template/server/model/system/request"
|
||||
"git.echol.cn/loser/Go-Web-Template/server/utils"
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
@@ -33,6 +37,18 @@ func (sysParamsApi *SysParamsApi) CreateSysParams(c *gin.Context) {
|
||||
response.FailWithMessage("创建失败:"+err.Error(), c)
|
||||
return
|
||||
}
|
||||
// write audit (best-effort)
|
||||
operatorID := utils.GetUserID(c)
|
||||
if operatorID > 0 {
|
||||
_ = global.GVA_DB.Create(&system.SysParamChangeLog{
|
||||
ParamID: sysParams.ID,
|
||||
Key: sysParams.Key,
|
||||
Action: system.SysParamChangeActionCreate,
|
||||
OldValue: "",
|
||||
NewValue: sysParams.Value,
|
||||
OperatorUserID: operatorID,
|
||||
}).Error
|
||||
}
|
||||
response.OkWithMessage("创建成功", c)
|
||||
}
|
||||
|
||||
@@ -47,12 +63,26 @@ func (sysParamsApi *SysParamsApi) CreateSysParams(c *gin.Context) {
|
||||
// @Router /sysParams/deleteSysParams [delete]
|
||||
func (sysParamsApi *SysParamsApi) DeleteSysParams(c *gin.Context) {
|
||||
ID := c.Query("ID")
|
||||
// read before delete for audit
|
||||
var before system.SysParams
|
||||
_ = global.GVA_DB.Where("id = ?", ID).First(&before).Error
|
||||
err := sysParamsService.DeleteSysParams(ID)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("删除失败!", zap.Error(err))
|
||||
response.FailWithMessage("删除失败:"+err.Error(), c)
|
||||
return
|
||||
}
|
||||
operatorID := utils.GetUserID(c)
|
||||
if operatorID > 0 && before.ID > 0 {
|
||||
_ = global.GVA_DB.Create(&system.SysParamChangeLog{
|
||||
ParamID: before.ID,
|
||||
Key: before.Key,
|
||||
Action: system.SysParamChangeActionDelete,
|
||||
OldValue: before.Value,
|
||||
NewValue: "",
|
||||
OperatorUserID: operatorID,
|
||||
}).Error
|
||||
}
|
||||
response.OkWithMessage("删除成功", c)
|
||||
}
|
||||
|
||||
@@ -91,15 +121,97 @@ func (sysParamsApi *SysParamsApi) UpdateSysParams(c *gin.Context) {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
// read before update for audit
|
||||
var before system.SysParams
|
||||
_ = global.GVA_DB.Where("id = ?", sysParams.ID).First(&before).Error
|
||||
err = sysParamsService.UpdateSysParams(sysParams)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("更新失败!", zap.Error(err))
|
||||
response.FailWithMessage("更新失败:"+err.Error(), c)
|
||||
return
|
||||
}
|
||||
operatorID := utils.GetUserID(c)
|
||||
if operatorID > 0 && before.ID > 0 {
|
||||
_ = global.GVA_DB.Create(&system.SysParamChangeLog{
|
||||
ParamID: before.ID,
|
||||
Key: before.Key,
|
||||
Action: system.SysParamChangeActionUpdate,
|
||||
OldValue: before.Value,
|
||||
NewValue: sysParams.Value,
|
||||
OperatorUserID: operatorID,
|
||||
}).Error
|
||||
}
|
||||
response.OkWithMessage("更新成功", c)
|
||||
}
|
||||
|
||||
// GetSysParamChangeLogList 分页获取参数变更审计
|
||||
// @Tags SysParams
|
||||
// @Summary 分页获取参数变更审计
|
||||
// @Security ApiKeyAuth
|
||||
// @accept application/json
|
||||
// @Produce application/json
|
||||
// @Param page query int false "页码" default(1)
|
||||
// @Param pageSize query int false "每页大小" default(10)
|
||||
// @Param key query string false "key(模糊)"
|
||||
// @Param operatorUserId query int false "操作人ID"
|
||||
// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功"
|
||||
// @Router /sysParams/getChangeLogList [get]
|
||||
func (sysParamsApi *SysParamsApi) GetSysParamChangeLogList(c *gin.Context) {
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
if pageSize <= 0 || pageSize > 200 {
|
||||
pageSize = 10
|
||||
}
|
||||
|
||||
key := strings.TrimSpace(c.Query("key"))
|
||||
var operatorID uint
|
||||
if raw := strings.TrimSpace(c.Query("operatorUserId")); raw != "" {
|
||||
if v, err := strconv.Atoi(raw); err == nil && v > 0 {
|
||||
operatorID = uint(v)
|
||||
}
|
||||
}
|
||||
|
||||
db := global.GVA_DB.Model(&system.SysParamChangeLog{})
|
||||
if key != "" {
|
||||
db = db.Where("key LIKE ?", "%"+key+"%")
|
||||
}
|
||||
if operatorID > 0 {
|
||||
db = db.Where("operator_user_id = ?", operatorID)
|
||||
}
|
||||
|
||||
var total int64
|
||||
if err := db.Count(&total).Error; err != nil {
|
||||
response.FailWithMessage("获取失败:"+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
type row struct {
|
||||
system.SysParamChangeLog
|
||||
OperatorName string `json:"operatorName" gorm:"column:operator_name"`
|
||||
}
|
||||
var list []row
|
||||
if err := db.
|
||||
Joins("LEFT JOIN sys_users su ON su.id = sys_param_change_logs.operator_user_id").
|
||||
Select("sys_param_change_logs.*, su.username AS operator_name").
|
||||
Order("sys_param_change_logs.id desc").
|
||||
Limit(pageSize).
|
||||
Offset((page - 1) * pageSize).
|
||||
Scan(&list).Error; err != nil {
|
||||
response.FailWithMessage("获取失败:"+err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
response.OkWithDetailed(response.PageResult{
|
||||
List: list,
|
||||
Total: total,
|
||||
Page: page,
|
||||
PageSize: pageSize,
|
||||
}, "获取成功", c)
|
||||
}
|
||||
|
||||
// FindSysParams 用id查询参数
|
||||
// @Tags SysParams
|
||||
// @Summary 用id查询参数
|
||||
|
||||
Reference in New Issue
Block a user