update 优化接口防重和加锁

This commit is contained in:
AprilWind 2025-07-06 17:04:46 +08:00
parent ec31b736c7
commit d8d138092f
17 changed files with 70 additions and 7 deletions

View File

@ -42,6 +42,11 @@
<artifactId>ruoyi-common-log</artifactId> <artifactId>ruoyi-common-log</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-idempotent</artifactId>
</dependency>
<!--velocity代码生成使用模板 --> <!--velocity代码生成使用模板 -->
<dependency> <dependency>
<groupId>org.apache.velocity</groupId> <groupId>org.apache.velocity</groupId>

View File

@ -3,9 +3,11 @@ package org.dromara.generator.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import com.baomidou.lock.annotation.Lock4j;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -50,6 +52,7 @@ public class GenController extends BaseController {
* *
* @param tableId 表ID * @param tableId 表ID
*/ */
@RepeatSubmit()
@SaCheckPermission("tool:gen:query") @SaCheckPermission("tool:gen:query")
@GetMapping(value = "/{tableId}") @GetMapping(value = "/{tableId}")
public R<Map<String, Object>> getInfo(@PathVariable Long tableId) { public R<Map<String, Object>> getInfo(@PathVariable Long tableId) {
@ -91,6 +94,7 @@ public class GenController extends BaseController {
*/ */
@SaCheckPermission("tool:gen:import") @SaCheckPermission("tool:gen:import")
@Log(title = "代码生成", businessType = BusinessType.IMPORT) @Log(title = "代码生成", businessType = BusinessType.IMPORT)
@RepeatSubmit()
@PostMapping("/importTable") @PostMapping("/importTable")
public R<Void> importTableSave(String tables, String dataName) { public R<Void> importTableSave(String tables, String dataName) {
String[] tableNames = Convert.toStrArray(tables); String[] tableNames = Convert.toStrArray(tables);
@ -105,6 +109,7 @@ public class GenController extends BaseController {
*/ */
@SaCheckPermission("tool:gen:edit") @SaCheckPermission("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE) @Log(title = "代码生成", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> editSave(@Validated @RequestBody GenTable genTable) { public R<Void> editSave(@Validated @RequestBody GenTable genTable) {
genTableService.validateEdit(genTable); genTableService.validateEdit(genTable);
@ -170,6 +175,7 @@ public class GenController extends BaseController {
*/ */
@SaCheckPermission("tool:gen:edit") @SaCheckPermission("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE) @Log(title = "代码生成", businessType = BusinessType.UPDATE)
@Lock4j
@GetMapping("/synchDb/{tableId}") @GetMapping("/synchDb/{tableId}")
public R<Void> synchDb(@PathVariable("tableId") Long tableId) { public R<Void> synchDb(@PathVariable("tableId") Long tableId) {
genTableService.synchDb(tableId); genTableService.synchDb(tableId);

View File

@ -1,11 +1,13 @@
package org.dromara.system.controller.monitor; package org.dromara.system.controller.monitor;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.lock.annotation.Lock4j;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.constant.CacheConstants;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -69,6 +71,7 @@ public class SysLogininforController extends BaseController {
*/ */
@SaCheckPermission("monitor:logininfor:remove") @SaCheckPermission("monitor:logininfor:remove")
@Log(title = "登录日志", businessType = BusinessType.CLEAN) @Log(title = "登录日志", businessType = BusinessType.CLEAN)
@Lock4j
@DeleteMapping("/clean") @DeleteMapping("/clean")
public R<Void> clean() { public R<Void> clean() {
logininforService.cleanLogininfor(); logininforService.cleanLogininfor();
@ -77,6 +80,7 @@ public class SysLogininforController extends BaseController {
@SaCheckPermission("monitor:logininfor:unlock") @SaCheckPermission("monitor:logininfor:unlock")
@Log(title = "账户解锁", businessType = BusinessType.OTHER) @Log(title = "账户解锁", businessType = BusinessType.OTHER)
@RepeatSubmit()
@GetMapping("/unlock/{userName}") @GetMapping("/unlock/{userName}")
public R<Void> unlock(@PathVariable("userName") String userName) { public R<Void> unlock(@PathVariable("userName") String userName) {
String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName; String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName;

View File

@ -1,21 +1,22 @@
package org.dromara.system.controller.monitor; package org.dromara.system.controller.monitor;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.log.annotation.Log; import com.baomidou.lock.annotation.Lock4j;
import org.dromara.common.web.core.BaseController; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.mybatis.core.page.PageQuery; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysOperLogBo; import org.dromara.system.domain.bo.SysOperLogBo;
import org.dromara.system.domain.vo.SysOperLogVo; import org.dromara.system.domain.vo.SysOperLogVo;
import org.dromara.system.service.ISysOperLogService; import org.dromara.system.service.ISysOperLogService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
@ -67,6 +68,7 @@ public class SysOperlogController extends BaseController {
*/ */
@Log(title = "操作日志", businessType = BusinessType.CLEAN) @Log(title = "操作日志", businessType = BusinessType.CLEAN)
@SaCheckPermission("monitor:operlog:remove") @SaCheckPermission("monitor:operlog:remove")
@Lock4j
@DeleteMapping("/clean") @DeleteMapping("/clean")
public R<Void> clean() { public R<Void> clean() {
operLogService.cleanOperLog(); operLogService.cleanOperLog();

View File

@ -10,6 +10,7 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.dto.UserOnlineDTO; import org.dromara.common.core.domain.dto.UserOnlineDTO;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -81,6 +82,7 @@ public class SysUserOnlineController extends BaseController {
*/ */
@SaCheckPermission("monitor:online:forceLogout") @SaCheckPermission("monitor:online:forceLogout")
@Log(title = "在线用户", businessType = BusinessType.FORCE) @Log(title = "在线用户", businessType = BusinessType.FORCE)
@RepeatSubmit()
@DeleteMapping("/{tokenId}") @DeleteMapping("/{tokenId}")
public R<Void> forceLogout(@PathVariable String tokenId) { public R<Void> forceLogout(@PathVariable String tokenId) {
try { try {
@ -114,6 +116,7 @@ public class SysUserOnlineController extends BaseController {
* @param tokenId token值 * @param tokenId token值
*/ */
@Log(title = "在线设备", businessType = BusinessType.FORCE) @Log(title = "在线设备", businessType = BusinessType.FORCE)
@RepeatSubmit()
@DeleteMapping("/myself/{tokenId}") @DeleteMapping("/myself/{tokenId}")
public R<Void> remove(@PathVariable("tokenId") String tokenId) { public R<Void> remove(@PathVariable("tokenId") String tokenId) {
try { try {

View File

@ -5,6 +5,7 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -78,6 +79,7 @@ public class SysConfigController extends BaseController {
*/ */
@SaCheckPermission("system:config:add") @SaCheckPermission("system:config:add")
@Log(title = "参数管理", businessType = BusinessType.INSERT) @Log(title = "参数管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysConfigBo config) { public R<Void> add(@Validated @RequestBody SysConfigBo config) {
if (!configService.checkConfigKeyUnique(config)) { if (!configService.checkConfigKeyUnique(config)) {
@ -92,6 +94,7 @@ public class SysConfigController extends BaseController {
*/ */
@SaCheckPermission("system:config:edit") @SaCheckPermission("system:config:edit")
@Log(title = "参数管理", businessType = BusinessType.UPDATE) @Log(title = "参数管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysConfigBo config) { public R<Void> edit(@Validated @RequestBody SysConfigBo config) {
if (!configService.checkConfigKeyUnique(config)) { if (!configService.checkConfigKeyUnique(config)) {
@ -106,6 +109,7 @@ public class SysConfigController extends BaseController {
*/ */
@SaCheckPermission("system:config:edit") @SaCheckPermission("system:config:edit")
@Log(title = "参数管理", businessType = BusinessType.UPDATE) @Log(title = "参数管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/updateByKey") @PutMapping("/updateByKey")
public R<Void> updateByKey(@RequestBody SysConfigBo config) { public R<Void> updateByKey(@RequestBody SysConfigBo config) {
configService.updateConfig(config); configService.updateConfig(config);

View File

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
@ -73,6 +74,7 @@ public class SysDeptController extends BaseController {
*/ */
@SaCheckPermission("system:dept:add") @SaCheckPermission("system:dept:add")
@Log(title = "部门管理", businessType = BusinessType.INSERT) @Log(title = "部门管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysDeptBo dept) { public R<Void> add(@Validated @RequestBody SysDeptBo dept) {
if (!deptService.checkDeptNameUnique(dept)) { if (!deptService.checkDeptNameUnique(dept)) {
@ -86,6 +88,7 @@ public class SysDeptController extends BaseController {
*/ */
@SaCheckPermission("system:dept:edit") @SaCheckPermission("system:dept:edit")
@Log(title = "部门管理", businessType = BusinessType.UPDATE) @Log(title = "部门管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysDeptBo dept) { public R<Void> edit(@Validated @RequestBody SysDeptBo dept) {
Long deptId = dept.getDeptId(); Long deptId = dept.getDeptId();

View File

@ -6,6 +6,7 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -86,6 +87,7 @@ public class SysDictDataController extends BaseController {
*/ */
@SaCheckPermission("system:dict:add") @SaCheckPermission("system:dict:add")
@Log(title = "字典数据", businessType = BusinessType.INSERT) @Log(title = "字典数据", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysDictDataBo dict) { public R<Void> add(@Validated @RequestBody SysDictDataBo dict) {
if (!dictDataService.checkDictDataUnique(dict)) { if (!dictDataService.checkDictDataUnique(dict)) {
@ -100,6 +102,7 @@ public class SysDictDataController extends BaseController {
*/ */
@SaCheckPermission("system:dict:edit") @SaCheckPermission("system:dict:edit")
@Log(title = "字典数据", businessType = BusinessType.UPDATE) @Log(title = "字典数据", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysDictDataBo dict) { public R<Void> edit(@Validated @RequestBody SysDictDataBo dict) {
if (!dictDataService.checkDictDataUnique(dict)) { if (!dictDataService.checkDictDataUnique(dict)) {

View File

@ -1,10 +1,12 @@
package org.dromara.system.controller.system; package org.dromara.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.lock.annotation.Lock4j;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -68,6 +70,7 @@ public class SysDictTypeController extends BaseController {
*/ */
@SaCheckPermission("system:dict:add") @SaCheckPermission("system:dict:add")
@Log(title = "字典类型", businessType = BusinessType.INSERT) @Log(title = "字典类型", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysDictTypeBo dict) { public R<Void> add(@Validated @RequestBody SysDictTypeBo dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) { if (!dictTypeService.checkDictTypeUnique(dict)) {
@ -82,6 +85,7 @@ public class SysDictTypeController extends BaseController {
*/ */
@SaCheckPermission("system:dict:edit") @SaCheckPermission("system:dict:edit")
@Log(title = "字典类型", businessType = BusinessType.UPDATE) @Log(title = "字典类型", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysDictTypeBo dict) { public R<Void> edit(@Validated @RequestBody SysDictTypeBo dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) { if (!dictTypeService.checkDictTypeUnique(dict)) {
@ -109,6 +113,7 @@ public class SysDictTypeController extends BaseController {
*/ */
@SaCheckPermission("system:dict:remove") @SaCheckPermission("system:dict:remove")
@Log(title = "字典类型", businessType = BusinessType.CLEAN) @Log(title = "字典类型", businessType = BusinessType.CLEAN)
@Lock4j
@DeleteMapping("/refreshCache") @DeleteMapping("/refreshCache")
public R<Void> refreshCache() { public R<Void> refreshCache() {
dictTypeService.resetDictCache(); dictTypeService.resetDictCache();

View File

@ -9,6 +9,7 @@ import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.TenantConstants;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@ -129,6 +130,7 @@ public class SysMenuController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:menu:add") @SaCheckPermission("system:menu:add")
@Log(title = "菜单管理", businessType = BusinessType.INSERT) @Log(title = "菜单管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysMenuBo menu) { public R<Void> add(@Validated @RequestBody SysMenuBo menu) {
if (!menuService.checkMenuNameUnique(menu)) { if (!menuService.checkMenuNameUnique(menu)) {
@ -145,6 +147,7 @@ public class SysMenuController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:menu:edit") @SaCheckPermission("system:menu:edit")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE) @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysMenuBo menu) { public R<Void> edit(@Validated @RequestBody SysMenuBo menu) {
if (!menuService.checkMenuNameUnique(menu)) { if (!menuService.checkMenuNameUnique(menu)) {

View File

@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.service.DictService; import org.dromara.common.core.service.DictService;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -55,6 +56,7 @@ public class SysNoticeController extends BaseController {
*/ */
@SaCheckPermission("system:notice:add") @SaCheckPermission("system:notice:add")
@Log(title = "通知公告", businessType = BusinessType.INSERT) @Log(title = "通知公告", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysNoticeBo notice) { public R<Void> add(@Validated @RequestBody SysNoticeBo notice) {
int rows = noticeService.insertNotice(notice); int rows = noticeService.insertNotice(notice);
@ -71,6 +73,7 @@ public class SysNoticeController extends BaseController {
*/ */
@SaCheckPermission("system:notice:edit") @SaCheckPermission("system:notice:edit")
@Log(title = "通知公告", businessType = BusinessType.UPDATE) @Log(title = "通知公告", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysNoticeBo notice) { public R<Void> edit(@Validated @RequestBody SysNoticeBo notice) {
return toAjax(noticeService.updateNotice(notice)); return toAjax(noticeService.updateNotice(notice));

View File

@ -98,6 +98,7 @@ public class SysOssConfigController extends BaseController {
*/ */
@SaCheckPermission("system:ossConfig:edit") @SaCheckPermission("system:ossConfig:edit")
@Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE) @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysOssConfigBo bo) { public R<Void> changeStatus(@RequestBody SysOssConfigBo bo) {
return toAjax(ossConfigService.updateOssConfigStatus(bo)); return toAjax(ossConfigService.updateOssConfigStatus(bo));

View File

@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -71,6 +72,7 @@ public class SysPostController extends BaseController {
*/ */
@SaCheckPermission("system:post:add") @SaCheckPermission("system:post:add")
@Log(title = "岗位管理", businessType = BusinessType.INSERT) @Log(title = "岗位管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysPostBo post) { public R<Void> add(@Validated @RequestBody SysPostBo post) {
if (!postService.checkPostNameUnique(post)) { if (!postService.checkPostNameUnique(post)) {
@ -86,6 +88,7 @@ public class SysPostController extends BaseController {
*/ */
@SaCheckPermission("system:post:edit") @SaCheckPermission("system:post:edit")
@Log(title = "岗位管理", businessType = BusinessType.UPDATE) @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysPostBo post) { public R<Void> edit(@Validated @RequestBody SysPostBo post) {
if (!postService.checkPostNameUnique(post)) { if (!postService.checkPostNameUnique(post)) {

View File

@ -6,6 +6,7 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -77,6 +78,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:add") @SaCheckPermission("system:role:add")
@Log(title = "角色管理", businessType = BusinessType.INSERT) @Log(title = "角色管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysRoleBo role) { public R<Void> add(@Validated @RequestBody SysRoleBo role) {
roleService.checkRoleAllowed(role); roleService.checkRoleAllowed(role);
@ -94,6 +96,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE) @Log(title = "角色管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysRoleBo role) { public R<Void> edit(@Validated @RequestBody SysRoleBo role) {
roleService.checkRoleAllowed(role); roleService.checkRoleAllowed(role);
@ -116,6 +119,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE) @Log(title = "角色管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/dataScope") @PutMapping("/dataScope")
public R<Void> dataScope(@RequestBody SysRoleBo role) { public R<Void> dataScope(@RequestBody SysRoleBo role) {
roleService.checkRoleAllowed(role); roleService.checkRoleAllowed(role);
@ -128,6 +132,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE) @Log(title = "角色管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysRoleBo role) { public R<Void> changeStatus(@RequestBody SysRoleBo role) {
roleService.checkRoleAllowed(role); roleService.checkRoleAllowed(role);
@ -181,6 +186,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT) @Log(title = "角色管理", businessType = BusinessType.GRANT)
@RepeatSubmit()
@PutMapping("/authUser/cancel") @PutMapping("/authUser/cancel")
public R<Void> cancelAuthUser(@RequestBody SysUserRole userRole) { public R<Void> cancelAuthUser(@RequestBody SysUserRole userRole) {
return toAjax(roleService.deleteAuthUser(userRole)); return toAjax(roleService.deleteAuthUser(userRole));
@ -194,6 +200,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT) @Log(title = "角色管理", businessType = BusinessType.GRANT)
@RepeatSubmit()
@PutMapping("/authUser/cancelAll") @PutMapping("/authUser/cancelAll")
public R<Void> cancelAuthUserAll(Long roleId, Long[] userIds) { public R<Void> cancelAuthUserAll(Long roleId, Long[] userIds) {
return toAjax(roleService.deleteAuthUsers(roleId, userIds)); return toAjax(roleService.deleteAuthUsers(roleId, userIds));
@ -207,6 +214,7 @@ public class SysRoleController extends BaseController {
*/ */
@SaCheckPermission("system:role:edit") @SaCheckPermission("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT) @Log(title = "角色管理", businessType = BusinessType.GRANT)
@RepeatSubmit()
@PutMapping("/authUser/selectAll") @PutMapping("/authUser/selectAll")
public R<Void> selectAuthUserAll(Long roleId, Long[] userIds) { public R<Void> selectAuthUserAll(Long roleId, Long[] userIds) {
roleService.checkRoleDataScope(roleId); roleService.checkRoleDataScope(roleId);

View File

@ -118,6 +118,7 @@ public class SysTenantController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenant:edit") @SaCheckPermission("system:tenant:edit")
@Log(title = "租户管理", businessType = BusinessType.UPDATE) @Log(title = "租户管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysTenantBo bo) { public R<Void> changeStatus(@RequestBody SysTenantBo bo) {
tenantService.checkTenantAllowed(bo.getTenantId()); tenantService.checkTenantAllowed(bo.getTenantId());
@ -170,6 +171,7 @@ public class SysTenantController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenant:edit") @SaCheckPermission("system:tenant:edit")
@Log(title = "租户管理", businessType = BusinessType.UPDATE) @Log(title = "租户管理", businessType = BusinessType.UPDATE)
@Lock4j
@GetMapping("/syncTenantPackage") @GetMapping("/syncTenantPackage")
public R<Void> syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId, public R<Void> syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId,
@NotNull(message = "套餐ID不能为空") Long packageId) { @NotNull(message = "套餐ID不能为空") Long packageId) {
@ -181,6 +183,7 @@ public class SysTenantController extends BaseController {
*/ */
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@Log(title = "租户管理", businessType = BusinessType.INSERT) @Log(title = "租户管理", businessType = BusinessType.INSERT)
@Lock4j
@GetMapping("/syncTenantDict") @GetMapping("/syncTenantDict")
public R<Void> syncTenantDict() { public R<Void> syncTenantDict() {
if (!TenantHelper.isEnable()) { if (!TenantHelper.isEnable()) {

View File

@ -121,6 +121,7 @@ public class SysTenantPackageController extends BaseController {
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenantPackage:edit") @SaCheckPermission("system:tenantPackage:edit")
@Log(title = "租户套餐", businessType = BusinessType.UPDATE) @Log(title = "租户套餐", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysTenantPackageBo bo) { public R<Void> changeStatus(@RequestBody SysTenantPackageBo bo) {
return toAjax(tenantPackageService.updatePackageStatus(bo)); return toAjax(tenantPackageService.updatePackageStatus(bo));

View File

@ -16,6 +16,7 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.encrypt.annotation.ApiEncrypt;
import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -154,6 +155,7 @@ public class SysUserController extends BaseController {
*/ */
@SaCheckPermission("system:user:add") @SaCheckPermission("system:user:add")
@Log(title = "用户管理", businessType = BusinessType.INSERT) @Log(title = "用户管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysUserBo user) { public R<Void> add(@Validated @RequestBody SysUserBo user) {
deptService.checkDeptDataScope(user.getDeptId()); deptService.checkDeptDataScope(user.getDeptId());
@ -178,6 +180,7 @@ public class SysUserController extends BaseController {
*/ */
@SaCheckPermission("system:user:edit") @SaCheckPermission("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE) @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping @PutMapping
public R<Void> edit(@Validated @RequestBody SysUserBo user) { public R<Void> edit(@Validated @RequestBody SysUserBo user) {
userService.checkUserAllowed(user.getUserId()); userService.checkUserAllowed(user.getUserId());
@ -227,6 +230,7 @@ public class SysUserController extends BaseController {
@ApiEncrypt @ApiEncrypt
@SaCheckPermission("system:user:resetPwd") @SaCheckPermission("system:user:resetPwd")
@Log(title = "用户管理", businessType = BusinessType.UPDATE) @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/resetPwd") @PutMapping("/resetPwd")
public R<Void> resetPwd(@RequestBody SysUserBo user) { public R<Void> resetPwd(@RequestBody SysUserBo user) {
userService.checkUserAllowed(user.getUserId()); userService.checkUserAllowed(user.getUserId());
@ -240,6 +244,7 @@ public class SysUserController extends BaseController {
*/ */
@SaCheckPermission("system:user:edit") @SaCheckPermission("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE) @Log(title = "用户管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysUserBo user) { public R<Void> changeStatus(@RequestBody SysUserBo user) {
userService.checkUserAllowed(user.getUserId()); userService.checkUserAllowed(user.getUserId());
@ -272,6 +277,7 @@ public class SysUserController extends BaseController {
*/ */
@SaCheckPermission("system:user:edit") @SaCheckPermission("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.GRANT) @Log(title = "用户管理", businessType = BusinessType.GRANT)
@RepeatSubmit()
@PutMapping("/authRole") @PutMapping("/authRole")
public R<Void> insertAuthRole(Long userId, Long[] roleIds) { public R<Void> insertAuthRole(Long userId, Long[] roleIds) {
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);