Commit 5410b72f876f575d67ba99630eead1ab448ff57a

Authored by “谢茂盛”
1 parent 69a3e8e7

init: 系统管理相关

Showing 24 changed files with 936 additions and 55 deletions
src/main/java/com/order/erp/config/AdminMetaObjectHandler.java
1 1 package com.order.erp.config;
2 2  
3 3 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  4 +import com.order.erp.common.constant.Constant;
  5 +import com.order.erp.common.utils.SecurityUtils;
4 6 import lombok.extern.slf4j.Slf4j;
5 7 import org.apache.ibatis.reflection.MetaObject;
  8 +import org.springframework.security.core.userdetails.UserDetails;
6 9 import org.springframework.stereotype.Component;
7 10  
8 11 import java.time.LocalDateTime;
... ... @@ -26,27 +29,27 @@ public class AdminMetaObjectHandler implements MetaObjectHandler {
26 29 LocalDateTime now = LocalDateTime.now();
27 30 this.strictInsertFill(metaObject, CREATE_TIME, LocalDateTime.class, now);
28 31 this.strictInsertFill(metaObject, MODIFY_TIME, LocalDateTime.class, now);
29   -// this.strictInsertFill(metaObject, ENABLE_FLAG, Integer.class, Constant.ENABLE_TEN);
30   -// LoginUserDetail loginUser = UserUtils.getLoginUser();
31   -// if (null == loginUser) {
32   -// return;
33   -// }
34   -//
35   -// this.strictInsertFill(metaObject, CREATE_BY, String.class, loginUser.getRealName());
36   -//
37   -// this.strictInsertFill(metaObject, MODIFY_BY, String.class, loginUser.getRealName());
  32 + this.strictInsertFill(metaObject, ENABLE_FLAG, Integer.class, Constant.ENABLE_TEN);
  33 + UserDetails loginUser = SecurityUtils.getUserDetails();
  34 + if (null == loginUser) {
  35 + return;
  36 + }
  37 +
  38 + this.strictInsertFill(metaObject, CREATE_BY, String.class, loginUser.getUsername());
  39 +
  40 + this.strictInsertFill(metaObject, MODIFY_BY, String.class, loginUser.getUsername());
38 41  
39 42 }
40 43  
41 44 @Override
42 45 public void updateFill(MetaObject metaObject) {
43 46  
44   - this.strictInsertFill(metaObject, MODIFY_TIME, LocalDateTime.class, LocalDateTime.now());
  47 + this.strictUpdateFill(metaObject, MODIFY_TIME, LocalDateTime.class, LocalDateTime.now());
45 48  
46   -// LoginUserDetail loginUser = UserUtils.getLoginUser();
47   -// if (null == loginUser) {
48   -// return;
49   -// }
50   -// this.strictInsertFill(metaObject, MODIFY_BY, String.class, loginUser.getRealName());
  49 + UserDetails loginUser = SecurityUtils.getUserDetails();
  50 + if (null == loginUser) {
  51 + return;
  52 + }
  53 + this.strictUpdateFill(metaObject, MODIFY_BY, String.class, loginUser.getUsername());
51 54 }
52 55 }
... ...
src/main/java/com/order/erp/controller/DeptController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.admin.AdminDeptQueryVO;
  5 +import com.order.erp.domain.vo.admin.AdminDeptVO;
  6 +import com.order.erp.log.Log;
  7 +import com.order.erp.service.admin.AdminDeptService;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import org.springframework.security.access.prepost.PreAuthorize;
  11 +import org.springframework.validation.annotation.Validated;
  12 +import org.springframework.web.bind.annotation.*;
  13 +
  14 +import javax.annotation.Resource;
  15 +
  16 +/**
  17 + * @date 2019-03-25
  18 + */
  19 +@RestController
  20 +@Api(tags = "系统:部门管理")
  21 +@RequestMapping("/order/erp/depts")
  22 +public class DeptController {
  23 +
  24 + @Resource
  25 + private AdminDeptService deptService;
  26 +
  27 +
  28 + @Log("查询部门")
  29 + @ApiOperation("查询部门")
  30 + @PostMapping(value = "/list_by_page")
  31 + @PreAuthorize("@el.check('user:list','dept:list')")
  32 + public ServerResult listByPage(@RequestBody @Validated AdminDeptQueryVO queryVO) {
  33 + return deptService.list(queryVO);
  34 + }
  35 +
  36 + @Log("新增部门")
  37 + @ApiOperation("新增部门")
  38 + @PostMapping("/add")
  39 + @PreAuthorize("@el.check('dept:add')")
  40 + public ServerResult add(@RequestBody @Validated AdminDeptVO deptVO) {
  41 + return deptService.add(deptVO);
  42 + }
  43 +
  44 + @Log("修改部门")
  45 + @ApiOperation("修改部门")
  46 + @PutMapping
  47 + @PreAuthorize("@el.check('dept:edit')")
  48 + public ServerResult edit(@RequestBody @Validated AdminDeptVO deptVO) {
  49 + return deptService.edit(deptVO);
  50 + }
  51 +
  52 + @Log("删除部门")
  53 + @ApiOperation("删除部门")
  54 + @DeleteMapping
  55 + @PreAuthorize("@el.check('dept:del')")
  56 + public ServerResult delete(@RequestBody @Validated AdminDeptQueryVO queryVO) {
  57 + return ServerResult.success(deptService.deleteById(queryVO));
  58 + }
  59 +}
