getDeptList(DeptListQry qry) {
return deptService.list(qry);
@@ -89,8 +96,6 @@ public class DeptController {
* @return
*/
@GetMapping("detail/{id}")
- //@Operation(summary = "获得部门信息")
- //@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('system:dept:query')")
public DeptCO detail(@PathVariable("id") Long id) {
return deptService.detail(id);
diff --git a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/MenuController.java b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/MenuController.java
index f3256efe3b421ef6e4c0864d6e98c7da02682307..7c057b938bb66a24486449686a9c0a5d5ca694c2 100644
--- a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/MenuController.java
+++ b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/MenuController.java
@@ -1,6 +1,8 @@
package com.xgblack.cool.module.system.web;
+import com.mzt.logapi.starter.annotation.LogRecord;
import com.xgblack.cool.module.system.api.MenuServiceI;
+import com.xgblack.cool.module.system.common.constans.ModuleType;
import com.xgblack.cool.module.system.dto.permission.MenuAddCmd;
import com.xgblack.cool.module.system.dto.permission.MenuEditCmd;
import com.xgblack.cool.module.system.dto.permission.MenuListQry;
@@ -33,6 +35,9 @@ public class MenuController {
*/
@PostMapping
//@PreAuthorize("@ss.hasPermission('system:menu:add')")
+ @LogRecord(success = "创建菜单, 名称「{{#cmd.name}}」",
+ fail = "创建菜单失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.MENU, bizNo = "{{#_ret}}")
public Long add(@Valid @RequestBody MenuAddCmd cmd) {
return menuService.add(cmd);
}
@@ -43,6 +48,10 @@ public class MenuController {
*/
@PutMapping
//@PreAuthorize("@ss.hasPermission('system:menu:edit')")
+ @LogRecord(success = "修改菜单, 名称「{{#cmd.name}}」",
+ fail = "修改菜单失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.MENU, bizNo = "{{#cmd.id}}")
public void edit(@Valid @RequestBody MenuEditCmd cmd) {
menuService.edit(cmd);
}
@@ -52,14 +61,17 @@ public class MenuController {
* @param id
*/
@DeleteMapping("{id}")
- //@Parameter(name = "id", description = "菜单编号", required= true, example = "1024")
//@PreAuthorize("@ss.hasPermission('system:menu:remove')")
+ @LogRecord(success = "删除菜单, 编号「{{#id}}」",
+ fail = "删除菜单失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.MENU, bizNo = "{{#id}}")
public void remove(@PathVariable("id") Long id) {
menuService.remove(id);
}
/**
* 获取菜单列表
+ * 用于【菜单管理】界面
* @param qry
* @return
*/
@@ -72,16 +84,17 @@ public class MenuController {
/**
* 获取菜单精简信息列表
+ *
+ * 只包含被开启的菜单,用于【角色分配菜单】功能的选项。
+ * 在多租户的场景下,会只返回租户所在套餐有的菜单
* @return
*/
@GetMapping({"/list-all-simple", "simple-list"})
- //@Operation(summary = "获取菜单精简信息列表", description = "只包含被开启的菜单,用于【角色分配菜单】功能的选项。" + "在多租户的场景下,会只返回租户所在套餐有的菜单")
public List getSimpleList() {
return menuService.getSimpleListByTenant();
}
@GetMapping("detail/{id}")
- //@Operation(summary = "获取菜单信息")
//@PreAuthorize("@ss.hasPermission('system:menu:query')")
public MenuCO detail(@PathVariable Long id) {
return menuService.detail(id);
diff --git a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/PostController.java b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/PostController.java
index 1f28e3b8d068e65c136917bb00f38170e36fd416..865ab49ee4867bc36a2015aa3ddf35f796472355 100644
--- a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/PostController.java
+++ b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/PostController.java
@@ -1,7 +1,9 @@
package com.xgblack.cool.module.system.web;
+import com.mzt.logapi.starter.annotation.LogRecord;
import com.xgblack.cool.framework.common.pojo.dto.PageResult;
import com.xgblack.cool.module.system.api.PostServiceI;
+import com.xgblack.cool.module.system.common.constans.ModuleType;
import com.xgblack.cool.module.system.dto.company.post.PostAddCmd;
import com.xgblack.cool.module.system.dto.company.post.PostEditCmd;
import com.xgblack.cool.module.system.dto.company.post.PostPageQry;
@@ -31,8 +33,10 @@ public class PostController {
* @param cmd
*/
@PostMapping
- //@Operation(summary = "创建岗位")
//@PreAuthorize("@ss.hasPermission('system:post:create')")
+ @LogRecord(success = "创建岗位, 名称「{{#cmd.name}}」",
+ fail = "创建岗位失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.POST, bizNo = "{{#_ret}}")
public Long add(@Valid @RequestBody PostAddCmd cmd) {
return postService.add(cmd);
}
@@ -42,8 +46,11 @@ public class PostController {
* @param cmd
*/
@PutMapping
- //@Operation(summary = "修改岗位")
//@PreAuthorize("@ss.hasPermission('system:post:update')")
+ @LogRecord(success = "修改岗位, 名称「{{#cmd.name}}」",
+ fail = "修改岗位失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.POST, bizNo = "{{#cmd.id}}")
public void edit(@Valid @RequestBody PostEditCmd cmd) {
postService.edit(cmd);
}
@@ -53,8 +60,10 @@ public class PostController {
* @param id
*/
@DeleteMapping("{id}")
- //@Operation(summary = "删除岗位")
//@PreAuthorize("@ss.hasPermission('system:post:delete')")
+ @LogRecord(success = "删除岗位, 编号「{{#id}}」",
+ fail = "删除岗位失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.POST, bizNo = "{{#id}}")
public void remove(@PathVariable("id") Long id) {
postService.remove(id);
}
@@ -65,7 +74,6 @@ public class PostController {
* @return
*/
@GetMapping(value = "detail/{id}")
- //@Operation(summary = "获得岗位信息")
//@Parameter(name = "id", description = "岗位编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('system:post:query')")
public PostCO detail(@PathVariable("id") Long id) {
@@ -74,10 +82,10 @@ public class PostController {
/**
* 获取岗位精简列表
+ * 只包含被开启的岗位,主要用于前端的下拉选项
* @return
*/
@GetMapping(value = {"/list-all-simple", "simple-list"})
- //@Operation(summary = "获取岗位全列表", description = "只包含被开启的岗位,主要用于前端的下拉选项")
public List getSimpleList() {
// 获得岗位列表,只要开启状态的
return postService.getSimpleList();
@@ -89,7 +97,6 @@ public class PostController {
* @return
*/
@GetMapping("/page")
- //@Operation(summary = "获得岗位分页列表")
//@PreAuthorize("@ss.hasPermission('system:post:query')")
public PageResult page(@Validated PostPageQry qry) {
return postService.page(qry);
diff --git a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/RoleController.java b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/RoleController.java
index 6f80bf7fc247594b1df91f25a4510a124465f227..4c840e4de378663b4edd0eb5da2aeddb46b2f0fd 100644
--- a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/RoleController.java
+++ b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/RoleController.java
@@ -1,14 +1,15 @@
package com.xgblack.cool.module.system.web;
+import com.mzt.logapi.starter.annotation.LogRecord;
import com.xgblack.cool.framework.common.pojo.dto.PageResult;
import com.xgblack.cool.module.system.api.RoleServiceI;
+import com.xgblack.cool.module.system.common.constans.ModuleType;
import com.xgblack.cool.module.system.dto.permission.RoleAddCmd;
import com.xgblack.cool.module.system.dto.permission.RoleEditCmd;
import com.xgblack.cool.module.system.dto.permission.RoleEditStatusCmd;
import com.xgblack.cool.module.system.dto.permission.RolePageQry;
import com.xgblack.cool.module.system.dto.permission.clientobject.RoleCO;
import com.xgblack.cool.module.system.dto.permission.clientobject.RoleSimpleCO;
-import com.xgblack.cool.module.system.gateway.database.dataobject.RoleDO;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
@@ -36,6 +37,9 @@ public class RoleController {
*/
@PostMapping
//@PreAuthorize("@ss.hasPermission('system:role:create')")
+ @LogRecord(success = "创建角色, 名称「{{#cmd.name}}」",
+ fail = "创建角色失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.ROLE, bizNo = "{{#_ret}}")
public Long add(@Valid @RequestBody RoleAddCmd cmd) {
return roleService.add(cmd);
}
@@ -46,6 +50,10 @@ public class RoleController {
*/
@PutMapping
//@PreAuthorize("@ss.hasPermission('system:role:update')")
+ @LogRecord(success = "修改角色, 名称「{{#cmd.name}}」",
+ fail = "修改角色失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.ROLE, bizNo = "{{#cmd.id}}")
public void edit(@Valid @RequestBody RoleEditCmd cmd) {
roleService.edit(cmd);
}
@@ -56,6 +64,10 @@ public class RoleController {
*/
@PutMapping("/update-status")
//@PreAuthorize("@ss.hasPermission('system:role:update')")
+ @LogRecord(success = "修改角色状态, 名称「{{#cmd.name}}」",
+ fail = "修改角色状态失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.ROLE, bizNo = "{{#cmd.id}}")
public void editStatus(@Valid @RequestBody RoleEditStatusCmd cmd) {
roleService.editStatus(cmd);
}
@@ -66,6 +78,9 @@ public class RoleController {
*/
@DeleteMapping("{id}")
//@PreAuthorize("@ss.hasPermission('system:role:delete')")
+ @LogRecord(success = "删除角色, 编号「{{#id}}」",
+ fail = "删除角色失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.ROLE, bizNo = "{{#id}}")
public void remove(@PathVariable("id") Long id) {
roleService.remove(id);
}
@@ -92,8 +107,12 @@ public class RoleController {
return roleService.page(qry);
}
+ /**
+ * 获取角色精简信息列表
+ * 只包含被开启的角色,主要用于前端的下拉选项
+ * @return
+ */
@GetMapping({"/list-all-simple", "/simple-list"})
- //@Operation(summary = "获取角色精简信息列表", description = "只包含被开启的角色,主要用于前端的下拉选项")
public List getSimpleList() {
return roleService.getSimpleList();
}
diff --git a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/UserController.java b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/UserController.java
index e154f52f7cb50fd7451c36f949e381bd956d6e2b..1db31e55ddeffc0f4c1ad12aeff6f9851fc6489c 100644
--- a/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/UserController.java
+++ b/cool-module-system/cool-module-system-adapter/src/main/java/com/xgblack/cool/module/system/web/UserController.java
@@ -1,7 +1,9 @@
package com.xgblack.cool.module.system.web;
+import com.mzt.logapi.starter.annotation.LogRecord;
import com.xgblack.cool.framework.common.pojo.dto.PageResult;
import com.xgblack.cool.module.system.api.UserServiceI;
+import com.xgblack.cool.module.system.common.constans.ModuleType;
import com.xgblack.cool.module.system.dto.user.*;
import com.xgblack.cool.module.system.dto.user.clientobject.UserCO;
import com.xgblack.cool.module.system.dto.user.clientobject.UserSimpleDTO;
@@ -31,6 +33,9 @@ public class UserController {
*/
@PostMapping
//@PreAuthorize("@ss.hasPermission('system:user:create')")
+ @LogRecord(success = "新增用户, 用户名「{{#cmd.username}}」,昵称「{{#cmd.nickname}}」",
+ fail = "新增用户失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.USER, bizNo = "{{#_ret}}")
public Long add(@Validated @RequestBody UserAddCmd cmd) {
return userService.add(cmd);
}
@@ -40,8 +45,11 @@ public class UserController {
* @param cmd
*/
@PutMapping
- //@Operation(summary = "修改用户")
//@PreAuthorize("@ss.hasPermission('system:user:update')")
+ @LogRecord(success = "修改用户, 名称「{{#cmd.name}}」",
+ fail = "修改用户失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.USER, bizNo = "{{#cmd.id}}")
public void edit(@Validated @RequestBody UserEditCmd cmd) {
userService.edit(cmd);
}
@@ -51,8 +59,10 @@ public class UserController {
* @param id 用户id
*/
@DeleteMapping("{id}")
- //@Operation(summary = "删除用户")
//@PreAuthorize("@ss.hasPermission('system:user:delete')")
+ @LogRecord(success = "删除用户, 编号「{{#id}}」",
+ fail = "删除用户失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.USER, bizNo = "{{#id}}")
public void delete(@PathVariable Long id) {
userService.remove(id);
}
@@ -62,8 +72,10 @@ public class UserController {
* @param cmd
*/
@PutMapping("/update-password")
- //@Operation(summary = "重置用户密码")
//@PreAuthorize("@ss.hasPermission('system:user:update-password')")
+ @LogRecord(success = "修改用户密码, 编号「{{#cmd.id}}」",
+ fail = "修改用户密码失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.USER, bizNo = "{{#cmd.id}}")
public void editPassword(@Validated @RequestBody UserEditPasswordCmd cmd) {
userService.editPassword(cmd);
}
@@ -73,19 +85,21 @@ public class UserController {
* @param cmd
*/
@PutMapping("/update-locked")
- //@Operation(summary = "修改用户状态")
//@PreAuthorize("@ss.hasPermission('system:user:update')")
+ @LogRecord(success = "修改用户锁定状态, 编号「{{#cmd.id}}」",
+ fail = "修改用户锁定状态失败,失败原因:「{{#_errorMsg}}」",
+ extra = "{{#cmd.toJson()}}",
+ type = ModuleType.USER, bizNo = "{{#cmd.id}}")
public void editLocked(@Validated @RequestBody UserEditLockedCmd cmd) {
userService.editLocked(cmd);
}
/**
- * 分页查询
+ * 获得用户分页列表
* @param qry
* @return
*/
@GetMapping("/page")
- //@Operation(summary = "获得用户分页列表")
//@PreAuthorize("@ss.hasPermission('system:user:list')")
public PageResult page(@Validated UserPageQry qry) {
// 获得用户分页列表
@@ -103,10 +117,10 @@ public class UserController {
/**
* 获取用户精简信息列表
+ * 只包含被开启的用户,主要用于前端的下拉选项
* @return
*/
@GetMapping({"/list-all-simple", "/simple-list"})
- //@Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
public List getSimpleUserList() {
//TODO
//List list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus());
@@ -121,8 +135,6 @@ public class UserController {
* @return
*/
@GetMapping("detail/{id}")
- //@Operation(summary = "获得用户详情")
- //@Parameter(name = "id", description = "编号", required = true, example = "1024")
//@PreAuthorize("@ss.hasPermission('system:user:query')")
public UserCO detail(@PathVariable("id") Long id) {
/*AdminUserDO user = userService.getUser(id);
@@ -152,7 +164,6 @@ public class UserController {
* 获得导入用户模板
*/
@GetMapping("/get-import-template")
- //@Operation(summary = "获得导入用户模板")
public void importTemplate(HttpServletResponse response) {
// 手动创建导出 demo
/*List list = Arrays.asList(
@@ -174,6 +185,9 @@ public class UserController {
*/
@PostMapping("/import")
//@PreAuthorize("@ss.hasPermission('system:user:import')")
+ @LogRecord(success = "导入用户, ",//TODO
+ fail = "导入用户失败,失败原因:「{{#_errorMsg}}」",
+ type = ModuleType.USER, bizNo = "")
public Object importExcel(@RequestParam("file") MultipartFile file, @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
/*List list = ExcelUtils.read(file, UserImportExcelVO.class);
return success(userService.importUserList(list, updateSupport));*/
diff --git a/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/common/constans/ModuleType.java b/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/common/constans/ModuleType.java
new file mode 100644
index 0000000000000000000000000000000000000000..44d3d20fccabfe4129c6e897bf9e364395454142
--- /dev/null
+++ b/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/common/constans/ModuleType.java
@@ -0,0 +1,21 @@
+package com.xgblack.cool.module.system.common.constans;
+
+/**
+ * 功能模块常量
+ * @author xg black
+ */
+
+public interface ModuleType {
+
+ String DEPT = "部门";
+
+ String ROLE = "角色";
+
+ String USER = "用户";
+
+ String MENU = "菜单";
+
+ String DICT = "字典";
+
+ String POST = "岗位";
+}
diff --git a/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/dto/company/dept/DeptAddCmd.java b/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/dto/company/dept/DeptAddCmd.java
index e3f227634e00fd77c7700dcdeef0e26247937c0b..e054121168d418ba7b1c5f06336214f36cdc02f8 100644
--- a/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/dto/company/dept/DeptAddCmd.java
+++ b/cool-module-system/cool-module-system-client/src/main/java/com/xgblack/cool/module/system/dto/company/dept/DeptAddCmd.java
@@ -20,9 +20,6 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class DeptAddCmd extends Command {
- //@Schema(description = "部门编号", example = "1024")
- //private Long id;
-
/** 部门名称 */
@NotBlank(message = "部门名称不能为空")
@Size(max = 30, message = "部门名称长度不能超过 30 个字符")
diff --git a/cool-module-system/cool-module-system-infrastructure/src/main/java/com/xgblack/cool/module/system/gateway/UserGatewayImpl.java b/cool-module-system/cool-module-system-infrastructure/src/main/java/com/xgblack/cool/module/system/gateway/UserGatewayImpl.java
index a7ba83aa88483cf831415f8ce152dfb13e8159a2..b5fd9b8bdd033bde52acceeabf21370afb446ce1 100644
--- a/cool-module-system/cool-module-system-infrastructure/src/main/java/com/xgblack/cool/module/system/gateway/UserGatewayImpl.java
+++ b/cool-module-system/cool-module-system-infrastructure/src/main/java/com/xgblack/cool/module/system/gateway/UserGatewayImpl.java
@@ -89,6 +89,35 @@ public class UserGatewayImpl implements UserGateway, RemoteUserService {
.update();
}
+ @Override
+ public UserInfo info(Long userId) {
+ SysUser sysUser = userMapper.selectOneWithRelationsByIdAs(userId, SysUser.class);
+ if (sysUser == null) {
+ log.error("用户不存在,用户id={}", userId);
+ return null;
+ }
+ UserInfo info = new UserInfo();
+ // 设置角色列表 (ID)
+ Set roleIds = permissionGateway.getRoleIdsByUserId(sysUser.getId());
+ // 权限列表(menu.permission)
+ Set permissions = new HashSet<>();
+ Set menuIds = new HashSet<>();
+ roleIds.forEach(roleId -> {
+ Set menuIdSet = permissionGateway.getMenuIdsByRoleId(roleId);
+ menuIds.addAll(menuIdSet);
+ });
+
+ if (CollUtil.isNotEmpty(menuIds)) {
+ List menuDOS = menuMapper.selectListByIds(menuIds);
+ permissions = menuDOS.stream().map(MenuDO::getPermission).collect(Collectors.toSet());
+ }
+ info.setSysUser(sysUser)
+ .setRoles(roleIds)
+ .setPermissions(permissions);
+
+ return info;
+ }
+
@Override
public Long create(User user) {
UserDO userDO = convertor.toDataObject(user);
diff --git a/cool-server/src/main/resources/application.yaml b/cool-server/src/main/resources/application.yaml
index c247fbb0ef42177811338f787c60d17c7211bb52..bb6d073bec5d2223c79a4990dfb2d60deadb04fb 100644
--- a/cool-server/src/main/resources/application.yaml
+++ b/cool-server/src/main/resources/application.yaml
@@ -29,6 +29,7 @@ cc:
security:
mock-enable: true
mock-secret: coolcode
+ mock-sms-code: 223311
response:
# 全局的参数校验错误码,默认等于default-error-code=-1
default-validate-error-code: -1