Browse Source

feature: 系统管理->用户管理

luoyb 1 month ago
parent
commit
62d2360ccb
15 changed files with 751 additions and 37 deletions
  1. 21 0
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemotePtParameterService.java
  2. 6 0
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteUserAccountService.java
  3. 28 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemotePtParameterServiceImpl.java
  4. 12 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteUserAccountServiceImpl.java
  5. 6 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtUserAccountService.java
  6. 18 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java
  7. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/UserDeptController.java
  8. 79 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/UserDept.java
  9. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/UserDeptBo.java
  10. 73 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserDeptVo.java
  11. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/UserDeptMapper.java
  12. 77 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IUserDeptService.java
  13. 38 35
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  14. 194 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/UserDeptServiceImpl.java
  15. 2 2
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/UserDeptMapper.xml

+ 21 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemotePtParameterService.java

@@ -0,0 +1,21 @@
1
+package org.dromara.backstage.api;
2
+
3
+/**
4
+ * name: RemotePtParameterService
5
+ * package: org.dromara.backstage.api
6
+ * description: 系统参数服务
7
+ * date: 2024-09-12 09:19:50 09:19
8
+ *
9
+ * @author luoyibo
10
+ * @version 0.1
11
+ * @since JDK 1.8
12
+ */
13
+public interface RemotePtParameterService {
14
+
15
+    /**
16
+     * 根据参数健值获取参数值
17
+     * @param key 参数键值
18
+     * @return 参数值
19
+     */
20
+    String getPtParameterByKey(String key);
21
+}

+ 6 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteUserAccountService.java

@@ -1,5 +1,7 @@
1 1
 package org.dromara.backstage.api;
2 2
 
3
+import org.dromara.backstage.api.domain.bo.RemoteUserAccountBo;
4
+
3 5
 /**
4 6
  * name: RemoteUserAccountService
5 7
  * package: org.dromara.backstage.api
@@ -19,4 +21,8 @@ public interface RemoteUserAccountService {
19 21
      */
20 22
     Long queryCardTypeByUserId(Long userId);
21 23
 
24
+    //void insertByBo(RemoteUserAccountBo bo);
25
+
26
+    //void openAccount(RemoteUserAccountBo bo);
27
+
22 28
 }

+ 28 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemotePtParameterServiceImpl.java

@@ -0,0 +1,28 @@
1
+package org.dromara.backstage.basics.dubbo;
2
+
3
+import lombok.RequiredArgsConstructor;
4
+import org.apache.dubbo.config.annotation.DubboService;
5
+import org.dromara.backstage.api.RemotePtParameterService;
6
+import org.dromara.backstage.basics.service.IPtParameterService;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * name: RemotePtParameterServiceImpl
11
+ * package: org.dromara.backstage.basics.dubbo
12
+ * description: 系统参数服务实现
13
+ * date: 2024-09-12 09:23:26 09:23
14
+ *
15
+ * @author luoyibo
16
+ * @version 0.1
17
+ * @since JDK 1.8
18
+ */
19
+@RequiredArgsConstructor
20
+@Service
21
+@DubboService
22
+public class RemotePtParameterServiceImpl implements RemotePtParameterService {
23
+    private final IPtParameterService ptParameterService;
24
+    @Override
25
+    public String getPtParameterByKey(String key) {
26
+        return ptParameterService.selectParamByCode(key);
27
+    }
28
+}

+ 12 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/dubbo/RemoteUserAccountServiceImpl.java

@@ -31,4 +31,16 @@ public class RemoteUserAccountServiceImpl implements RemoteUserAccountService {
31 31
     public Long queryCardTypeByUserId(Long userId) {
32 32
         return userAccountService.queryById(userId).getCardType();
33 33
     }
34
+
35
+    //@Override
36
+    //public void insertByBo(RemoteUserAccountBo bo) {
37
+    //    PtUserAccountBo ptUserAccountBo = BeanUtil.copyProperties(bo, PtUserAccountBo.class);
38
+    //    userAccountService.insertByBo(ptUserAccountBo);
39
+    //}
40
+
41
+    //@Override
42
+    //public void openAccount(RemoteUserAccountBo bo) {
43
+    //    PtUserAccountBo ptUserAccountBo = BeanUtil.copyProperties(bo, PtUserAccountBo.class);
44
+    //    userAccountService.openAccount(ptUserAccountBo);
45
+    //}
34 46
 }

+ 6 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtUserAccountService.java