0 60 \ No newline at end of file
... ...
src/main/java/com/order/erp/controller/JobController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.admin.AdminJobQueryVO;
  5 +import com.order.erp.domain.vo.admin.AdminJobVO;
  6 +import com.order.erp.log.Log;
  7 +import com.order.erp.service.admin.AdminJobService;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import org.springframework.security.access.prepost.PreAuthorize;
  11 +import org.springframework.validation.annotation.Validated;
  12 +import org.springframework.web.bind.annotation.PostMapping;
  13 +import org.springframework.web.bind.annotation.RequestBody;
  14 +import org.springframework.web.bind.annotation.RequestMapping;
  15 +import org.springframework.web.bind.annotation.RestController;
  16 +
  17 +import javax.annotation.Resource;
  18 +
  19 +/**
  20 + * @date 2019-03-29
  21 + */
  22 +@Api(tags = "系统:岗位管理")
  23 +@RestController
  24 +@RequestMapping("/order/erp/jobs")
  25 +public class JobController {
  26 +
  27 + @Resource
  28 + private AdminJobService jobService;
  29 +
  30 + @Log("查询岗位")
  31 + @ApiOperation("查询岗位")
  32 + @PostMapping(value = "/list_by_page")
  33 + @PreAuthorize("@el.check('job:list','user:list')")
  34 + public ServerResult listByPage(@RequestBody @Validated AdminJobQueryVO queryVO) {
  35 + return jobService.list(queryVO);
  36 + }
  37 +
  38 + @Log("新增岗位")
  39 + @ApiOperation("新增岗位")
  40 + @PostMapping(value = "/add")
  41 + @PreAuthorize("@el.check('job:add')")
  42 + public ServerResult add(@RequestBody @Validated AdminJobVO jobVO) {
  43 + return jobService.add(jobVO);
  44 + }
  45 +
  46 + @Log("修改岗位")
  47 + @ApiOperation("修改岗位")
  48 + @PostMapping(value = "/edit")
  49 + @PreAuthorize("@el.check('job:edit')")
  50 + public ServerResult edit(@RequestBody @Validated AdminJobVO jobVO) {
  51 + return jobService.edit(jobVO);
  52 + }
  53 +
  54 + @Log("删除岗位")
  55 + @ApiOperation("删除岗位")
  56 + @PostMapping(value = "/delete")
  57 + @PreAuthorize("@el.check('job:del')")
  58 + public ServerResult delete(@RequestBody @Validated AdminJobQueryVO queryVO) {
  59 + return jobService.deleteById(queryVO);
  60 + }
  61 +}
0 62 \ No newline at end of file
... ...
src/main/java/com/order/erp/controller/MenuController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.admin.AdminMenuQueryVO;
  5 +import com.order.erp.domain.vo.admin.AdminMenuVO;
  6 +import com.order.erp.log.Log;
  7 +import com.order.erp.service.admin.AdminMenuService;
  8 +import io.swagger.annotations.Api;
  9 +import io.swagger.annotations.ApiOperation;
  10 +import org.springframework.security.access.prepost.PreAuthorize;
  11 +import org.springframework.validation.annotation.Validated;
  12 +import org.springframework.web.bind.annotation.PostMapping;
  13 +import org.springframework.web.bind.annotation.RequestBody;
  14 +import org.springframework.web.bind.annotation.RequestMapping;
  15 +import org.springframework.web.bind.annotation.RestController;
  16 +
  17 +import javax.annotation.Resource;
  18 +
  19 +/**
  20 + * @date 2018-12-03
  21 + */
  22 +@Api(tags = "系统:菜单管理")
  23 +@RestController
  24 +@RequestMapping("/order/erp/menus")
  25 +@SuppressWarnings("unchecked")
  26 +public class MenuController {
  27 +
  28 + @Resource
  29 + private AdminMenuService menuService;
  30 +
  31 + @ApiOperation("获取前端所需菜单")
  32 + @PostMapping(value = "/build")
  33 + public ServerResult buildMenus() {
  34 + return ServerResult.success();
  35 + }
  36 +
  37 + @ApiOperation("返回全部的菜单")
  38 + @PostMapping(value = "/tree")
  39 + @PreAuthorize("@el.check('menu:list','roles:list')")
  40 + public ServerResult getMenuTree() {
  41 + return ServerResult.success();
  42 + }
  43 +
  44 + @Log("查询菜单")
  45 + @ApiOperation("查询菜单")
  46 + @PostMapping(value = "/all")
  47 + @PreAuthorize("@el.check('menu:list')")
  48 + public ServerResult all(@RequestBody @Validated AdminMenuQueryVO queryVO) {
  49 + return menuService.all(queryVO);
  50 + }
  51 +
  52 + @Log("新增菜单")
  53 + @ApiOperation("新增菜单")
  54 + @PostMapping(value = "/add")
  55 + @PreAuthorize("@el.check('menu:add')")
  56 + public ServerResult add(@RequestBody @Validated AdminMenuVO menuVO) {
  57 + return menuService.add(menuVO);
  58 + }
  59 +
  60 + @Log("修改菜单")
  61 + @ApiOperation("修改菜单")
  62 + @PostMapping(value = "/edit")
  63 + @PreAuthorize("@el.check('menu:edit')")
  64 + public ServerResult edit(@RequestBody @Validated AdminMenuVO menuVO) {
  65 + return menuService.edit(menuVO);
  66 + }
  67 +
  68 + @Log("删除菜单")
  69 + @ApiOperation("删除菜单")
  70 + @PostMapping(value = "/delete")
  71 + @PreAuthorize("@el.check('menu:del')")
  72 + public ServerResult delete(@RequestBody @Validated AdminMenuQueryVO queryVO) {
  73 + return menuService.deleteById(queryVO);
  74 + }
  75 +}
