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" ) type SysParamsApi struct{} // CreateSysParams 创建参数 // @Tags SysParams // @Summary 创建参数 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body system.SysParams true "创建参数" // @Success 200 {object} response.Response{msg=string} "创建成功" // @Router /sysParams/createSysParams [post] func (sysParamsApi *SysParamsApi) CreateSysParams(c *gin.Context) { var sysParams system.SysParams err := c.ShouldBindJSON(&sysParams) if err != nil { response.FailWithMessage(err.Error(), c) return } err = sysParamsService.CreateSysParams(&sysParams) if err != nil { global.GVA_LOG.Error("创建失败!", zap.Error(err)) 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) } // DeleteSysParams 删除参数 // @Tags SysParams // @Summary 删除参数 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body system.SysParams true "删除参数" // @Success 200 {object} response.Response{msg=string} "删除成功" // @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) } // DeleteSysParamsByIds 批量删除参数 // @Tags SysParams // @Summary 批量删除参数 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Success 200 {object} response.Response{msg=string} "批量删除成功" // @Router /sysParams/deleteSysParamsByIds [delete] func (sysParamsApi *SysParamsApi) DeleteSysParamsByIds(c *gin.Context) { IDs := c.QueryArray("IDs[]") err := sysParamsService.DeleteSysParamsByIds(IDs) if err != nil { global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) response.FailWithMessage("批量删除失败:"+err.Error(), c) return } response.OkWithMessage("批量删除成功", c) } // UpdateSysParams 更新参数 // @Tags SysParams // @Summary 更新参数 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data body system.SysParams true "更新参数" // @Success 200 {object} response.Response{msg=string} "更新成功" // @Router /sysParams/updateSysParams [put] func (sysParamsApi *SysParamsApi) UpdateSysParams(c *gin.Context) { var sysParams system.SysParams err := c.ShouldBindJSON(&sysParams) if err != nil { 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查询参数 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data query system.SysParams true "用id查询参数" // @Success 200 {object} response.Response{data=system.SysParams,msg=string} "查询成功" // @Router /sysParams/findSysParams [get] func (sysParamsApi *SysParamsApi) FindSysParams(c *gin.Context) { ID := c.Query("ID") resysParams, err := sysParamsService.GetSysParams(ID) if err != nil { global.GVA_LOG.Error("查询失败!", zap.Error(err)) response.FailWithMessage("查询失败:"+err.Error(), c) return } response.OkWithData(resysParams, c) } // GetSysParamsList 分页获取参数列表 // @Tags SysParams // @Summary 分页获取参数列表 // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param data query systemReq.SysParamsSearch true "分页获取参数列表" // @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" // @Router /sysParams/getSysParamsList [get] func (sysParamsApi *SysParamsApi) GetSysParamsList(c *gin.Context) { var pageInfo systemReq.SysParamsSearch err := c.ShouldBindQuery(&pageInfo) if err != nil { response.FailWithMessage(err.Error(), c) return } list, total, err := sysParamsService.GetSysParamsInfoList(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) } // GetSysParam 根据key获取参数value // @Tags SysParams // @Summary 根据key获取参数value // @Security ApiKeyAuth // @accept application/json // @Produce application/json // @Param key query string true "key" // @Success 200 {object} response.Response{data=system.SysParams,msg=string} "获取成功" // @Router /sysParams/getSysParam [get] func (sysParamsApi *SysParamsApi) GetSysParam(c *gin.Context) { k := c.Query("key") params, err := sysParamsService.GetSysParam(k) if err != nil { global.GVA_LOG.Error("获取失败!", zap.Error(err)) response.FailWithMessage("获取失败:"+err.Error(), c) return } response.OkWithDetailed(params, "获取成功", c) }