@@ -134,6 +134,12 @@ public interface IPtUserAccountService {
134 134
      */
135 135
     int openAccount(Long[] userIds);
136 136
 
137
+    /**
138
+     * 开户
139
+     * @param bo 账户业务对象
140
+     * @return 开户结果
141
+     */
142
+    int openAccount(PtUserAccountBo bo);
137 143
     /*
138 144
      * 销户
139 145
      *

+ 18 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -327,6 +327,24 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
327 327
         }
328 328
         return userIds.length;
329 329
     }
330
+    /**
331
+     * 开户
332
+     * @param bo 账户业务对象
333
+     * @return 开户结果
334
+     */
335
+    @Override
336
+    public int openAccount(PtUserAccountBo bo) {
337
+        PtUserAccount add = MapstructUtils.convert(bo, PtUserAccount.class);
338
+        validEntityBeforeSave(add);
339
+        boolean flag = baseMapper.insert(add) > 0;
340
+        if (flag) {
341
+            if (add != null) {
342
+                bo.setUserId(add.getUserId());
343
+            }
344
+            bagService.initAccountBag(bo.getUserId());
345
+        }
346
+        return 0;
347
+    }
330 348
 
331 349
     /*
332 350
      * 销户

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/UserDeptController.java

@@ -0,0 +1,106 @@
1
+package org.dromara.system.controller.system;
2
+
3
+import java.util.List;
4
+
5
+import lombok.RequiredArgsConstructor;
6
+import jakarta.servlet.http.HttpServletResponse;
7
+import jakarta.validation.constraints.*;
8
+import cn.dev33.satoken.annotation.SaCheckPermission;
9
+import org.springframework.web.bind.annotation.*;
10
+import org.springframework.validation.annotation.Validated;
11
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
12
+import org.dromara.common.log.annotation.Log;
13
+import org.dromara.common.web.core.BaseController;
14
+import org.dromara.common.mybatis.core.page.PageQuery;
15
+import org.dromara.common.core.domain.R;
16
+import org.dromara.common.core.validate.AddGroup;
17
+import org.dromara.common.core.validate.EditGroup;
18
+import org.dromara.common.log.enums.BusinessType;
19
+import org.dromara.common.excel.utils.ExcelUtil;
20
+import org.dromara.system.domain.vo.UserDeptVo;
21
+import org.dromara.system.domain.bo.UserDeptBo;
22
+import org.dromara.system.service.IUserDeptService;
23
+import org.dromara.common.mybatis.core.page.TableDataInfo;
24
+
25
+/**
26
+ * 用户部门
27
+ * 前端访问路由地址为:/system/userDept
28
+ *
29
+ * @author LionLi
30
+ * @date 2024-09-11
31
+ */
32
+@Validated
33
+@RequiredArgsConstructor
34
+@RestController
35
+@RequestMapping("/system/userDept")
36
+public class UserDeptController extends BaseController {
37
+
38
+    private final IUserDeptService userDeptService;
39
+
40
+    /**
41
+     * 查询用户部门列表
42
+     */
43
+    @SaCheckPermission("system:userDept:list")
44
+    @GetMapping("/list")
45
+    public TableDataInfo<UserDeptVo> list(UserDeptBo bo, PageQuery pageQuery) {
46
+        return userDeptService.queryPageList(bo, pageQuery);
47
+    }
48
+
49
+    /**
50
+     * 导出用户部门列表
51
+     */
52
+    @SaCheckPermission("system:userDept:export")
53
+    @Log(title = "用户部门", businessType = BusinessType.EXPORT)
54
+    @PostMapping("/export")
55
+    public void export(UserDeptBo bo, HttpServletResponse response) {
56
+        List<UserDeptVo> list = userDeptService.queryList(bo);
57
+        ExcelUtil.exportExcel(list, "用户部门", UserDeptVo.class, response);
58
+    }
59
+
60
+    /**
61
+     * 获取用户部门详细信息
62
+     *
63
+     * @param userDeptId 主键
64
+     */
65
+    @SaCheckPermission("system:userDept:query")
66
+    @GetMapping("/{userDeptId}")
67
+    public R<UserDeptVo> getInfo(@NotNull(message = "主键不能为空")
68
+                                     @PathVariable Long userDeptId) {
69
+        return R.ok(userDeptService.queryById(userDeptId));
70
+    }
71
+
72
+    /**
73
+     * 新增用户部门
74
+     */
75
+    @SaCheckPermission("system:userDept:add")
76
+    @Log(title = "用户部门", businessType = BusinessType.INSERT)
77
+    @RepeatSubmit()
78
+    @PostMapping()
79
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody UserDeptBo bo) {
80
+        return toAjax(userDeptService.insertByBo(bo));
81
+    }
82
+
83
+    /**
84
+     * 修改用户部门
85
+     */
86
+    @SaCheckPermission("system:userDept:edit")
87
+    @Log(title = "用户部门", businessType = BusinessType.UPDATE)
88
+    @RepeatSubmit()
89
+    @PutMapping()
90
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserDeptBo bo) {
91
+        return toAjax(userDeptService.updateByBo(bo));
92
+    }
93
+
94
+    /**
95
+     * 删除用户部门
96
+     *
97
+     * @param userDeptIds 主键串
98
+     */
99
+    @SaCheckPermission("system:userDept:remove")
100
+    @Log(title = "用户部门", businessType = BusinessType.DELETE)
101
+    @DeleteMapping("/{userDeptIds}")
102
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
103
+                          @PathVariable Long[] userDeptIds) {
104
+        return toAjax(userDeptService.deleteWithValidByIds(List.of(userDeptIds), true));
105
+    }
106
+}