... ...
src/main/java/com/order/erp/controller/RoleController.java
1 1 package com.order.erp.controller;
2 2  
3 3 import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.domain.vo.admin.AdminAuthRoleVO;
4 5 import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
5 6 import com.order.erp.domain.vo.admin.AdminRoleVO;
6 7 import com.order.erp.log.Log;
... ... @@ -61,7 +62,7 @@ public class RoleController {
61 62 @PostMapping(value = "/add")
62 63 @PreAuthorize("@el.check('roles:add')")
63 64 public ServerResult add(@RequestBody @Validated AdminRoleVO roleVO) {
64   - return ServerResult.success();
  65 + return roleService.add(roleVO);
65 66 }
66 67  
67 68 @Log("修改角色")
... ... @@ -69,15 +70,15 @@ public class RoleController {
69 70 @PostMapping(value = "/edit")
70 71 @PreAuthorize("@el.check('roles:edit')")
71 72 public ServerResult edit(@RequestBody @Validated AdminRoleVO roleVO) {
72   - return ServerResult.success();
  73 + return roleService.edit(roleVO);
73 74 }
74 75  
75   - @Log("修改角色菜单")
76   - @ApiOperation("修改角色菜单")
77   - @PostMapping(value = "/edit_menu")
  76 + @Log("授权角色菜单")
  77 + @ApiOperation("授权角色菜单")
  78 + @PostMapping(value = "/auth_menu")
78 79 @PreAuthorize("@el.check('roles:edit')")
79   - public ServerResult editMenu(@RequestBody @Validated AdminRoleVO roleVO) {
80   - return ServerResult.success();
  80 + public ServerResult authMenu(@RequestBody @Validated AdminAuthRoleVO roleVO) {
  81 + return roleService.authMenu(roleVO);
81 82 }
82 83  
83 84 @Log("删除角色")
... ... @@ -85,6 +86,6 @@ public class RoleController {
85 86 @PostMapping(value = "/delete")
86 87 @PreAuthorize("@el.check('roles:del')")
87 88 public ServerResult delete(@RequestBody @Validated AdminRoleQueryVO queryVO) {
88   - return ServerResult.success();
  89 + return roleService.deleteById(queryVO);
89 90 }
90 91 }
... ...
src/main/java/com/order/erp/controller/UserController.java 0 → 100644
  1 +package com.order.erp.controller;
  2 +
  3 +import com.order.erp.common.constant.ServerResult;
  4 +import com.order.erp.config.DataScope;
  5 +import com.order.erp.domain.vo.admin.AdminAuthUserVO;
  6 +import com.order.erp.domain.vo.admin.AdminUserQueryVO;
  7 +import com.order.erp.domain.vo.admin.AdminUserVO;
  8 +import com.order.erp.log.Log;
  9 +import com.order.erp.service.admin.AdminUserService;
  10 +import io.swagger.annotations.Api;
  11 +import io.swagger.annotations.ApiOperation;
  12 +import org.springframework.beans.factory.annotation.Value;
  13 +import org.springframework.security.access.prepost.PreAuthorize;
  14 +import org.springframework.validation.annotation.Validated;
  15 +import org.springframework.web.bind.annotation.*;
  16 +import org.springframework.web.multipart.MultipartFile;
  17 +
  18 +import javax.annotation.Resource;
  19 +
  20 +/**
  21 + * @date 2018-11-23
  22 + */
  23 +@Api(tags = "系统:用户管理")
  24 +@RestController
  25 +@RequestMapping("/order/erp/users")
  26 +public class UserController {
  27 +
  28 + @Value("${rsa.private_key}")
  29 + private String privateKey;
  30 +
  31 + @Resource
  32 + private AdminUserService userService;
  33 +
  34 + @Resource
  35 + private DataScope dataScope;
  36 +
  37 + @Log("查询用户")
  38 + @ApiOperation("查询用户")
  39 + @PostMapping(value = "list_by_page")
  40 + @PreAuthorize("@el.check('user:list')")
  41 + public ServerResult listByPage(@RequestBody @Validated AdminUserQueryVO queryVO) {
  42 + return userService.list(queryVO);
  43 + }
  44 +
  45 + @Log("授权角色")
  46 + @ApiOperation("授权角色")
  47 + @PostMapping(value = "/auth_role")
  48 + @PreAuthorize("@el.check('user:add')")
  49 + public ServerResult authRole(@RequestBody @Validated AdminAuthUserVO userVO) {
  50 + return userService.authRole(userVO);
  51 + }
  52 +
  53 + @Log("新增用户")
  54 + @ApiOperation("新增用户")
  55 + @PostMapping(value = "/add")
  56 + @PreAuthorize("@el.check('user:add')")
  57 + public ServerResult add(@RequestBody @Validated AdminUserVO userVO) {
  58 + return userService.add(userVO);
  59 + }
  60 +
  61 + @Log("修改用户")
  62 + @ApiOperation("修改用户")
  63 + @PostMapping(value = "/edit")
  64 + @PreAuthorize("@el.check('user:edit')")
  65 + public ServerResult edit(@RequestBody @Validated AdminUserVO userVO) {
  66 + return userService.edit(userVO);
  67 + }
  68 +
  69 + @Log("修改用户:个人中心")
  70 + @ApiOperation("修改用户:个人中心")
  71 + @PostMapping(value = "/center")
  72 + public ServerResult center(@RequestBody @Validated AdminUserVO userVO) {
  73 + return ServerResult.success();
  74 + }
  75 +
  76 + @Log("删除用户")
  77 + @ApiOperation("删除用户")
  78 + @PostMapping(value = "/delete")
  79 + @PreAuthorize("@el.check('user:del')")
  80 + public ServerResult delete(@RequestBody @Validated AdminUserQueryVO queryVO) {
  81 + return userService.deleteById(queryVO);
  82 + }
  83 +
  84 + @ApiOperation("修改密码")
  85 + @PostMapping(value = "/updatePass")
  86 + public ServerResult updatePass(@RequestBody @Validated AdminUserQueryVO queryVO) {
  87 + return ServerResult.success();
  88 + }
  89 +
  90 + @ApiOperation("修改头像")
  91 + @PostMapping(value = "/updateAvatar")
  92 + public ServerResult updateAvatar(@RequestParam MultipartFile file) {
  93 + return ServerResult.success();
  94 + }
  95 +
  96 + @Log("修改邮箱")
  97 + @ApiOperation("修改邮箱")
  98 + @PostMapping(value = "/updateEmail")
  99 + public ServerResult updateEmail(@RequestBody @Validated AdminUserQueryVO queryVO) {
  100 + return ServerResult.success();
  101 + }
  102 +}
... ...
src/main/java/com/order/erp/domain/dto/BaseDO.java
1 1 package com.order.erp.domain.dto;
2 2  
3   -import cn.hutool.core.date.DatePattern;
4   -import com.fasterxml.jackson.annotation.JsonFormat;
  3 +import com.baomidou.mybatisplus.annotation.FieldFill;
  4 +import com.baomidou.mybatisplus.annotation.TableField;
  5 +import com.baomidou.mybatisplus.annotation.TableLogic;
5 6 import lombok.AllArgsConstructor;
6 7 import lombok.Data;
7 8 import lombok.NoArgsConstructor;
8 9 import lombok.experimental.SuperBuilder;
  10 +import org.apache.ibatis.type.LocalDateTimeTypeHandler;
9 11  
10 12 import java.io.Serializable;
11 13 import java.time.LocalDateTime;
... ... @@ -20,28 +22,32 @@ public class BaseDO implements Serializable {
20 22 /**
21 23 * 创建时间
22 24 */
23   - @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
  25 + @TableField(fill = FieldFill.INSERT, typeHandler = LocalDateTimeTypeHandler.class)
24 26 private LocalDateTime createTime;
25 27  
26 28 /**
27 29 * 创建人
28 30 */
  31 + @TableField(fill = FieldFill.INSERT)
29 32 private String createBy;
30 33  
31 34 /**
32 35 * 修改时间
33 36 */
34   - @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
  37 + @TableField(fill = FieldFill.INSERT_UPDATE, typeHandler = LocalDateTimeTypeHandler.class)
35 38 private LocalDateTime modifyTime;
36 39  
37 40 /**
38 41 * 修改人
39 42 */
  43 + @TableField(fill = FieldFill.INSERT_UPDATE)
40 44 private String modifyBy;
41 45  
42 46 /**
43 47 * 是否可用 10-可用 20-删除 30-禁用
44 48 */
  49 + @TableLogic
  50 + @TableField(fill = FieldFill.INSERT)
45 51 private Integer enableFlag;
46 52  
47 53 /**
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminAuthRoleVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import javax.validation.constraints.NotNull;
  7 +import java.io.Serializable;
  8 +import java.util.Set;
  9 +
  10 +/**
  11 + * @author makejava
  12 + * @since 2023-08-30 17:51:48
  13 + */
  14 +@Data
  15 +@AllArgsConstructor
  16 +@ToString
  17 +@NoArgsConstructor
  18 +@EqualsAndHashCode(callSuper = false)
  19 +@SuperBuilder
  20 +public class AdminAuthRoleVO implements Serializable {
  21 +
  22 + /**
  23 + * 角色id
  24 + */
  25 + @NotNull(message = "角色id不能为空")
  26 + private Long roleId;
  27 +
  28 + /**
  29 + * 菜单id
  30 + */
  31 + @NotNull(message = "菜单ids不能为空")
  32 + private Set<Long> menuIds;
  33 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminAuthUserVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import javax.validation.constraints.NotNull;
  7 +import java.io.Serializable;
  8 +import java.util.Set;
  9 +
  10 +/**
  11 + * @author makejava
  12 + * @since 2023-08-30 17:51:48
  13 + */
  14 +@Data
  15 +@AllArgsConstructor
  16 +@ToString
  17 +@NoArgsConstructor
  18 +@EqualsAndHashCode(callSuper = false)
  19 +@SuperBuilder
  20 +public class AdminAuthUserVO implements Serializable {
  21 +
  22 + /**
  23 + * 用户id
  24 + */
  25 + @NotNull(message = "用户id不能为空")
  26 + private Long userId;
  27 +
  28 + /**
  29 + * 角色id
  30 + */
  31 + @NotNull(message = "角色id不能为空")
  32 + private Set<Long> roleIds;
  33 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminDeptResultVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import cn.hutool.core.date.DatePattern;
  4 +import com.fasterxml.jackson.annotation.JsonFormat;
  5 +import lombok.*;
  6 +import lombok.experimental.SuperBuilder;
  7 +
  8 +import java.io.Serializable;
  9 +import java.time.LocalDateTime;
  10 +
  11 +/**
  12 + * 角色表(AdminRole)实体类
  13 + *
  14 + * @author makejava
  15 + * @since 2023-08-30 17:51:48
  16 + */
  17 +@Data
  18 +@AllArgsConstructor
  19 +@ToString
  20 +@NoArgsConstructor
  21 +@EqualsAndHashCode(callSuper = false)
  22 +@SuperBuilder
  23 +public class AdminDeptResultVO implements Serializable {
  24 +
  25 + private Long id;
  26 +
  27 + /**
  28 + * 岗位名称
  29 + */
  30 + private String name;
  31 +
  32 + /**
  33 + * 上级部门
  34 + */
  35 + private Long pid;
  36 +
  37 + /**
  38 + * 子部门数目
  39 + */
  40 + private Integer subCount;
  41 +
  42 + /**
  43 + * 排序
  44 + */
  45 + private Integer deptSort;
  46 +
  47 +
  48 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminJobResultVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author makejava
  10 + * @since 2023-08-30 17:51:48
  11 + */
  12 +@Data
  13 +@AllArgsConstructor
  14 +@ToString
  15 +@NoArgsConstructor
  16 +@EqualsAndHashCode(callSuper = false)
  17 +@SuperBuilder
  18 +public class AdminJobResultVO implements Serializable {
  19 +
  20 + private Long id;
  21 +
  22 + /**
  23 + * 岗位名称
  24 + */
  25 + private String name;
  26 +
  27 + /**
  28 + * 排序
  29 + */
  30 + private Integer sort;
  31 +
  32 +
  33 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminMenuResult.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.time.LocalDateTime;
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * @author xms
  12 + */
  13 +@Data
  14 +@AllArgsConstructor
  15 +@ToString
  16 +@NoArgsConstructor
  17 +@EqualsAndHashCode(callSuper = false)
  18 +@SuperBuilder
  19 +public class AdminMenuResult implements Serializable {
  20 +
  21 + private Long id;
  22 + /**
  23 + * 上级菜单ID
  24 + */
  25 + private Long pid;
  26 +
  27 + /**
  28 + * 子菜单数目
  29 + */
  30 + private Integer subCount;
  31 +
  32 + /**
  33 + * 类型,目录、菜单、按钮
  34 + */
  35 + private Integer type;
  36 +
  37 + /**
  38 + * 菜单标题
  39 + */
  40 + private String title;
  41 +
  42 + /**
  43 + * 菜单名称
  44 + */
  45 + private String name;
  46 +
  47 + /**
  48 + * 组件
  49 + */
  50 + private String component;
  51 +
  52 + /**
  53 + * 排序
  54 + */
  55 + private Integer menuSort;
  56 +
  57 + /**
  58 + * 图标
  59 + */
  60 + private String icon;
  61 +
  62 + /**
  63 + * 路径
  64 + */
  65 + private String path;
  66 +
  67 + /**
  68 + * 是否为外链 0:否,1:是
  69 + */
  70 + private Integer iFrame;
  71 +
  72 + /**
  73 + * cache
  74 + */
  75 + private Integer cache;
  76 +
  77 + /**
  78 + * 权限
  79 + */
  80 + private String permission;
  81 +
  82 + /**
  83 + * 是否隐藏
  84 + */
  85 + private Integer hidden;
  86 +
  87 + private List<AdminMenuResult> children;
  88 +
  89 + private LocalDateTime createTime;
  90 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminMenuVO.java
... ... @@ -26,6 +26,10 @@ public class AdminMenuVO implements Serializable {
26 26 */
27 27 private Long pid;
28 28 /**
  29 + * 菜单标题
  30 + */
  31 + private String title;
  32 + /**
29 33 * 菜单名称
30 34 */
31 35 private String name;
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminRoleVO.java
... ... @@ -25,14 +25,11 @@ public class AdminRoleVO implements Serializable {
25 25 * 角色名称
26 26 */
27 27 private String name;
  28 +
28 29 /**
29   - * 备注
30   - */
31   - private String remark;
32   - /**
33   - * 权限
  30 + * 描述
34 31 */
35   - private String permission;
  32 + private String description;
36 33 /**
37 34 * 数据权限类型 全部 、 本级 、 自定义
38 35 */
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserResultVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.admin;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.time.LocalDateTime;
  8 +
  9 +/**
  10 + * 角色表(AdminRole)实体类
  11 + *
  12 + * @author makejava
  13 + * @since 2023-08-30 17:51:48
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class AdminUserResultVO implements Serializable {
  22 +
  23 + private Long id;
  24 +
  25 + /**
  26 + * 部门id
  27 + */
  28 + private Long deptId;
  29 +
  30 + /**
  31 + * 用户名称
  32 + */
  33 + private String userName;
  34 +
  35 + /**
  36 + * 用户昵称
  37 + */
  38 + private String nickName;
  39 +
  40 + /**
  41 + * 性别
  42 + */
  43 + private String gender;
  44 +
  45 + /**
  46 + * 手机号码
  47 + */
  48 + private String phone;
  49 +
  50 + /**
  51 + * 邮箱
  52 + */
  53 + private String email;
  54 +
  55 + /**
  56 + * 头像地址
  57 + */
  58 + private String avatarName;
  59 +
  60 + /**
  61 + * 头像真实路径
  62 + */
  63 + private String avatarPath;
  64 +
  65 + /**
  66 + * 密码
  67 + */
  68 + private String password;
  69 +
  70 + /**
  71 + * 是否为admin账号
  72 + */
  73 + private Boolean isAdmin;
  74 +
  75 + /**
  76 + * 修改密码的时间
  77 + */
  78 + private LocalDateTime pwdResetTime;
  79 +
  80 +
  81 +}
... ...
src/main/java/com/order/erp/domain/vo/admin/AdminUserVO.java
... ... @@ -4,6 +4,7 @@ import lombok.*;
4 4 import lombok.experimental.SuperBuilder;
5 5  
6 6 import java.io.Serializable;
  7 +import java.time.LocalDateTime;
7 8  
8 9 /**
9 10 * 用户表(AdminUser)实体类
... ... @@ -21,34 +22,61 @@ public class AdminUserVO implements Serializable {
21 22 private static final long serialVersionUID = 840682837180084937L;
22 23  
23 24 private Long id;
  25 +
  26 + /**
  27 + * 部门id
  28 + */
  29 + private Long deptId;
  30 +
24 31 /**
25 32 * 用户名称
26 33 */
27 34 private String userName;
  35 +
28 36 /**
29 37 * 用户昵称
30 38 */
31 39 private String nickName;
  40 +
32 41 /**
33 42 * 性别
34 43 */
35   - private String sex;
  44 + private String gender;
  45 +
36 46 /**
37   - * 工作性质
  47 + * 手机号码
38 48 */
39   - private String workerType;
  49 + private String phone;
  50 +
40 51 /**
41 52 * 邮箱
42 53 */
43 54 private String email;
  55 +
44 56 /**
45   - * 手机号
  57 + * 头像地址
46 58 */
47   - private String phone;
  59 + private String avatarName;
  60 +
  61 + /**
  62 + * 头像真实路径
  63 + */
  64 + private String avatarPath;
  65 +
48 66 /**
49 67 * 密码
50 68 */
51 69 private String password;
52 70  
  71 + /**
  72 + * 是否为admin账号
  73 + */
  74 + private Boolean isAdmin;
  75 +
  76 + /**
  77 + * 修改密码的时间
  78 + */
  79 + private LocalDateTime pwdResetTime;
  80 +
53 81  
54 82 }
... ...
src/main/java/com/order/erp/service/admin/AdminMenuService.java
... ... @@ -31,6 +31,13 @@ public interface AdminMenuService extends IService&lt;AdminMenuDO&gt; {
31 31 ServerResult list(AdminMenuQueryVO adminMenuQueryVO);
32 32  
33 33 /**
  34 + *
  35 + * @param adminMenuQueryVO
  36 + * @return
  37 + */
  38 + ServerResult all(AdminMenuQueryVO adminMenuQueryVO);
  39 +
  40 + /**
34 41 * 新增数据
35 42 *
36 43 * @param adminMenuVO 数据VO
... ...
src/main/java/com/order/erp/service/admin/AdminRoleService.java
... ... @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
4 4 import com.order.erp.common.constant.ServerResult;
5 5 import com.order.erp.domain.dto.admin.AdminRoleDO;
6 6 import com.order.erp.domain.vo.UserVO;
  7 +import com.order.erp.domain.vo.admin.AdminAuthRoleVO;
7 8 import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
8 9 import com.order.erp.domain.vo.admin.AdminRoleVO;
9 10 import org.springframework.security.core.GrantedAuthority;
... ... @@ -63,6 +64,14 @@ public interface AdminRoleService extends IService&lt;AdminRoleDO&gt; {
63 64 ServerResult edit(AdminRoleVO adminRoleVO);
64 65  
65 66 /**
  67 + * 角色-菜单-授权
  68 + *
  69 + * @param adminAuthRoleVO
  70 + * @return
  71 + */
  72 + ServerResult authMenu(AdminAuthRoleVO adminAuthRoleVO);
  73 +
  74 + /**
66 75 * 通过主键删除数据
67 76 *
68 77 * @param adminRoleQueryVO 筛选条件
... ...
src/main/java/com/order/erp/service/admin/AdminUserService.java
... ... @@ -39,6 +39,13 @@ public interface AdminUserService extends IService&lt;AdminUserDO&gt; {
39 39 ServerResult add(AdminUserVO adminUserVO);
40 40  
41 41 /**
  42 + *
  43 + * @param adminUserVO
  44 + * @return
  45 + */
  46 + ServerResult authRole(AdminAuthUserVO adminUserVO);
  47 +
  48 + /**
42 49 * 修改数据
43 50 *
44 51 * @param adminUserVO 数据VO
... ...
src/main/java/com/order/erp/service/admin/impl/AdminDeptServiceImpl.java
... ... @@ -2,20 +2,29 @@ package com.order.erp.service.admin.impl;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.metadata.IPage;
  8 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  9 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  10 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 12 import com.order.erp.common.constant.Constant;
8 13 import com.order.erp.common.constant.ServerResult;
  14 +import com.order.erp.domain.dto.BaseDO;
9 15 import com.order.erp.domain.dto.admin.AdminDeptDO;
10 16 import com.order.erp.domain.vo.admin.AdminDeptQueryVO;
  17 +import com.order.erp.domain.vo.admin.AdminDeptResultVO;
11 18 import com.order.erp.domain.vo.admin.AdminDeptVO;
12 19 import com.order.erp.mapper.admin.AdminDeptMapper;
13 20 import com.order.erp.service.admin.AdminDeptService;
14 21 import lombok.extern.slf4j.Slf4j;
  22 +import org.springframework.beans.BeanUtils;
15 23 import org.springframework.stereotype.Service;
16 24  
17 25 import java.util.List;
18 26 import java.util.Objects;
  27 +import java.util.stream.Collectors;
19 28  
20 29 /**
21 30 * 部门表(AdminDept)表服务实现类
... ... @@ -50,13 +59,38 @@ public class AdminDeptServiceImpl extends ServiceImpl&lt;AdminDeptMapper, AdminDept
50 59 /**
51 60 * 分页查询
52 61 *
53   - * @param adminDeptQueryVO 筛选条件
  62 + * @param queryVO 筛选条件
54 63 * @return 查询结果
55 64 */
56 65 @Override
57   - public ServerResult list(AdminDeptQueryVO adminDeptQueryVO) {
  66 + public ServerResult list(AdminDeptQueryVO queryVO) {
  67 +
  68 + LambdaQueryWrapper<AdminDeptDO> queryWrapper = buildQueryByParam(queryVO);
  69 + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize());
  70 + IPage<AdminDeptDO> iPage = page(page, queryWrapper);
58 71  
59   - return null;
  72 + Page<AdminDeptResultVO> webVOPage = new Page<>();
  73 + List<AdminDeptDO> adminDeptDOS = iPage.getRecords();
  74 + if (CollectionUtils.isNotEmpty(adminDeptDOS)) {
  75 + List<AdminDeptResultVO> queryVos = adminDeptDOS.stream().map(x -> {
  76 + AdminDeptResultVO resultVO = new AdminDeptResultVO();
  77 + BeanUtils.copyProperties(x, resultVO);
  78 + return resultVO;
  79 + }).collect(Collectors.toList());
  80 + webVOPage.setRecords(queryVos);
  81 + }
  82 + BeanUtils.copyProperties(page, webVOPage, "records");
  83 + return ServerResult.success(webVOPage);
  84 + }
  85 +
  86 + /**
  87 + * @param queryVO
  88 + * @return
  89 + */
  90 + private LambdaQueryWrapper<AdminDeptDO> buildQueryByParam(AdminDeptQueryVO queryVO) {
  91 + return new LambdaQueryWrapper<AdminDeptDO>()
  92 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  93 + .eq(StringUtils.isNotBlank(queryVO.getName()), AdminDeptDO::getName, queryVO.getName());
60 94 }
61 95  
62 96 /**
... ...
src/main/java/com/order/erp/service/admin/impl/AdminJobServiceImpl.java
... ... @@ -2,20 +2,29 @@ package com.order.erp.service.admin.impl;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.metadata.IPage;
  8 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  9 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  10 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 12 import com.order.erp.common.constant.Constant;
8 13 import com.order.erp.common.constant.ServerResult;
  14 +import com.order.erp.domain.dto.BaseDO;
9 15 import com.order.erp.domain.dto.admin.AdminJobDO;
10 16 import com.order.erp.domain.vo.admin.AdminJobQueryVO;
  17 +import com.order.erp.domain.vo.admin.AdminJobResultVO;
11 18 import com.order.erp.domain.vo.admin.AdminJobVO;
12 19 import com.order.erp.mapper.admin.AdminJobMapper;
13 20 import com.order.erp.service.admin.AdminJobService;
14 21 import lombok.extern.slf4j.Slf4j;
  22 +import org.springframework.beans.BeanUtils;
15 23 import org.springframework.stereotype.Service;
16 24  
17 25 import java.util.List;
18 26 import java.util.Objects;
  27 +import java.util.stream.Collectors;
19 28  
20 29 /**
21 30 * 岗位表(AdminJob)表服务实现类
... ... @@ -50,13 +59,39 @@ public class AdminJobServiceImpl extends ServiceImpl&lt;AdminJobMapper, AdminJobDO&gt;
50 59 /**
51 60 * 分页查询
52 61 *
53   - * @param adminJobQueryVO 筛选条件
  62 + * @param queryVO 筛选条件
54 63 * @return 查询结果
55 64 */
56 65 @Override
57   - public ServerResult list(AdminJobQueryVO adminJobQueryVO) {
  66 + public ServerResult list(AdminJobQueryVO queryVO) {
  67 +
  68 + LambdaQueryWrapper<AdminJobDO> queryWrapper = buildQueryByParam(queryVO);
  69 + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize());
  70 + IPage<AdminJobDO> iPage = page(page, queryWrapper);
  71 +
  72 + Page<AdminJobResultVO> webVOPage = new Page<>();
  73 + List<AdminJobDO> adminJobDOList = iPage.getRecords();
  74 + if (CollectionUtils.isNotEmpty(adminJobDOList)) {
  75 + List<AdminJobResultVO> queryVos = adminJobDOList.stream().map(x -> {
  76 + AdminJobResultVO resultVO = new AdminJobResultVO();
  77 + BeanUtils.copyProperties(x, resultVO);
  78 + return resultVO;
  79 + }).collect(Collectors.toList());
  80 + webVOPage.setRecords(queryVos);
  81 + }
  82 + BeanUtils.copyProperties(page, webVOPage, "records");
  83 + return ServerResult.success(webVOPage);
  84 + }
  85 +
58 86  
59   - return null;
  87 + /**
  88 + * @param queryVO
  89 + * @return
  90 + */
  91 + private LambdaQueryWrapper<AdminJobDO> buildQueryByParam(AdminJobQueryVO queryVO) {
  92 + return new LambdaQueryWrapper<AdminJobDO>()
  93 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  94 + .eq(StringUtils.isNotBlank(queryVO.getName()), AdminJobDO::getName, queryVO.getName());
60 95 }
61 96  
62 97 /**
... ...
src/main/java/com/order/erp/service/admin/impl/AdminMenuServiceImpl.java
... ... @@ -2,20 +2,25 @@ package com.order.erp.service.admin.impl;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
6 8 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 9 import com.order.erp.common.constant.Constant;
8 10 import com.order.erp.common.constant.ServerResult;
  11 +import com.order.erp.domain.dto.BaseDO;
9 12 import com.order.erp.domain.dto.admin.AdminMenuDO;
10 13 import com.order.erp.domain.vo.admin.AdminMenuQueryVO;
  14 +import com.order.erp.domain.vo.admin.AdminMenuResult;
11 15 import com.order.erp.domain.vo.admin.AdminMenuVO;
12 16 import com.order.erp.mapper.admin.AdminMenuMapper;
13 17 import com.order.erp.service.admin.AdminMenuService;
14 18 import lombok.extern.slf4j.Slf4j;
  19 +import org.springframework.beans.BeanUtils;
15 20 import org.springframework.stereotype.Service;
16 21  
17   -import java.util.List;
18   -import java.util.Objects;
  22 +import java.util.*;
  23 +import java.util.stream.Collectors;
19 24  
20 25 /**
21 26 * 角色表(AdminMenu)表服务实现类
... ... @@ -59,6 +64,50 @@ public class AdminMenuServiceImpl extends ServiceImpl&lt;AdminMenuMapper, AdminMenu
59 64 return null;
60 65 }
61 66  
  67 + @Override
  68 + public ServerResult all(AdminMenuQueryVO adminMenuQueryVO) {
  69 + List<AdminMenuDO> menuDOList = list(new LambdaQueryWrapper<AdminMenuDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN));
  70 +
  71 + if (CollectionUtils.isEmpty(menuDOList)) {
  72 + return ServerResult.success();
  73 + }
  74 +
  75 + return ServerResult.success(buildTree(menuDOList));
  76 + }
  77 +
  78 + /**
  79 + * @param menuDOList
  80 + * @return
  81 + */
  82 + private List<AdminMenuResult> buildTree(List<AdminMenuDO> menuDOList) {
  83 + List<AdminMenuResult> menuDtos = menuDOList.stream().map(x -> {
  84 + AdminMenuResult result = new AdminMenuResult();
  85 + BeanUtils.copyProperties(x, result);
  86 + return result;
  87 + }).collect(Collectors.toList());
  88 +
  89 + List<AdminMenuResult> trees = new ArrayList<>();
  90 + Set<Long> ids = new HashSet<>();
  91 + for (AdminMenuResult menuDTO : menuDtos) {
  92 + if (Objects.nonNull(menuDTO.getPid())) {
  93 + trees.add(menuDTO);
  94 + }
  95 + for (AdminMenuResult it : menuDtos) {
  96 + if (Objects.nonNull(it.getPid()) && it.getPid().equals(menuDTO.getId())) {
  97 + if (menuDTO.getChildren() == null) {
  98 + menuDTO.setChildren(new ArrayList<>());
  99 + }
  100 + menuDTO.getChildren().add(it);
  101 + ids.add(it.getId());
  102 + }
  103 + }
  104 + }
  105 + if (trees.size() == 0) {
  106 + trees = menuDtos.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList());
  107 + }
  108 + return trees;
  109 + }
  110 +
62 111 /**
63 112 * 新增数据
64 113 *
... ...
src/main/java/com/order/erp/service/admin/impl/AdminRoleServiceImpl.java
... ... @@ -11,15 +11,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
11 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
12 12 import com.order.erp.common.constant.Constant;
13 13 import com.order.erp.common.constant.ServerResult;
  14 +import com.order.erp.common.utils.TransactionHelper;
14 15 import com.order.erp.domain.dto.BaseDO;
15 16 import com.order.erp.domain.dto.admin.AdminMenuDO;
16 17 import com.order.erp.domain.dto.admin.AdminRoleDO;
17 18 import com.order.erp.domain.dto.admin.AdminRoleMenuDO;
18 19 import com.order.erp.domain.vo.UserVO;
19   -import com.order.erp.domain.vo.admin.AdminRoleQueryVO;
20   -import com.order.erp.domain.vo.admin.AdminRoleResultVO;
21   -import com.order.erp.domain.vo.admin.AdminRoleVO;
22   -import com.order.erp.domain.vo.admin.RoleSmallVO;
  20 +import com.order.erp.domain.vo.admin.*;
23 21 import com.order.erp.mapper.admin.AdminRoleMapper;
24 22 import com.order.erp.service.admin.AdminMenuService;
25 23 import com.order.erp.service.admin.AdminRoleMenuService;
... ... @@ -55,6 +53,9 @@ public class AdminRoleServiceImpl extends ServiceImpl&lt;AdminRoleMapper, AdminRole
55 53 @Resource
56 54 private AdminMenuService menuService;
57 55  
  56 + @Resource
  57 + private TransactionHelper transactionHelper;
  58 +
58 59  
59 60 /**
60 61 * 通过ID查询单条数据
... ... @@ -134,7 +135,6 @@ public class AdminRoleServiceImpl extends ServiceImpl&lt;AdminRoleMapper, AdminRole
134 135 */
135 136 @Override
136 137 public ServerResult add(AdminRoleVO adminRoleVO) {
137   - //todo 校验
138 138 if (Objects.nonNull(adminRoleVO.getId())) {
139 139 adminRoleVO.setId(null);
140 140 }
... ... @@ -164,6 +164,30 @@ public class AdminRoleServiceImpl extends ServiceImpl&lt;AdminRoleMapper, AdminRole
164 164 return ServerResult.success();
165 165 }
166 166  
  167 + @Override
  168 + public ServerResult authMenu(AdminAuthRoleVO adminAuthRoleVO) {
  169 + AdminRoleDO roleDO = getById(adminAuthRoleVO.getRoleId());
  170 + if (Objects.isNull(roleDO)) {
  171 + return ServerResult.fail("角色不存在");
  172 + }
  173 + List<AdminRoleMenuDO> list = adminAuthRoleVO.getMenuIds().stream().map(x -> {
  174 + return AdminRoleMenuDO.builder().roleId(adminAuthRoleVO.getRoleId()).menuId(x).build();
  175 + }).collect(Collectors.toList());
  176 + if (CollectionUtils.isEmpty(list)) {
  177 + return ServerResult.success();
  178 + }
  179 + try {
  180 + transactionHelper.run(() -> {
  181 + roleMenuService.remove(new LambdaQueryWrapper<AdminRoleMenuDO>().eq(AdminRoleMenuDO::getRoleId, adminAuthRoleVO.getRoleId()));
  182 + roleMenuService.saveBatch(list);
  183 + });
  184 + } catch (Exception e) {
  185 + log.error("授权异常:e:{}", e.getMessage());
  186 + }
  187 +
  188 + return ServerResult.success();
  189 + }
  190 +
167 191 /**
168 192 * 通过主键删除数据
169 193 *
... ...
src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
... ... @@ -4,7 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
5 5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6 6 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  7 +import com.baomidou.mybatisplus.core.metadata.IPage;
7 8 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  9 +import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  10 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
9 12 import com.canrd.shop.common.constant.ServerResultCode;
10 13 import com.order.erp.common.constant.Constant;
... ... @@ -12,6 +15,7 @@ import com.order.erp.common.constant.ServerResult;
12 15 import com.order.erp.common.exception.BusinessException;
13 16 import com.order.erp.common.utils.ImgCaptchaUtils;
14 17 import com.order.erp.common.utils.RedisUtil;
  18 +import com.order.erp.common.utils.TransactionHelper;
15 19 import com.order.erp.domain.dto.BaseDO;
16 20 import com.order.erp.domain.dto.admin.*;
17 21 import com.order.erp.domain.vo.UserVO;
... ... @@ -28,6 +32,7 @@ import org.springframework.security.authentication.AuthenticationManager;
28 32 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
29 33 import org.springframework.security.core.Authentication;
30 34 import org.springframework.security.core.context.SecurityContextHolder;
  35 +import org.springframework.security.crypto.password.PasswordEncoder;
31 36 import org.springframework.stereotype.Service;
32 37  
33 38 import javax.annotation.Resource;
... ... @@ -78,6 +83,12 @@ public class AdminUserServiceImpl extends ServiceImpl&lt;AdminUserMapper, AdminUser
78 83 @Resource
79 84 private AdminRoleService roleService;
80 85  
  86 + @Resource
  87 + private PasswordEncoder passwordEncoder;
  88 +
  89 + @Resource
  90 + private TransactionHelper transactionHelper;
  91 +
81 92 /**
82 93 * 通过ID查询单条数据
83 94 * <p>
... ... @@ -100,13 +111,40 @@ public class AdminUserServiceImpl extends ServiceImpl&lt;AdminUserMapper, AdminUser
100 111 /**
101 112 * 分页查询
102 113 *
103   - * @param adminUserQueryVO 筛选条件
  114 + * @param queryVO 筛选条件
104 115 * @return 查询结果
105 116 */
106 117 @Override
107   - public ServerResult list(AdminUserQueryVO adminUserQueryVO) {
  118 + public ServerResult list(AdminUserQueryVO queryVO) {
  119 +
  120 + LambdaQueryWrapper<AdminUserDO> queryWrapper = buildQueryByParam(queryVO);
  121 + Page page = new Page<>(queryVO.getPageNo(), queryVO.getPageSize());
  122 + IPage<AdminUserDO> iPage = page(page, queryWrapper);
  123 +
  124 + Page<AdminUserResultVO> webVOPage = new Page<>();
  125 + List<AdminUserDO> adminDeptDOS = iPage.getRecords();
  126 + if (CollectionUtils.isNotEmpty(adminDeptDOS)) {
  127 + List<AdminUserResultVO> queryVos = adminDeptDOS.stream().map(x -> {
  128 + AdminUserResultVO resultVO = new AdminUserResultVO();
  129 + BeanUtils.copyProperties(x, resultVO);
  130 + return resultVO;
  131 + }).collect(Collectors.toList());
  132 + webVOPage.setRecords(queryVos);
  133 + }
  134 + BeanUtils.copyProperties(page, webVOPage, "records");
  135 + return ServerResult.success(webVOPage);
  136 + }
108 137  
109   - return ServerResult.success();
  138 + /**
  139 + * @param queryVO
  140 + * @return
  141 + */
  142 + private LambdaQueryWrapper<AdminUserDO> buildQueryByParam(AdminUserQueryVO queryVO) {
  143 + return new LambdaQueryWrapper<AdminUserDO>()
  144 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  145 + .eq(StringUtils.isNotBlank(queryVO.getUserName()), AdminUserDO::getUserName, queryVO.getUserName())
  146 + .eq(StringUtils.isNotBlank(queryVO.getPhone()), AdminUserDO::getPhone, queryVO.getPhone())
  147 + .eq(StringUtils.isNotBlank(queryVO.getEmail()), AdminUserDO::getEmail, queryVO.getEmail());
110 148 }
111 149  
112 150 /**
... ... @@ -122,12 +160,36 @@ public class AdminUserServiceImpl extends ServiceImpl&lt;AdminUserMapper, AdminUser
122 160 adminUserVO.setId(null);
123 161 }
124 162 AdminUserDO adminUserDo = BeanUtil.copyProperties(adminUserVO, AdminUserDO.class);
125   -
  163 + adminUserDo.setPassword(passwordEncoder.encode("123456"));
126 164 save(adminUserDo);
127 165  
128 166 return ServerResult.success();
129 167 }
130 168  
  169 + @Override
  170 + public ServerResult authRole(AdminAuthUserVO adminUserVO) {
  171 + AdminUserDO userDO = getById(adminUserVO.getUserId());
  172 + if (Objects.isNull(userDO)) {
  173 + return ServerResult.fail("用户不存在");
  174 + }
  175 + List<AdminUserRoleDO> list = adminUserVO.getRoleIds().stream().map(x -> {
  176 + return AdminUserRoleDO.builder().userId(adminUserVO.getUserId()).roleId(x).build();
  177 + }).collect(Collectors.toList());
  178 + if (CollectionUtils.isEmpty(list)) {
  179 + return ServerResult.success();
  180 + }
  181 + try {
  182 + transactionHelper.run(() -> {
  183 + userRoleService.remove(new LambdaQueryWrapper<AdminUserRoleDO>().eq(AdminUserRoleDO::getUserId, adminUserVO.getUserId()));
  184 + userRoleService.saveBatch(list);
  185 + });
  186 + } catch (Exception e) {
  187 + log.error("授权异常:e:{}", e.getMessage());
  188 + }
  189 +
  190 + return ServerResult.success();
  191 + }
  192 +
131 193 /**
132 194 * 修改数据
133 195 *
... ...