LIJIAN 1 månad sedan
förälder
incheckning
442c73785f
17 ändrade filer med 119 tillägg och 2 borttagningar
  1. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/assets/controller/AssetStatusHistoryController.java
  2. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/assets/controller/AssetsInfoController.java
  3. 2 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysAuthController.java
  4. 14 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDepartmentController.java
  5. 10 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDictDataController.java
  6. 10 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDictTypeController.java
  7. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysFileController.java
  8. 12 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysMenuController.java
  9. 14 1
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysRoleController.java
  10. 7 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysTimersJobController.java
  11. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysUserController.java
  12. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/system/enums/SysRoleEnum.java
  13. 7 0
      ema-admin/src/main/java/com/ema/admin/modules/system/service/SysMenuService.java
  14. 7 0
      ema-admin/src/main/java/com/ema/admin/modules/system/service/SysRoleService.java
  15. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/system/service/impl/SysMenuServiceImpl.java
  16. 5 0
      ema-admin/src/main/java/com/ema/admin/modules/system/service/impl/SysRoleServiceImpl.java
  17. 1 1
      ema-common/src/main/java/com/ema/common/aspect/logger/LogTypeEnum.java

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/assets/controller/AssetStatusHistoryController.java

@@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import com.ema.admin.modules.assets.entity.AssetStatusHistory;
 import com.ema.admin.modules.assets.service.AssetStatusHistoryService;
 import com.ema.admin.modules.assets.vo.AssetStatusHistoryQueryVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -40,6 +42,7 @@ public class AssetStatusHistoryController {
      */
     @PostMapping("save")
     @ApiOperation("保存")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("") AssetStatusHistory assetStatusHistory) {
         return assetStatusHistoryService.save(assetStatusHistory);
     }
@@ -52,6 +55,7 @@ public class AssetStatusHistoryController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("主键") String id) {
         return assetStatusHistoryService.removeById(id);
     }
@@ -64,6 +68,7 @@ public class AssetStatusHistoryController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("主键") AssetStatusHistory assetStatusHistory) {
         return assetStatusHistoryService.updateById(assetStatusHistory);
     }

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/assets/controller/AssetsInfoController.java

@@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.ema.admin.modules.assets.entity.AssetsInfo;
@@ -41,6 +43,7 @@ public class AssetsInfoController {
      */
     @PostMapping("save")
     @ApiOperation("保存")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("") AssetsInfo assetsInfo) {
         return assetsInfoService.save(assetsInfo);
     }
@@ -53,6 +56,7 @@ public class AssetsInfoController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("主键") String id) {
         return assetsInfoService.removeById(id);
     }
@@ -65,6 +69,7 @@ public class AssetsInfoController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("主键") AssetsInfo assetsInfo) {
         return assetsInfoService.updateById(assetsInfo);
     }

+ 2 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysAuthController.java

@@ -103,12 +103,14 @@ public class SysAuthController {
 
     @ApiOperation(value = "修改密码")
     @PostMapping(value = "/auth/updatePwd")
+    @Logger(type = LogTypeEnum.UPDATE)
     public void updatePwd(@RequestBody @Valid SysUserPwdUpdateVo updatePwdVo) {
         sysAuthService.updatePwd(updatePwdVo);
     }
 
     @ApiOperation(value = "忘记密码")
     @PostMapping(value = "/auth/forgotPassword")
+    @Logger(type = LogTypeEnum.UPDATE)
     public void forgotPassword(@RequestBody @Valid SysUserForgotPwdVo forgotPwdVo) {
         sysAuthService.forgotPassword(forgotPwdVo);
     }

+ 14 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDepartmentController.java

@@ -1,11 +1,15 @@
 package com.ema.admin.modules.system.controller;
 
+import com.ema.admin.modules.system.service.SysUserService;
 import com.mybatisflex.core.paginate.Page;
 import com.ema.admin.modules.system.entity.SysDepartment;
 import com.ema.admin.modules.system.entity.SysUser;
 import com.ema.admin.modules.system.service.SysDepartmentService;
 import com.ema.admin.modules.system.vo.SysDepartmentQueryVo;
 import com.ema.admin.modules.system.vo.SysDepartmentVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
+import com.ema.common.exceptions.MyAssert;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -27,6 +31,8 @@ public class SysDepartmentController {
 
     @Autowired
     private SysDepartmentService sysDepartmentService;
+    @Autowired
+    private SysUserService sysUserService;
 
     /**
      * 添加。
@@ -36,6 +42,7 @@ public class SysDepartmentController {
      */
     @PostMapping("save")
     @ApiOperation("保存")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("部门信息") SysDepartment sysDepartment) {
         return sysDepartmentService.save(sysDepartment);
     }
@@ -48,7 +55,13 @@ public class SysDepartmentController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("主键") String id) {
+        boolean exists = sysDepartmentService.queryChain().eq(SysDepartment::getParentId, id)
+                .exists();
+        MyAssert.isTrue(!exists, "该部门下存在子部门,无法删除");
+        exists = sysUserService.queryChain().eq(SysUser::getDeptId, id).exists();
+        MyAssert.isTrue(!exists, "该部门下存在用户,无法删除");
         return sysDepartmentService.removeById(id);
     }
 
