新增几大中心功能

This commit is contained in:
Administrator
2026-04-23 15:29:07 +08:00
parent 5c2a146a44
commit c6354ee065
123 changed files with 13074 additions and 229 deletions

View File

@@ -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查询参数