+ 79 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/UserDept.java

@@ -0,0 +1,79 @@
1
+package org.dromara.system.domain;
2
+
3
+import org.dromara.common.tenant.core.TenantEntity;
4
+import com.baomidou.mybatisplus.annotation.*;
5
+import lombok.Data;
6
+import lombok.EqualsAndHashCode;
7
+import java.util.Date;
8
+import com.fasterxml.jackson.annotation.JsonFormat;
9
+
10
+import java.io.Serial;
11
+
12
+/**
13
+ * 用户部门对象 t_user_dept
14
+ *
15
+ * @author LionLi
16
+ * @date 2024-09-11
17
+ */
18
+@Data
19
+@EqualsAndHashCode(callSuper = true)
20
+@TableName("t_user_dept")
21
+public class UserDept extends TenantEntity {
22
+
23
+    @Serial
24
+    private static final long serialVersionUID = 1L;
25
+
26
+    /**
27
+     * 用户部门Id,主键
28
+     */
29
+    @TableId(value = "user_dept_id")
30
+    private Long userDeptId;
31
+
32
+    /**
33
+     * 用户Id
34
+     */
35
+    private Long userId;
36
+
37
+    /**
38
+     * 部门Id
39
+     */
40
+    private Long deptId;
41
+
42
+    /**
43
+     * 岗位Id
44
+     */
45
+    private Long postId;
46
+
47
+    /**
48
+     * 是否主部门,见sys_yes_no字典类别
49
+     */
50
+    private String mainDept;
51
+
52
+    /**
53
+     * 报到状态,见sys_yes_no字典类别,学员报到专用
54
+     */
55
+    private String checkStatus;
56
+
57
+    /**
58
+     * 报到时间,学员报到专用
59
+     */
60
+    private Date checkDate;
61
+
62
+    /**
63
+     * 缴费状态,见sys_yes_no字典类别,学员报到专用
64
+     */
65
+    private String payStatus;
66
+
67
+    /**
68
+     * 缴费时间,学员报到专用
69
+     */
70
+    private Date payDate;
71
+
72
+    /**
73
+     * 删除标志(0-未删除 2-已删除)
74
+     */
75
+    @TableLogic
76
+    private String delFlag;
77
+
78
+
79
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/UserDeptBo.java

@@ -0,0 +1,76 @@
1
+package org.dromara.system.domain.bo;
2
+
3
+import org.dromara.system.domain.UserDept;
4
+import org.dromara.common.mybatis.core.domain.BaseEntity;
5
+import org.dromara.common.core.validate.AddGroup;
6
+import org.dromara.common.core.validate.EditGroup;
7
+import io.github.linpeilie.annotations.AutoMapper;
8
+import lombok.Data;
9
+import lombok.EqualsAndHashCode;
10
+import jakarta.validation.constraints.*;
11
+import java.util.Date;
12
+import com.fasterxml.jackson.annotation.JsonFormat;
13
+
14
+/**
15
+ * 用户部门业务对象 t_user_dept
16
+ *
17
+ * @author LionLi
18
+ * @date 2024-09-11
19
+ */
20
+@Data
21
+@EqualsAndHashCode(callSuper = true)
22
+@AutoMapper(target = UserDept.class, reverseConvertGenerate = false)
23
+public class UserDeptBo extends BaseEntity {
24
+
25
+    /**
26
+     * 用户部门Id,主键
27
+     */
28
+    @NotNull(message = "用户部门Id,主键不能为空", groups = { EditGroup.class })
29
+    private Long userDeptId;
30
+
31
+    /**
32
+     * 用户Id
33
+     */
34
+    @NotNull(message = "用户Id不能为空", groups = { AddGroup.class, EditGroup.class })
35
+    private Long userId;
36
+
37
+    /**
38
+     * 部门Id
39
+     */
40
+    @NotNull(message = "部门Id不能为空", groups = { AddGroup.class, EditGroup.class })
41
+    private Long deptId;
42
+
43
+    /**
44
+     * 岗位Id
45
+     */
46
+    @NotNull(message = "岗位Id不能为空", groups = { AddGroup.class, EditGroup.class })
47
+    private Long postId;
48
+
49
+    /**
50
+     * 是否主部门,见sys_yes_no字典类别
51
+     */
52
+    @NotBlank(message = "是否主部门,见sys_yes_no字典类别不能为空", groups = { AddGroup.class, EditGroup.class })
53
+    private String mainDept;
54
+
55
+    /**
56
+     * 报到状态,见sys_yes_no字典类别,学员报到专用
57
+     */
58
+    private String checkStatus;
59
+
60
+    /**
61
+     * 报到时间,学员报到专用
62
+     */
63
+    private Date checkDate;
64
+
65
+    /**
66
+     * 缴费状态,见sys_yes_no字典类别,学员报到专用
67
+     */
68
+    private String payStatus;
69
+
70
+    /**
71
+     * 缴费时间,学员报到专用
72
+     */
73
+    private Date payDate;
74
+
75
+
76
+}

+ 73 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserDeptVo.java

@@ -0,0 +1,73 @@
1
+package org.dromara.system.domain.vo;
2
+
3
+import java.util.Date;
4
+import com.fasterxml.jackson.annotation.JsonFormat;
5
+import org.dromara.system.domain.UserDept;
6
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
7
+import com.alibaba.excel.annotation.ExcelProperty;
8
+import org.dromara.common.excel.annotation.ExcelDictFormat;
9
+import org.dromara.common.excel.convert.ExcelDictConvert;
10
+import io.github.linpeilie.annotations.AutoMapper;
11
+import lombok.Data;
12
+
13
+import java.io.Serial;
14
+import java.io.Serializable;
15
+import java.util.Date;
16
+
17
+
18
+
19
+/**
20
+ * 用户部门视图对象 t_user_dept
21
+ *
22
+ * @author LionLi
23
+ * @date 2024-09-11
24
+ */
25
+@Data
26
+@ExcelIgnoreUnannotated
27
+@AutoMapper(target = UserDept.class)
28
+public class UserDeptVo implements Serializable {
29
+
30
+    @Serial
31
+    private static final long serialVersionUID = 1L;
32
+
33
+    /**
34
+     * 用户部门Id,主键
35
+     */
36
+    @ExcelProperty(value = "用户部门Id,主键")
37
+    private Long userDeptId;
38
+
39
+    /**
40
+     * 是否主部门,见sys_yes_no字典类别
41
+     */
42
+    @ExcelProperty(value = "是否主部门,见sys_yes_no字典类别", converter = ExcelDictConvert.class)
43
+    @ExcelDictFormat(dictType = "sys_yes_no")
44
+    private String mainDept;
45
+
46
+    /**
47
+     * 报到状态,见sys_yes_no字典类别,学员报到专用
48
+     */
49
+    @ExcelProperty(value = "报到状态,见sys_yes_no字典类别,学员报到专用", converter = ExcelDictConvert.class)
50
+    @ExcelDictFormat(dictType = "sys_yes_no")
51
+    private String checkStatus;
52
+
53
+    /**
54
+     * 报到时间,学员报到专用
55
+     */
56
+    @ExcelProperty(value = "报到时间,学员报到专用")
57
+    private Date checkDate;
58
+
59
+    /**
60
+     * 缴费状态,见sys_yes_no字典类别,学员报到专用
61
+     */
62
+    @ExcelProperty(value = "缴费状态,见sys_yes_no字典类别,学员报到专用", converter = ExcelDictConvert.class)
63
+    @ExcelDictFormat(dictType = "sys_yes_no")
64
+    private String payStatus;
65
+
66
+    /**
67
+     * 缴费时间,学员报到专用
68
+     */
69
+    @ExcelProperty(value = "缴费时间,学员报到专用")
70
+    private Date payDate;
71
+
72
+
73
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/UserDeptMapper.java

@@ -0,0 +1,15 @@
1
+package org.dromara.system.mapper;
2
+
3
+import org.dromara.system.domain.UserDept;
4
+import org.dromara.system.domain.vo.UserDeptVo;
5
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
6
+
7
+/**
8
+ * 用户部门Mapper接口
9
+ *
10
+ * @author LionLi
11
+ * @date 2024-09-11
12
+ */
13
+public interface UserDeptMapper extends BaseMapperPlus<UserDept, UserDeptVo> {
14
+
15
+}

+ 77 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IUserDeptService.java

@@ -0,0 +1,77 @@
1
+package org.dromara.system.service;
2
+
3
+import org.dromara.system.domain.vo.UserDeptVo;
4
+import org.dromara.system.domain.bo.UserDeptBo;
5
+import org.dromara.common.mybatis.core.page.TableDataInfo;
6
+import org.dromara.common.mybatis.core.page.PageQuery;
7
+
8
+import java.util.Collection;
9
+import java.util.List;
10
+
11
+/**
12
+ * 用户部门Service接口
13
+ *
14
+ * @author LionLi
15
+ * @date 2024-09-11
16
+ */
17
+public interface IUserDeptService {
18
+
19
+    /**
20
+     * 查询用户部门
21
+     *
22
+     * @param userDeptId 主键
23
+     * @return 用户部门
24
+     */
25
+    UserDeptVo queryById(Long userDeptId);
26
+
27
+    /**
28
+     * 分页查询用户部门列表
29
+     *
30
+     * @param bo        查询条件
31
+     * @param pageQuery 分页参数
32
+     * @return 用户部门分页列表
33
+     */
34
+    TableDataInfo<UserDeptVo> queryPageList(UserDeptBo bo, PageQuery pageQuery);
35
+
36
+    /**
37
+     * 查询符合条件的用户部门列表
38
+     *
39
+     * @param bo 查询条件
40
+     * @return 用户部门列表
41
+     */
42
+    List<UserDeptVo> queryList(UserDeptBo bo);
43
+
44
+    /**
45
+     * 新增用户部门
46
+     *
47
+     * @param bo 用户部门
48
+     * @return 是否新增成功
49
+     */
50
+    Boolean insertByBo(UserDeptBo bo);
51
+
52
+    /**
53
+     * 修改用户部门
54
+     *
55
+     * @param bo 用户部门
56
+     * @return 是否修改成功
57
+     */
58
+    Boolean updateByBo(UserDeptBo bo);
59
+
60
+    /**
61
+     * 校验并批量删除用户部门信息
62
+     *
63
+     * @param ids     待删除的主键集合
64
+     * @param isValid 是否进行有效性校验
65
+     * @return 是否删除成功
66
+     */
67
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
68
+
69
+    Boolean updateMainDeptByUserId(Long userId);
70
+
71
+    Boolean setUserDeptPost(UserDeptBo bo);
72
+
73
+    Boolean deleteByBo(UserDeptBo bo);
74
+
75
+    Boolean deleteByUserIds(Collection<Long> userIds);
76
+
77
+}

+ 38 - 35
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -1,5 +1,6 @@
1 1
 package org.dromara.system.service.impl;
2 2
 
3
+import cn.hutool.core.bean.BeanUtil;
3 4
 import cn.hutool.core.collection.CollUtil;
4 5
 import cn.hutool.core.convert.Convert;
5 6
 import cn.hutool.core.util.ArrayUtil;
@@ -12,6 +13,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
12 13
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
13 14
 import lombok.RequiredArgsConstructor;
14 15
 import lombok.extern.slf4j.Slf4j;
16
+import org.apache.dubbo.config.annotation.DubboReference;
17
+import org.dromara.backstage.api.RemotePtParameterService;
18
+import org.dromara.backstage.api.RemoteUserAccountService;
19
+import org.dromara.backstage.api.domain.bo.RemoteUserAccountBo;
15 20
 import org.dromara.common.core.constant.CacheNames;
16 21
 import org.dromara.common.core.constant.UserConstants;
17 22
 import org.dromara.common.core.exception.ServiceException;
@@ -25,15 +30,16 @@ import org.dromara.common.mybatis.helper.DataBaseHelper;
25 30
 import org.dromara.common.satoken.utils.LoginHelper;
26 31
 import org.dromara.system.domain.SysDept;
27 32
 import org.dromara.system.domain.SysUser;
28
-import org.dromara.system.domain.SysUserPost;
29 33
 import org.dromara.system.domain.SysUserRole;
30 34
 import org.dromara.system.domain.bo.SysUserBo;
35
+import org.dromara.system.domain.bo.UserDeptBo;
31 36
 import org.dromara.system.domain.vo.SysPostVo;
32 37
 import org.dromara.system.domain.vo.SysRoleVo;
33 38
 import org.dromara.system.domain.vo.SysUserExportVo;
34 39
 import org.dromara.system.domain.vo.SysUserVo;
35 40
 import org.dromara.system.mapper.*;
36 41
 import org.dromara.system.service.ISysUserService;
42
+import org.dromara.system.service.IUserDeptService;
37 43
 import org.springframework.cache.annotation.CacheEvict;
38 44
 import org.springframework.cache.annotation.Cacheable;
39 45
 import org.springframework.stereotype.Service;
@@ -58,7 +64,12 @@ public class SysUserServiceImpl implements ISysUserService {
58 64
     private final SysRoleMapper roleMapper;
59 65
     private final SysPostMapper postMapper;
60 66
     private final SysUserRoleMapper userRoleMapper;
61
-    private final SysUserPostMapper userPostMapper;
67
+    private final IUserDeptService userDeptService;
68
+
69
+    @DubboReference
70
+    private final RemotePtParameterService remotePtParameterService;
71
+    private final RemoteUserAccountService remoteUserAccountService;
72
+    //private final RemoteUserAccountService remoteUserAccountService;
62 73
 
63 74
     @Override
64 75
     public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
@@ -83,6 +94,7 @@ public class SysUserServiceImpl implements ISysUserService {
83 94
         wrapper.eq("u.del_flag", UserConstants.USER_NORMAL)
84 95
             .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId())
85 96
             .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
97
+            .like(StringUtils.isNotBlank(user.getRealName()), "u.real_name", user.getRealName())
86 98
             .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus())
87 99
             .like(StringUtils.isNotBlank(user.getPhone()), "u.phone", user.getPhone())
88 100
             .between(params.get("beginTime") != null && params.get("endTime") != null,
@@ -310,10 +322,17 @@ public class SysUserServiceImpl implements ISysUserService {
310 322
             user.setUserId(sysUser.getUserId());
311 323
         }
312 324
         // 新增用户岗位关联
313
-        //insertUserPost(user, false);
314
-        insertUserDept(user,false);
325
+         insertUserDept(user);
315 326
         // 新增用户与角色管理
316 327
         insertUserRole(user, false);
328
+        String autoUserAccount = remotePtParameterService.getPtParameterByKey("AUTO_CREATE_BAG");
329
+        RemoteUserAccountBo remoteUserAccountBo = BeanUtil.copyProperties(user, RemoteUserAccountBo.class);
330
+        //if("1".equals(autoUserAccount)){
331
+        //
332
+        //} else {
333
+          remoteUserAccountBo.setAccountStatus("0");
334
+          //remoteUserAccountService.insertByBo(remoteUserAccountBo);
335
+        //}
317 336
         return rows;
318 337
     }
319 338
 
@@ -344,8 +363,8 @@ public class SysUserServiceImpl implements ISysUserService {
344 363
     public int updateUser(SysUserBo user) {
345 364
         // 新增用户与角色管理
346 365
         insertUserRole(user, true);
347
-        // 新增用户岗位管理
348
-        insertUserPost(user, true);
366
+        // 新增用户部门岗位管理
367
+        insertUserDept(user);
349 368
         SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
350 369
         // 防止错误更新后导致的数据误删除
351 370
         int flag = baseMapper.updateById(sysUser);
@@ -440,30 +459,6 @@ public class SysUserServiceImpl implements ISysUserService {
440 459
         this.insertUserRole(user.getUserId(), user.getRoleIds(), clear);
441 460
     }
442 461
 
443
-    /**
444
-     * 新增用户岗位信息
445
-     *
446
-     * @param user  用户对象
447
-     * @param clear 清除已存在的关联数据
448
-     */
449
-    private void insertUserPost(SysUserBo user, boolean clear) {
450
-        Long[] posts = user.getPostIds();
451
-        if (ArrayUtil.isNotEmpty(posts)) {
452
-            if (clear) {
453
-                // 删除用户与岗位关联
454
-                userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, user.getUserId()));
455
-            }
456
-            // 新增用户与岗位管理
457
-            List<SysUserPost> list = StreamUtils.toList(List.of(posts), postId -> {
458
-                SysUserPost up = new SysUserPost();
459
-                up.setUserId(user.getUserId());
460
-                up.setPostId(postId);
461
-                return up;
462
-            });
463
-            userPostMapper.insertBatch(list);
464
-        }
465
-    }
466
-
467 462
     /**
468 463
      * 新增用户角色信息
469 464
      *
@@ -513,7 +508,11 @@ public class SysUserServiceImpl implements ISysUserService {
513 508
         // 删除用户与角色关联
514 509
         userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
515 510
         // 删除用户与岗位表
516
-        userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
511
+        UserDeptBo userDeptBo = new UserDeptBo();
512
+        userDeptBo.setUserId(userId);
513
+        userDeptBo.setMainDept("N");
514
+        userDeptService.deleteByBo(userDeptBo);
515
+
517 516
         // 防止更新失败导致的数据删除
518 517
         int flag = baseMapper.deleteById(userId);
519 518
         if (flag < 1) {
@@ -538,8 +537,8 @@ public class SysUserServiceImpl implements ISysUserService {
538 537
         List<Long> ids = List.of(userIds);
539 538
         // 删除用户与角色关联
540 539
         userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
541
-        // 删除用户与岗位
542
-        userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids));
540
+        // 删除用户部门
541
+        userDeptService.deleteByUserIds(List.of(userIds));
543 542
         // 防止更新失败导致的数据删除
544 543
         int flag = baseMapper.deleteByIds(ids);
545 544
         if (flag < 1) {
@@ -635,8 +634,12 @@ public class SysUserServiceImpl implements ISysUserService {
635 634
         return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail();
636 635
     }
637 636
 
638
-    private void insertUserDept(SysUserBo bo,Boolean clear){
639
-        Long deptId =  bo.getDeptId();
637
+    private void insertUserDept(SysUserBo bo){
638
+        UserDeptBo userDeptBo = new UserDeptBo();
639
+        userDeptBo.setDeptId(bo.getDeptId());
640
+        userDeptBo.setPostId(bo.getPostId());
641
+        userDeptBo.setUserId(bo.getUserId());
640 642
 
643
+        userDeptService.setUserDeptPost(userDeptBo);
641 644
     }
642 645
 }

+ 194 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/UserDeptServiceImpl.java

@@ -0,0 +1,194 @@
1
+package org.dromara.system.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
4
+import org.dromara.common.core.utils.MapstructUtils;
5
+import org.dromara.common.core.utils.StringUtils;
6
+import org.dromara.common.mybatis.core.page.TableDataInfo;
7
+import org.dromara.common.mybatis.core.page.PageQuery;
8
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
9
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
12
+import lombok.RequiredArgsConstructor;
13
+import org.springframework.stereotype.Service;
14
+import org.dromara.system.domain.bo.UserDeptBo;
15
+import org.dromara.system.domain.vo.UserDeptVo;
16
+import org.dromara.system.domain.UserDept;
17
+import org.dromara.system.mapper.UserDeptMapper;
18
+import org.dromara.system.service.IUserDeptService;
19
+
20
+import java.util.List;
21
+import java.util.Map;
22
+import java.util.Collection;
23
+
24
+/**
25
+ * 用户部门Service业务层处理
26
+ *
27
+ * @author LionLi
28
+ * @date 2024-09-11
29
+ */
30
+@RequiredArgsConstructor
31
+@Service
32
+public class UserDeptServiceImpl implements IUserDeptService {
33
+
34
+    private final UserDeptMapper baseMapper;
35
+
36
+    /**
37
+     * 查询用户部门
38
+     *
39
+     * @param userDeptId 主键
40
+     * @return 用户部门
41
+     */
42
+    @Override
43
+    public UserDeptVo queryById(Long userDeptId){
44
+        return baseMapper.selectVoById(userDeptId);
45
+    }
46
+
47
+    /**
48
+     * 分页查询用户部门列表
49
+     *
50
+     * @param bo        查询条件
51
+     * @param pageQuery 分页参数
52
+     * @return 用户部门分页列表
53
+     */
54
+    @Override
55
+    public TableDataInfo<UserDeptVo> queryPageList(UserDeptBo bo, PageQuery pageQuery) {
56
+        LambdaQueryWrapper<UserDept> lqw = buildQueryWrapper(bo);
57
+        Page<UserDeptVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
58
+        return TableDataInfo.build(result);
59
+    }
60
+
61
+    /**
62
+     * 查询符合条件的用户部门列表
63
+     *
64
+     * @param bo 查询条件
65
+     * @return 用户部门列表
66
+     */
67
+    @Override
68
+    public List<UserDeptVo> queryList(UserDeptBo bo) {
69
+        LambdaQueryWrapper<UserDept> lqw = buildQueryWrapper(bo);
70
+        return baseMapper.selectVoList(lqw);
71
+    }
72
+
73
+    private LambdaQueryWrapper<UserDept> buildQueryWrapper(UserDeptBo bo) {
74
+        Map<String, Object> params = bo.getParams();
75
+        LambdaQueryWrapper<UserDept> lqw = Wrappers.lambdaQuery();
76
+        lqw.eq(StringUtils.isNotBlank(bo.getMainDept()), UserDept::getMainDept, bo.getMainDept());
77
+        lqw.eq(StringUtils.isNotBlank(bo.getCheckStatus()), UserDept::getCheckStatus, bo.getCheckStatus());
78
+        lqw.eq(StringUtils.isNotBlank(bo.getPayStatus()), UserDept::getPayStatus, bo.getPayStatus());
79
+        lqw.eq(StringUtils.isNotBlank(bo.getDeptId().toString()), UserDept::getDeptId, bo.getDeptId());
80
+        lqw.eq(StringUtils.isNotBlank(bo.getPostId().toString()), UserDept::getPostId, bo.getPostId());
81
+        lqw.eq(StringUtils.isNotBlank(bo.getUserId().toString()), UserDept::getUserId, bo.getUserId());
82
+        lqw.eq(bo.getCheckDate() != null, UserDept::getCheckDate, bo.getCheckDate());
83
+        lqw.eq(bo.getPayDate() != null, UserDept::getPayDate, bo.getPayDate());
84
+
85
+        return lqw;
86
+    }
87
+
88
+    private QueryWrapper<UserDept> buildQueryWrapper(UserDeptBo bo,String tableAlias) {
89
+        QueryWrapper<UserDept> lqw = new QueryWrapper<>();
90
+        String columnPrefix = "";
91
+        if(StringUtils.isNotBlank(tableAlias)){
92
+            columnPrefix = tableAlias + ".";
93
+        }
94
+        lqw.eq(StringUtils.isNotBlank(bo.getMainDept()), columnPrefix+"main_dept", bo.getMainDept());
95
+        lqw.eq(StringUtils.isNotBlank(bo.getCheckStatus()), columnPrefix+"check_status", bo.getCheckStatus());
96
+        lqw.eq(bo.getCheckDate() != null, columnPrefix+"check_date", bo.getCheckDate());
97
+        lqw.eq(StringUtils.isNotBlank(bo.getPayStatus()), columnPrefix+"pay_status", bo.getPayStatus());
98
+        lqw.eq(bo.getPayDate() != null, columnPrefix+"pay_date", bo.getPayDate());
99
+        return lqw;
100
+    }
101
+
102
+    /**
103
+     * 新增用户部门
104
+     *
105
+     * @param bo 用户部门
106
+     * @return 是否新增成功
107
+     */
108
+    @Override
109
+    public Boolean insertByBo(UserDeptBo bo) {
110
+        UserDept add = MapstructUtils.convert(bo, UserDept.class);
111
+        validEntityBeforeSave(add);
112
+        boolean flag = baseMapper.insert(add) > 0;
113
+        if (flag) {
114
+            bo.setUserDeptId(add.getUserDeptId());
115
+        }
116
+        return flag;
117
+    }
118
+
119
+    /**
120
+     * 修改用户部门
121
+     *
122
+     * @param bo 用户部门
123
+     * @return 是否修改成功
124
+     */
125
+    @Override
126
+    public Boolean updateByBo(UserDeptBo bo) {
127
+        UserDept update = MapstructUtils.convert(bo, UserDept.class);
128
+        validEntityBeforeSave(update);
129
+        return baseMapper.updateById(update) > 0;
130
+    }
131
+
132
+    /**
133
+     * 保存前的数据校验
134
+     */
135
+    private void validEntityBeforeSave(UserDept entity){
136
+        //TODO 做一些数据校验,如唯一约束
137
+
138
+    }
139
+
140
+    /**
141
+     * 校验并批量删除用户部门信息
142
+     *
143
+     * @param ids     待删除的主键集合
144
+     * @param isValid 是否进行有效性校验
145
+     * @return 是否删除成功
146
+     */
147
+    @Override
148
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
149
+        if(isValid){
150
+            //TODO 做一些业务上的校验,判断是否需要校验
151
+        }
152
+        return baseMapper.deleteByIds(ids) > 0;
153
+    }
154
+
155
+    @Override
156
+    public Boolean updateMainDeptByUserId(Long userId) {
157
+        LambdaUpdateWrapper<UserDept> luw = new LambdaUpdateWrapper<>();
158
+        luw.set(UserDept::getMainDept, 'N');
159
+        luw.eq(UserDept::getUserId, userId);
160
+        return baseMapper.update(null, luw) > 0;
161
+    }
162
+
163
+    @Override
164
+    public Boolean setUserDeptPost(UserDeptBo bo) {
165
+        this.updateMainDeptByUserId(bo.getUserId());
166
+        UserDept entity = MapstructUtils.convert(bo, UserDept.class);
167
+        LambdaQueryWrapper<UserDept> lqw = buildQueryWrapper(bo);
168
+        UserDeptVo vo = baseMapper.selectVoOne(lqw);
169
+        if (entity != null) {
170
+            entity.setMainDept("Y");
171
+        }
172
+        if(vo==null){
173
+            return baseMapper.insert(entity) > 0;
174
+        } else {
175
+            if (entity != null) {
176
+                entity.setUserDeptId(vo.getUserDeptId());
177
+            }
178
+            return baseMapper.updateById(entity) > 0;
179
+        }
180
+    }
181
+
182
+    @Override
183
+    public Boolean deleteByBo(UserDeptBo bo) {
184
+        LambdaQueryWrapper<UserDept> lqw = buildQueryWrapper(bo);
185
+        return baseMapper.delete(lqw) > 0;
186
+    }
187
+
188
+    @Override
189
+    public Boolean deleteByUserIds(Collection<Long> userIds) {
190
+        return baseMapper.delete(new LambdaQueryWrapper<UserDept>()
191
+            .in(UserDept::getUserId, userIds)
192
+            .eq(UserDept::getMainDept, 'N'))>0;
193
+    }
194
+}

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/UserDeptMapper.xml

@@ -2,9 +2,9 @@
2 2
 <!DOCTYPE mapper
3 3
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 4
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
-<mapper namespace="org.dromara.system.right.mapper.UserDeptMapper">
5
+<mapper namespace="org.dromara.system.mapper.UserDeptMapper">
6 6
 
7
-    <resultMap type="org.dromara.system.right.domain.UserDept" id="UserDeptResult">
7
+    <resultMap type="org.dromara.system.domain.UserDept" id="UserDeptResult">
8 8
             <result property="userDeptId"    column="user_dept_id"    />
9 9
             <result property="tenantId"    column="tenant_id"    />
10 10
             <result property="userId"    column="user_id"    />