@@ -60,6 +73,7 @@ public class SysDepartmentController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("主键") SysDepartment sysDepartment) {
         return sysDepartmentService.updateById(sysDepartment);
     }

+ 10 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDictDataController.java

@@ -1,13 +1,17 @@
 package com.ema.admin.modules.system.controller;
 
+import cn.dev33.satoken.annotation.SaCheckRole;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSON;
 import cn.hutool.json.JSONUtil;
+import com.ema.admin.modules.system.enums.SysRoleEnum;
 import com.mybatisflex.core.paginate.Page;
 import com.ema.admin.modules.system.entity.SysDictData;
 import com.ema.admin.modules.system.service.SysDictDataService;
 import com.ema.admin.modules.system.vo.SysDictDataQueryVo;
 import com.ema.common.exceptions.MyAssert;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -38,6 +42,8 @@ public class SysDictDataController {
      */
     @PostMapping("save")
     @ApiOperation("保存系统字典值表")
+    @Logger(type = LogTypeEnum.SAVE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean save(@RequestBody @ApiParam("系统字典值表") SysDictData sysDictData) {
         SysDictData data = sysDictDataService.getByCode(sysDictData.getTypeCode(), sysDictData.getCode());
         MyAssert.isNull(data, "字典编码已存在");
@@ -52,6 +58,8 @@ public class SysDictDataController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键系统字典值表")
+    @Logger(type = LogTypeEnum.DELETE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean remove(@PathVariable @ApiParam("系统字典值表主键") String id) {
         return sysDictDataService.removeById(id);
     }
@@ -64,6 +72,8 @@ public class SysDictDataController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新系统字典值表")
+    @Logger(type = LogTypeEnum.UPDATE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean update(@RequestBody @ApiParam("系统字典值表主键") SysDictData sysDictData) {
         SysDictData data = sysDictDataService.getByCode(sysDictData.getTypeCode(), sysDictData.getCode());
         MyAssert.isTrue(data == null || data.getId().equals(sysDictData.getId()), "字典编码已存在");

+ 10 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysDictTypeController.java

@@ -1,9 +1,13 @@
 package com.ema.admin.modules.system.controller;
 
+import cn.dev33.satoken.annotation.SaCheckRole;
+import com.ema.admin.modules.system.enums.SysRoleEnum;
 import com.mybatisflex.core.paginate.Page;
 import com.ema.admin.modules.system.entity.SysDictType;
 import com.ema.admin.modules.system.service.SysDictTypeService;
 import com.ema.admin.modules.system.vo.SysDictTypeQueryVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -34,6 +38,8 @@ public class SysDictTypeController {
      */
     @PostMapping("save")
     @ApiOperation("保存系统字典类型表")
+    @Logger(type = LogTypeEnum.SAVE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean save(@RequestBody @ApiParam("系统字典类型表") SysDictType sysDictType) {
         return sysDictTypeService.save(sysDictType);
     }
@@ -46,6 +52,8 @@ public class SysDictTypeController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键系统字典类型表")
+    @Logger(type = LogTypeEnum.DELETE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean remove(@PathVariable @ApiParam("系统字典类型表主键") String id) {
         return sysDictTypeService.removeById(id);
     }
@@ -58,6 +66,8 @@ public class SysDictTypeController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新系统字典类型表")
+    @Logger(type = LogTypeEnum.UPDATE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean update(@RequestBody @ApiParam("系统字典类型表主键") SysDictType sysDictType) {
         return sysDictTypeService.updateById(sysDictType);
     }

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysFileController.java

@@ -9,6 +9,8 @@ import com.ema.admin.modules.system.service.SysAuthService;
 import com.ema.admin.modules.system.service.SysFileService;
 import com.ema.common.exceptions.MyAssert;
 import com.ema.common.utils.CodeUtil;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -50,6 +52,7 @@ public class SysFileController {
     @SneakyThrows
     @ApiOperation(value = "文件上传")
     @PostMapping("/upload/file")
+    @Logger(type = LogTypeEnum.SAVE)
     public SysFile upload(@NotNull MultipartFile file, Integer fileType) {
         return uploadFile(file);
     }
@@ -57,6 +60,7 @@ public class SysFileController {
     @SneakyThrows
     @ApiOperation(value = "批量文件上传")
     @PostMapping("/upload/batch")
+    @Logger(type = LogTypeEnum.SAVE)
     public List<SysFile> batchUpload(@NotNull MultipartFile[] files) {
         List<SysFile> sysFiles = CollUtil.newArrayList();
         for (MultipartFile file : files) {
@@ -96,6 +100,7 @@ public class SysFileController {
     @ApiOperation(value = "文件删除")
     @ApiImplicitParam(name = "url", value = "文件url", paramType = "query", required = true, dataTypeClass = String.class)
     @GetMapping("/delete")
+    @Logger(type = LogTypeEnum.DELETE)
     public void delete(@NotBlank String url) {
         fileStorageService.delete(url);
     }

+ 12 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysMenuController.java

@@ -1,11 +1,16 @@
 package com.ema.admin.modules.system.controller;
 
+import cn.dev33.satoken.annotation.SaCheckRole;
+import com.ema.admin.modules.system.enums.SysRoleEnum;
 import com.mybatisflex.core.paginate.Page;
 import com.ema.admin.modules.system.entity.SysMenu;
 import com.ema.admin.modules.system.service.SysMenuService;
 import com.ema.admin.modules.system.vo.SysMenuQueryVo;
 import com.ema.admin.modules.system.vo.SysMenuVo;
 import com.ema.common.domain.vo.ResultVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
+import com.ema.common.exceptions.MyAssert;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -34,6 +39,8 @@ public class SysMenuController {
      */
     @PostMapping("save")
     @ApiOperation("保存菜单权限表")
+    @Logger(type = LogTypeEnum.SAVE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean save(@RequestBody @ApiParam("菜单权限表") SysMenu sysMenu) {
         return sysMenuService.save(sysMenu);
     }
@@ -46,7 +53,10 @@ public class SysMenuController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键菜单权限表")
+    @Logger(type = LogTypeEnum.DELETE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean remove(@PathVariable @ApiParam("菜单权限表主键") String id) {
+        MyAssert.isTrue(!sysMenuService.hasChildren(id), "存在子菜单,无法删除");
         return sysMenuService.removeById(id);
     }
 
@@ -58,6 +68,8 @@ public class SysMenuController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新菜单权限表")
+    @Logger(type = LogTypeEnum.UPDATE)
+    @SaCheckRole(SysRoleEnum.ADMIN_ROLE_KEY)
     public boolean update(@RequestBody @ApiParam("菜单权限表主键") SysMenu sysMenu) {
         return sysMenuService.updateById(sysMenu);
     }

+ 14 - 1
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysRoleController.java

@@ -1,16 +1,20 @@
 package com.ema.admin.modules.system.controller;
 
 import cn.hutool.core.collection.CollUtil;
-import com.mybatisflex.core.paginate.Page;
 import com.ema.admin.modules.system.converter.SysRoleConverter;
 import com.ema.admin.modules.system.entity.SysRole;
+import com.ema.admin.modules.system.enums.SysRoleEnum;
 import com.ema.admin.modules.system.service.SysMenuService;
 import com.ema.admin.modules.system.service.SysRoleService;
 import com.ema.admin.modules.system.vo.SysMenuVo;
 import com.ema.admin.modules.system.vo.SysRoleInfoVo;
 import com.ema.admin.modules.system.vo.SysRoleQueryVo;
 import com.ema.admin.modules.system.vo.SysRoleSaveVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import com.ema.common.domain.enums.BooleanEnum;
+import com.ema.common.exceptions.MyAssert;
+import com.mybatisflex.core.paginate.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -46,6 +50,7 @@ public class SysRoleController {
      */
     @PostMapping("save")
     @ApiOperation("保存系统角色信息表")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("系统角色信息表") SysRoleSaveVo saveVo) {
         SysRole sysRole = sysRoleConverter.toSysRole(saveVo);
         boolean save = sysRoleService.save(sysRole);
@@ -63,8 +68,15 @@ public class SysRoleController {
      */
     @DeleteMapping("remove/{ids}")
     @ApiOperation("根据主键系统角色信息表")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("系统角色信息表主键") String ids) {
         List<String> idList = Arrays.asList(ids.split(","));
+        for (String id : idList) {
+            SysRole role = sysRoleService.getById(id);
+            MyAssert.notNull(role, "角色不存在");
+            MyAssert.isTrue(!SysRoleEnum.RoleKey.ADMIN.getRoleId().equals(role.getId()), "管理员角色不允许删除");
+            MyAssert.isTrue(!sysRoleService.hasUsers(id), "该角色下存在用户,无法删除");
+        }
         return sysRoleService.removeByIds(idList);
     }
 
@@ -76,6 +88,7 @@ public class SysRoleController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新系统角色信息表")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("系统角色信息表主键") SysRoleSaveVo sysRole) {
         if(CollUtil.isNotEmpty(sysRole.getMenuIds())){
             sysRoleService.assignMenusToRole(sysRole.getId(),sysRole.getMenuIds());

+ 7 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysTimersJobController.java

@@ -6,6 +6,8 @@ import com.ema.admin.modules.system.enums.SysTimerJobEnum;
 import com.ema.admin.modules.system.service.SysTimersJobService;
 import com.ema.admin.modules.system.vo.SysTimersJobQueryVo;
 import com.ema.common.tools.timer.TimerExeService;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -38,6 +40,7 @@ public class SysTimersJobController {
      */
     @PostMapping("save")
     @ApiOperation("保存定时任务")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("定时任务") SysTimersJob sysTimersJob) {
         boolean save = sysTimersJobService.save(sysTimersJob);
         if (save && SysTimerJobEnum.Status.RUNNING.getCode().equals(sysTimersJob.getJobStatus())) {
@@ -54,6 +57,7 @@ public class SysTimersJobController {
      */
     @DeleteMapping("remove/{id}")
     @ApiOperation("根据主键定时任务")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("定时任务主键") String id) {
         boolean remove = sysTimersJobService.removeById(id);
         if (remove) {
@@ -70,6 +74,7 @@ public class SysTimersJobController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新定时任务")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("定时任务主键") SysTimersJob sysTimersJob) {
         boolean update = sysTimersJobService.updateById(sysTimersJob);
         if (update && SysTimerJobEnum.Status.STOP.getCode().equals(sysTimersJob.getJobStatus())) {
@@ -118,6 +123,7 @@ public class SysTimersJobController {
 
     @PostMapping("stop/{id}")
     @ApiOperation("暂停定时任务")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean stop(@PathVariable @ApiParam("定时任务主键") String id) {
         SysTimersJob sysTimersJob = sysTimersJobService.getById(id);
         sysTimersJob.setJobStatus(SysTimerJobEnum.Status.STOP.getCode());
@@ -130,6 +136,7 @@ public class SysTimersJobController {
 
     @PostMapping("start/{id}")
     @ApiOperation("启动定时任务")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean start(@PathVariable @ApiParam("定时任务主键") String id) {
         SysTimersJob sysTimersJob = sysTimersJobService.getById(id);
         sysTimersJob.setJobStatus(SysTimerJobEnum.Status.RUNNING.getCode());

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/controller/SysUserController.java

@@ -15,6 +15,8 @@ import com.ema.admin.modules.system.service.SysUserService;
 import com.ema.admin.modules.system.vo.SysUserInfoVo;
 import com.ema.admin.modules.system.vo.SysUserQueryVo;
 import com.ema.admin.modules.system.vo.SysUserSaveVo;
+import com.ema.common.aspect.logger.LogTypeEnum;
+import com.ema.common.aspect.logger.Logger;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -54,6 +56,7 @@ public class SysUserController {
      */
     @PostMapping("save")
     @ApiOperation("保存系统用户信息表")
+    @Logger(type = LogTypeEnum.SAVE)
     public boolean save(@RequestBody @ApiParam("系统用户信息表") SysUserSaveVo saveVo) {
         saveVo.setPassword(SaSecureUtil.md5(saveVo.getPassword()));
         SysUser sysUser = sysUserConverter.toSysUser(saveVo);
@@ -72,6 +75,7 @@ public class SysUserController {
      */
     @DeleteMapping("remove/{ids}")
     @ApiOperation("根据主键系统用户信息表(多个可用,分隔)")
+    @Logger(type = LogTypeEnum.DELETE)
     public boolean remove(@PathVariable @ApiParam("系统用户信息表主键") String ids) {
         List<String> idList = Arrays.asList(ids.split(","));
         return sysUserService.removeByIds(idList);
@@ -85,6 +89,7 @@ public class SysUserController {
      */
     @PutMapping("update")
     @ApiOperation("根据主键更新系统用户信息表")
+    @Logger(type = LogTypeEnum.UPDATE)
     public boolean update(@RequestBody @ApiParam("系统用户信息表主键") SysUserSaveVo sysUser) {
         if(StrUtil.isNotBlank(sysUser.getPassword())){
             sysUser.setPassword(SaSecureUtil.md5(sysUser.getPassword()));

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/enums/SysRoleEnum.java

@@ -5,6 +5,11 @@ import lombok.Data;
 @Data
 public class SysRoleEnum {
 
+    /**
+     * 管理员角色标识
+     */
+    public static final String ADMIN_ROLE_KEY = "surper-admin";
+
 
     /**
      * 角色标识枚举

+ 7 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/service/SysMenuService.java

@@ -53,4 +53,11 @@ public interface SysMenuService extends IService<SysMenu> {
      * @return
      */
     List<SysMenu> getList(String status);
+
+    /**
+     * 判断是否存在子菜单
+     * @param menuId 菜单ID
+     * @return 是否存在
+     */
+    boolean hasChildren(String menuId);
 }

+ 7 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/service/SysRoleService.java

@@ -37,4 +37,11 @@ public interface SysRoleService extends IService<SysRole> {
      * @param menuIds 菜单id列表
      */
     void assignMenusToRole(String roleId, List<String> menuIds);
+
+    /**
+     * 判断角色是否有关联用户
+     * @param roleId 角色ID
+     * @return 是否有关联用户
+     */
+    boolean hasUsers(String roleId);
 }

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/service/impl/SysMenuServiceImpl.java

@@ -90,4 +90,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>  imp
                 .eq(SysMenu::getStatus, status, Objects.nonNull(status))
                 .orderBy(SysMenu::getSort).asc().list();
     }
+
+    @Override
+    public boolean hasChildren(String menuId) {
+        return this.queryChain().eq(SysMenu::getParentId, menuId).exists();
+    }
 }

+ 5 - 0
ema-admin/src/main/java/com/ema/admin/modules/system/service/impl/SysRoleServiceImpl.java

@@ -76,4 +76,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole>  imp
         sysRoleMenuService.saveBatch(roleMenus);
     }
 
+    @Override
+    public boolean hasUsers(String roleId) {
+        return sysUserRoleService.queryChain().eq(SysUserRole::getRoleId, roleId).exists();
+    }
+
 }

+ 1 - 1
ema-common/src/main/java/com/ema/common/aspect/logger/LogTypeEnum.java

@@ -12,7 +12,7 @@ public enum LogTypeEnum {
     //日志类型(0:登录;1:查询;2:新增;3:修改;4:删除;5:登出 ;6:导出;7:审核 )
     LOGIN("0", "登录"),
     QUERY("1", "查询"),
-    ADD("2", "新增"),
+    SAVE("2", "新增"),
     UPDATE("3", "修改"),
     DELETE("4", "删除"),
     LOGOUT("5", "登出"),