Bläddra i källkod

新增 组织、岗位

18339543638 2 år sedan
förälder
incheckning
64e26b03f3
23 ändrade filer med 667 tillägg och 278 borttagningar
  1. 0 25
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysDeptMapper.java
  2. 28 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysOrgMapper.java
  3. 25 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysPositionMapper.java
  4. 0 86
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysDeptController.java
  5. 86 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysOrgController.java
  6. 78 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysPositionController.java
  7. 2 2
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgDTO.java
  8. 1 1
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgQueryDTO.java
  9. 28 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgTreeDTO.java
  10. 45 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysPositionDTO.java
  11. 29 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysPositionQueryDTO.java
  12. 3 3
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysUserDTO.java
  13. 2 2
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysOrgPO.java
  14. 39 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysPositionPO.java
  15. 1 1
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysUserPO.java
  16. 2 2
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/repository/SysOrgRepository.java
  17. 18 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/repository/SysPositionRepository.java
  18. 0 74
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysDeptService.java
  19. 75 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysOrgService.java
  20. 53 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysPositionService.java
  21. 0 82
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysDeptServiceImpl.java
  22. 87 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysOrgServiceImpl.java
  23. 65 0
      tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysPositionServiceImpl.java

+ 0 - 25
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysDeptMapper.java

@@ -1,25 +0,0 @@
-package cn.tr.module.sys.mapper.user;
-
-import cn.tr.module.sys.user.dto.SysDeptDTO;
-import cn.tr.module.sys.user.po.SysDeptPO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-/**
- * @ClassName : SysDeptMapper
- * @Description :
- * @Author : LF
- * @Date: 2023年03月31日
- */
-@Mapper
-public interface SysDeptMapper {
-    SysDeptMapper INSTANCE = Mappers.getMapper(SysDeptMapper.class);
-
-    List<SysDeptDTO> toSysDeptDTOList(List<SysDeptPO> source);
-
-    SysDeptDTO toSysDeptDTO(SysDeptPO source);
-
-    SysDeptPO toSysDeptPO(SysDeptDTO source);
-}

+ 28 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysOrgMapper.java

@@ -0,0 +1,28 @@
+package cn.tr.module.sys.mapper.user;
+
+import cn.tr.module.sys.user.dto.SysOrgDTO;
+import cn.tr.module.sys.user.dto.SysOrgTreeDTO;
+import cn.tr.module.sys.user.po.SysOrgPO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @ClassName : SysOrgMapper
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+@Mapper
+public interface SysOrgMapper {
+    SysOrgMapper INSTANCE = Mappers.getMapper(SysOrgMapper.class);
+
+    List<SysOrgDTO> toSysOrgDTOList(List<SysOrgPO> source);
+
+    SysOrgDTO toSysOrgDTO(SysOrgPO source);
+
+    SysOrgPO toSysOrgPO(SysOrgDTO source);
+    
+    List<SysOrgTreeDTO> toSysOrgTree(List<SysOrgDTO> source);
+}

+ 25 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/user/SysPositionMapper.java

@@ -0,0 +1,25 @@
+package cn.tr.module.sys.mapper.user;
+
+import cn.tr.module.sys.user.dto.SysPositionDTO;
+import cn.tr.module.sys.user.po.SysPositionPO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @ClassName : SysPositionMapper
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+@Mapper
+public interface SysPositionMapper {
+    SysPositionMapper INSTANCE = Mappers.getMapper(SysPositionMapper.class);
+
+    List<SysPositionDTO> toSysPositionDTOList(List<SysPositionPO> source);
+
+    SysPositionDTO toSysPositionDTO(SysPositionPO source);
+
+    SysPositionPO toSysPositionPO(SysPositionDTO source);
+}

+ 0 - 86
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysDeptController.java

@@ -1,86 +0,0 @@
-package cn.tr.module.sys.user.controller;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.tr.core.pojo.CommonResult;
-import cn.tr.core.pojo.TableDataInfo;
-import cn.tr.core.utils.TreeUtil;
-import cn.tr.core.validation.Insert;
-import cn.tr.core.validation.Update;
-import cn.tr.module.sys.user.dto.SysDeptDTO;
-import cn.tr.module.sys.user.dto.SysDeptQueryDTO;
-import cn.tr.module.sys.user.service.ISysDeptService;
-import cn.tr.plugin.mybatis.base.BaseController;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.*;
-/**
- * @ClassName : SysDeptController
- * @Description :
- * @Author : LF
- * @Date: 2023年03月24日
- */
-@RestController
-@RequestMapping("/sys/dept")
-@Api(tags = "部门")
-@AllArgsConstructor
-public class SysDeptController extends BaseController {
-    private final ISysDeptService deptService;
-
-    @PostMapping("/query/tree")
-    @ApiOperationSupport(author = "lf")
-    @ApiOperation(value = "根据条件查询部门树",notes = "权限: 无")
-    public CommonResult<List<SysDeptDTO>> selectTree(@RequestBody SysDeptQueryDTO query){
-        return CommonResult.success(TreeUtil.buildTree(deptService.selectSysDeptList(query)));
-    }
-
-
-    @PostMapping("/query/page")
-    @ApiOperationSupport(author = "lf")
-    @ApiOperation(value = "根据条件查询部门",notes = "权限: sys:dept:query")
-    @SaCheckPermission("sys:dept:query")
-    public TableDataInfo<SysDeptDTO> selectList(@RequestBody SysDeptQueryDTO query){
-        startPage();
-        return getDataTable(deptService.selectSysDeptList(query));
-    }
-
-    @GetMapping("/detail/{id}")
-    @ApiOperationSupport(author = "lf")
-    @ApiOperation(value = "根据id查询部门",notes = "权限: sys:dept:query")
-    @SaCheckPermission("sys:dept:query")
-    public CommonResult<SysDeptDTO> findById(@PathVariable("id") String id){
-        return CommonResult.success(deptService.selectSysDeptById(id));
-    }
-
-    @PostMapping("/edit")
-    @ApiOperationSupport(author = "lf")
-    @SaCheckPermission("sys:Dept:edit")
-    @ApiOperation(value = "根据id更新部门",notes = "权限: sys:Dept:edit")
-    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) SysDeptDTO source){
-        return CommonResult.success(deptService.updateSysDeptById(source));
-    }
-
-    @PostMapping("/add")
-    @ApiOperationSupport(author = "lf")
-    @SaCheckPermission("sys:Dept:add")
-    @ApiOperation(value = "新增部门",notes = "权限: sys:Dept:add")
-    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) SysDeptDTO source){
-        return CommonResult.success(deptService.insertSysDept(source));
-    }
-    
-    @PostMapping("/deleteByIds")
-    @ApiOperationSupport(author = "lf")
-    @ApiOperation(value = "删除部门",notes = "权限: sys:Dept:del")
-    @SaCheckPermission("sys:Dept:del")
-    public CommonResult<Integer> deleteByIds(@RequestBody Collection<String> ids){
-        return CommonResult.success(deptService.deleteSysDeptByIds(ids));
-    }
-    
-
-    //todo 导出
-
-}

+ 86 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysOrgController.java

@@ -0,0 +1,86 @@
+package cn.tr.module.sys.user.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.TableDataInfo;
+import cn.tr.core.validation.Insert;
+import cn.tr.core.validation.Update;
+import cn.tr.module.sys.user.dto.SysOrgDTO;
+import cn.tr.module.sys.user.dto.SysOrgQueryDTO;
+import cn.tr.module.sys.user.dto.SysOrgTreeDTO;
+import cn.tr.module.sys.user.service.ISysOrgService;
+import cn.tr.plugin.mybatis.base.BaseController;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+/**
+ * @ClassName : SysOrgController
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月24日
+ */
+@RestController
+@RequestMapping("/sys/org")
+@Api(tags = "组织")
+@AllArgsConstructor
+public class SysOrgController extends BaseController {
+    private final ISysOrgService orgService;
+
+    @PostMapping("/tree")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "组织树",notes = "权限: 无")
+    public CommonResult<List<SysOrgTreeDTO>> selectTree(){
+        return CommonResult.success(orgService.selectSysOrgTree());
+    }
+
+
+    @PostMapping("/query/page")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "根据条件查询组织",notes = "权限: sys:org:query")
+    @SaCheckPermission("sys:org:query")
+    public TableDataInfo<SysOrgDTO> selectList(@RequestBody SysOrgQueryDTO query){
+        startPage();
+        return getDataTable(orgService.selectSysOrgList(query));
+    }
+
+    @GetMapping("/detail/{id}")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "根据id查询组织",notes = "权限: sys:org:query")
+    @SaCheckPermission("sys:org:query")
+    public CommonResult<SysOrgDTO> findById(@PathVariable("id") String id){
+        return CommonResult.success(orgService.selectSysOrgById(id));
+    }
+
+    @PostMapping("/edit")
+    @ApiOperationSupport(author = "lf")
+    @SaCheckPermission("sys:Org:edit")
+    @ApiOperation(value = "根据id更新组织",notes = "权限: sys:Org:edit")
+    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) SysOrgDTO source){
+        return CommonResult.success(orgService.updateSysOrgById(source));
+    }
+
+    @PostMapping("/add")
+    @ApiOperationSupport(author = "lf")
+    @SaCheckPermission("sys:Org:add")
+    @ApiOperation(value = "新增组织",notes = "权限: sys:Org:add")
+    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) SysOrgDTO source){
+        return CommonResult.success(orgService.insertSysOrg(source));
+    }
+
+    @PostMapping("/deleteByIds")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "删除组织",notes = "权限: sys:Org:del")
+    @SaCheckPermission("sys:Org:del")
+    public CommonResult<Integer> deleteByIds(@RequestBody Collection<String> ids){
+        return CommonResult.success(orgService.deleteSysOrgByIds(ids));
+    }
+    
+
+    //todo 导出
+
+}

+ 78 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/controller/SysPositionController.java

@@ -0,0 +1,78 @@
+package cn.tr.module.sys.user.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.TableDataInfo;
+import cn.tr.core.validation.Insert;
+import cn.tr.core.validation.Update;
+import cn.tr.module.sys.user.dto.SysPositionDTO;
+import cn.tr.module.sys.user.dto.SysPositionQueryDTO;
+import cn.tr.module.sys.user.service.ISysPositionService;
+import cn.tr.plugin.mybatis.base.BaseController;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Collection;
+
+/**
+ * @ClassName : SysPositionController
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月24日
+ */
+@RestController
+@RequestMapping("/sys/pos")
+@Api(tags = "岗位")
+@AllArgsConstructor
+public class SysPositionController extends BaseController {
+    private final ISysPositionService PositionService;
+
+    @PostMapping("/query/page")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "根据条件查询岗位",notes = "权限: sys:pos:query")
+    @SaCheckPermission("sys:pos:query")
+    public TableDataInfo<SysPositionDTO> selectList(@RequestBody SysPositionQueryDTO query){
+        startPage();
+        return getDataTable(PositionService.selectSysPositionList(query));
+    }
+
+    @GetMapping("/detail/{id}")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "根据id查询岗位",notes = "权限: sys:pos:query")
+    @SaCheckPermission("sys:pos:query")
+    public CommonResult<SysPositionDTO> findById(@PathVariable("id") String id){
+        return CommonResult.success(PositionService.selectSysPositionById(id));
+    }
+
+    @PostMapping("/edit")
+    @ApiOperationSupport(author = "lf")
+    @SaCheckPermission("sys:pos:edit")
+    @ApiOperation(value = "根据id更新岗位",notes = "权限: sys:pos:edit")
+    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) SysPositionDTO source){
+        return CommonResult.success(PositionService.updateSysPositionById(source));
+    }
+
+    @PostMapping("/add")
+    @ApiOperationSupport(author = "lf")
+    @SaCheckPermission("sys:pos:add")
+    @ApiOperation(value = "新增岗位",notes = "权限: sys:pos:add")
+    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) SysPositionDTO source){
+        return CommonResult.success(PositionService.insertSysPosition(source));
+    }
+
+    @PostMapping("/deleteByIds")
+    @ApiOperationSupport(author = "lf")
+    @ApiOperation(value = "删除岗位",notes = "权限: sys:pos:del")
+    @SaCheckPermission("sys:pos:del")
+    public CommonResult<Integer> deleteByIds(@RequestBody Collection<String> ids){
+        return CommonResult.success(PositionService.deleteSysPositionByIds(ids));
+    }
+    
+
+    //todo 导出
+
+}

+ 2 - 2
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysDeptDTO.java → tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgDTO.java

@@ -16,8 +16,8 @@ import javax.validation.constraints.NotNull;
  * @date 2022-11-23 15:34:37
  */
 @Data
-@ApiModel("部门对象")
-public class SysDeptDTO extends TreeNode<String> {
+@ApiModel("组织对象")
+public class SysOrgDTO extends TreeNode<String> {
 
     private static final long serialVersionUID = 1L;
 

+ 1 - 1
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysDeptQueryDTO.java → tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgQueryDTO.java

@@ -13,7 +13,7 @@ import java.io.Serializable;
  */
 @Data
 @ApiModel("部门查询参数")
-public class SysDeptQueryDTO implements Serializable {
+public class SysOrgQueryDTO implements Serializable {
     private static final long serialVersionUID = -262693810220247854L;
     @ApiModelProperty(value = "父级部门id")
     private String parentId;

+ 28 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysOrgTreeDTO.java

@@ -0,0 +1,28 @@
+package cn.tr.module.sys.user.dto;
+
+import cn.tr.core.tree.TreeNode;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName : SysOrgTreeDTO
+ * @Description : 部门树
+ * @Author : LF
+ * @Date: 2023年04月05日
+ */
+@Data
+public class SysOrgTreeDTO extends TreeNode<String> {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键",required = true)
+    private String id;
+
+    @ApiModelProperty(value = "父级id 顶级目录的父级id为0",required = true)
+    private String parentId;
+
+    @ApiModelProperty(value = "排序",readOnly = true)
+    private Integer sort;
+
+    @ApiModelProperty(value = "部门名称",readOnly = true)
+    private String name;
+}

+ 45 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysPositionDTO.java

@@ -0,0 +1,45 @@
+package cn.tr.module.sys.user.dto;
+
+import cn.tr.core.validation.Insert;
+import cn.tr.core.validation.Update;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * 岗位
+ */
+@Data
+public class SysPositionDTO implements Serializable {
+
+    private static final long serialVersionUID = -7314723402227370899L;
+    /** id */
+    @ApiModelProperty(value = "id")
+    @NotEmpty(message = "岗位id不能为空",groups = {Update.class})
+    private String id;
+
+    /** 名称 */
+    @ApiModelProperty(value = "岗位名称",required = true)
+    @NotEmpty(message = "岗位名称不能为空",groups = {Insert.class,Update.class})
+    private String posName;
+
+    /** 编码 */
+    @ApiModelProperty(value = "岗位编码",required = true)
+    @NotEmpty(message = "岗位编码不能为空",groups = {Insert.class,Update.class})
+    private String posCode;
+
+    /** 排序码 */
+    @ApiModelProperty(value = "排序码",required = true)
+    @NotEmpty(message = "岗位排序码不能为空",groups = {Insert.class,Update.class})
+    private Integer sort;
+
+    @ApiModelProperty(value = "备注")
+    private Boolean remark;
+
+
+    @ApiModelProperty(value = "状态 0正常;1停用",required = true)
+    @NotEmpty(message = "岗位状态不能为空",groups = {Insert.class,Update.class})
+    private Boolean disable;
+}

+ 29 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysPositionQueryDTO.java

@@ -0,0 +1,29 @@
+package cn.tr.module.sys.user.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : SysPositionQueryDTO
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年04月01日
+ */
+@Data
+@ApiModel("岗位查询参数")
+public class SysPositionQueryDTO implements Serializable {
+    private static final long serialVersionUID = -262693810220247854L;
+    @ApiModelProperty(value = "岗位编码")
+    private String posCode;
+
+    @ApiModelProperty(value = "岗位名称")
+    private String posName;
+
+    @ApiModelProperty(value = "是否启用 0、启用 1、关闭")
+    private Boolean disable;
+
+
+}

+ 3 - 3
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/dto/SysUserDTO.java

@@ -50,9 +50,9 @@ public class SysUserDTO {
     /**
      * 部门id
      */
-    @ApiModelProperty(value = "部门id")
-    @NotEmpty(message = "部门不能为空",groups = {Insert.class, Update.class})
-    private String deptId;
+    @ApiModelProperty(value = "组织id")
+    @NotEmpty(message = "组织不能为空",groups = {Insert.class, Update.class})
+    private String orgId;
 
     /**
      * 手机号

+ 2 - 2
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysDeptPO.java → tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysOrgPO.java

@@ -14,9 +14,9 @@ import lombok.ToString;
  * @date 2022-11-23 15:34:37
  */
 @Data
-@TableName(value = "sys_dept",autoResultMap = true)
+@TableName(value = "sys_org",autoResultMap = true)
 @ToString
-public class SysDeptPO extends TenantPO {
+public class SysOrgPO extends TenantPO {
 
     private static final long serialVersionUID = 1L;
 

+ 39 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysPositionPO.java

@@ -0,0 +1,39 @@
+package cn.tr.module.sys.user.po;
+
+import cn.tr.core.annotation.Comment;
+import cn.tr.plugin.mybatis.pojo.TenantPO;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 职位
+ */
+@TableName("sys_position")
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysPositionPO extends TenantPO {
+
+    /** id */
+    @Comment(value = "id")
+    private String id;
+
+    /** 名称 */
+    @Comment(value = "岗位名称")
+    private String posName;
+
+    /** 编码 */
+    @Comment(value = "岗位编码")
+    private String posCode;
+
+    /** 排序码 */
+    @Comment(value = "排序码")
+    private Integer sort;
+
+    @Comment(value = "备注")
+    private Boolean remark;
+
+
+    @Comment(value = "状态 0正常;1停用")
+    private Boolean disable;
+}

+ 1 - 1
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/po/SysUserPO.java

@@ -40,7 +40,7 @@ public class SysUserPO extends TenantPO {
     private String gender;
 
     @Comment("部门id")
-    private String deptId;
+    private String orgId;
 
     @Comment("手机号")
     private String phone;

+ 2 - 2
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/repository/SysDeptRepository.java → tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/repository/SysOrgRepository.java

@@ -1,6 +1,6 @@
 package cn.tr.module.sys.user.repository;
 
-import cn.tr.module.sys.user.po.SysDeptPO;
+import cn.tr.module.sys.user.po.SysOrgPO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
@@ -13,6 +13,6 @@ import org.springframework.stereotype.Repository;
  */
 @Mapper
 @Repository
-public interface SysDeptRepository extends BaseMapper<SysDeptPO> {
+public interface SysOrgRepository extends BaseMapper<SysOrgPO> {
 
 }

+ 18 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/repository/SysPositionRepository.java

@@ -0,0 +1,18 @@
+package cn.tr.module.sys.user.repository;
+
+import cn.tr.module.sys.user.po.SysPositionPO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @ClassName : SysRoleMenuRepository
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+@Mapper
+@Repository
+public interface SysPositionRepository extends BaseMapper<SysPositionPO> {
+
+}

+ 0 - 74
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysDeptService.java

@@ -1,74 +0,0 @@
-package cn.tr.module.sys.user.service;
-
-import cn.tr.module.sys.user.dto.SysDeptDTO;
-import cn.tr.module.sys.user.dto.SysDeptQueryDTO;
-import cn.tr.plugin.mybatis.service.ITreeService;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @ClassName : ISysDeptService
- * @Description :
- * @Author : LF
- * @Date: 2023年03月31日
- */
-
-public interface ISysDeptService extends ITreeService {
-
-    /**
-     * 根据条件查询构造树结构
-     * @param query 查询参数
-     * @return
-     */
-    default List<SysDeptDTO> selectSysDeptTree(SysDeptQueryDTO query){
-        return buildTree(selectSysDeptList(query));
-    };
-
-    /**
-     * 根据条件查询构造树结构
-     * @param query 查询参数
-     * @param excludeIds 构造树时排除的节点id
-     * @return
-     */
-    default List<SysDeptDTO> selectSysDeptTree(SysDeptQueryDTO query, List<String> excludeIds){
-        return buildTree(selectSysDeptList(query),excludeIds);
-    };
-
-    /**
-     * 根据条件查询
-     * @param query 查询参数
-     * @return
-     */
-    List<SysDeptDTO> selectSysDeptList(SysDeptQueryDTO query);
-
-
-    /**
-     * 根据id查询操作部门
-     * @param id 部门id
-     * @return 部门
-     */
-    SysDeptDTO selectSysDeptById(String id);
-
-    /**
-     * 更新部门
-     * @param source 更新部门
-     * @return true:更新成功
-     */
-    boolean updateSysDeptById(SysDeptDTO source);
-
-    /**
-     * 新增部门
-     * @param source 新增部门
-     * @return true:新增成功
-     */
-    boolean insertSysDept(SysDeptDTO source);
-
-    /**
-     * 根据id删除部门
-     * @param ids 部门id
-     * @return 删除数量
-     */
-    int deleteSysDeptByIds(Collection<String> ids);
-
-}

+ 75 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysOrgService.java

@@ -0,0 +1,75 @@
+package cn.tr.module.sys.user.service;
+
+import cn.tr.module.sys.mapper.user.SysOrgMapper;
+import cn.tr.module.sys.user.dto.SysOrgDTO;
+import cn.tr.module.sys.user.dto.SysOrgQueryDTO;
+import cn.tr.module.sys.user.dto.SysOrgTreeDTO;
+import cn.tr.plugin.mybatis.service.ITreeService;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @ClassName : ISysOrgService
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+
+public interface ISysOrgService extends ITreeService {
+
+    
+    /**
+     * 根据条件查询构造树结构
+     * @return
+     */
+    @Cacheable(value = "sys:org")
+    default List<SysOrgTreeDTO> selectSysOrgTree(){
+        SysOrgQueryDTO query = new SysOrgQueryDTO();
+        query.setDisable(false);
+        return buildTree(SysOrgMapper.INSTANCE.toSysOrgTree(selectSysOrgList(query)));
+    };
+    
+    @CacheEvict(value = "sys:org")
+    default void delSysOrgTreeCache(){
+        
+    }
+    /**
+     * 根据条件查询
+     * @param query 查询参数
+     * @return
+     */
+    List<SysOrgDTO> selectSysOrgList(SysOrgQueryDTO query);
+
+
+    /**
+     * 根据id查询操作组织
+     * @param id 组织id
+     * @return 组织
+     */
+    SysOrgDTO selectSysOrgById(String id);
+
+    /**
+     * 更新组织
+     * @param source 更新组织
+     * @return true:更新成功
+     */
+    boolean updateSysOrgById(SysOrgDTO source);
+
+    /**
+     * 新增组织
+     * @param source 新增组织
+     * @return true:新增成功
+     */
+    boolean insertSysOrg(SysOrgDTO source);
+
+    /**
+     * 根据id删除组织
+     * @param ids 组织id
+     * @return 删除数量
+     */
+    int deleteSysOrgByIds(Collection<String> ids);
+
+}

+ 53 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysPositionService.java

@@ -0,0 +1,53 @@
+package cn.tr.module.sys.user.service;
+
+import cn.tr.module.sys.user.dto.SysPositionDTO;
+import cn.tr.module.sys.user.dto.SysPositionQueryDTO;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @ClassName : ISysPositionService
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+
+public interface ISysPositionService{
+    /**
+     * 根据条件查询
+     * @param query 查询参数
+     * @return
+     */
+    List<SysPositionDTO> selectSysPositionList(SysPositionQueryDTO query);
+
+
+    /**
+     * 根据id查询操作岗位
+     * @param id 岗位id
+     * @return 岗位
+     */
+    SysPositionDTO selectSysPositionById(String id);
+
+    /**
+     * 更新岗位
+     * @param source 更新岗位
+     * @return true:更新成功
+     */
+    boolean updateSysPositionById(SysPositionDTO source);
+
+    /**
+     * 新增岗位
+     * @param source 新增岗位
+     * @return true:新增成功
+     */
+    boolean insertSysPosition(SysPositionDTO source);
+
+    /**
+     * 根据id删除岗位
+     * @param ids 岗位id
+     * @return 删除数量
+     */
+    int deleteSysPositionByIds(Collection<String> ids);
+
+}

+ 0 - 82
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysDeptServiceImpl.java

@@ -1,82 +0,0 @@
-package cn.tr.module.sys.user.service.impl;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.tr.core.exception.ServiceException;
-import cn.tr.core.exception.TRExcCode;
-import cn.tr.core.utils.JsonUtils;
-import cn.tr.module.sys.mapper.user.SysDeptMapper;
-import cn.tr.module.sys.user.dto.SysDeptDTO;
-import cn.tr.module.sys.user.dto.SysDeptQueryDTO;
-import cn.tr.module.sys.user.po.SysDeptPO;
-import cn.tr.module.sys.user.po.SysUserPO;
-import cn.tr.module.sys.user.repository.SysDeptRepository;
-import cn.tr.module.sys.user.repository.SysUserRepository;
-import cn.tr.module.sys.user.service.ISysDeptService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @ClassName : SysDeptServiceImpl
- * @Description :
- * @Author : LF
- * @Date: 2023年03月31日
- */
-@Service
-public class SysDeptServiceImpl implements ISysDeptService {
-    @Autowired
-    private SysDeptRepository deptRepository;
-    @Autowired
-    private SysUserRepository userRepository;
-
-    @Override
-    public List<SysDeptDTO> selectSysDeptList(SysDeptQueryDTO query) {
-        return SysDeptMapper.INSTANCE.toSysDeptDTOList(deptRepository.selectList(new LambdaQueryWrapper<SysDeptPO>()
-                .like(StrUtil.isNotEmpty(query.getName()),SysDeptPO::getName,query.getName())
-                .eq(StrUtil.isNotEmpty(query.getParentId()),SysDeptPO::getParentId,query.getParentId())
-                .eq(ObjectUtil.isNotNull(query.getDisable()),SysDeptPO::getDisable,query.getDisable()))
-        );
-    }
-
-    @Override
-    public SysDeptDTO selectSysDeptById(String id) {
-        return SysDeptMapper.INSTANCE.toSysDeptDTO(deptRepository.selectById(id));
-    }
-
-    @Override
-    public boolean updateSysDeptById(SysDeptDTO source) {
-        return deptRepository.updateById(SysDeptMapper.INSTANCE.toSysDeptPO(source))!=0;
-    }
-    @Override
-    public boolean insertSysDept(SysDeptDTO source) {
-        return deptRepository.insert(SysDeptMapper.INSTANCE.toSysDeptPO(source))!=0;
-    }
-
-    @Override
-    public int deleteSysDeptByIds(Collection<String> ids) {
-        List<SysDeptPO> depts = deptRepository.selectBatchIds(ids);
-        if(CollectionUtil.isEmpty(depts)){
-            return CollectionUtil.size(ids);
-        }
-        List<SysUserPO> deptUsers = userRepository.selectList(new LambdaQueryWrapper<SysUserPO>()
-                .in(SysUserPO::getDeptId, ids));
-        if(CollectionUtil.isNotEmpty(deptUsers)){
-            //部门用户
-            Map<String, SysDeptPO> deptMap = depts.stream().collect(Collectors.groupingBy(SysDeptPO::getId, Collectors.collectingAndThen(Collectors.toList(), CollectionUtil::getFirst)));
-            Set<String> userDeptIds = deptUsers.stream().map(SysUserPO::getDeptId).collect(Collectors.toSet());
-            Set<String> existName = userDeptIds.stream()
-                    .map(deptMap::get)
-                    .filter(Objects::nonNull)
-                    .map(SysDeptPO::getName)
-                    .collect(Collectors.toSet());
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,String.format("部门 %s 下存在用户,不可删除", JsonUtils.toJsonString(existName)));
-
-        }
-        return deptRepository.deleteBatchIds(ids);
-    }
-}

+ 87 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysOrgServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.tr.module.sys.user.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.tr.core.exception.ServiceException;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.sys.mapper.user.SysOrgMapper;
+import cn.tr.module.sys.user.dto.SysOrgDTO;
+import cn.tr.module.sys.user.dto.SysOrgQueryDTO;
+import cn.tr.module.sys.user.po.SysOrgPO;
+import cn.tr.module.sys.user.po.SysUserPO;
+import cn.tr.module.sys.user.repository.SysOrgRepository;
+import cn.tr.module.sys.user.repository.SysUserRepository;
+import cn.tr.module.sys.user.service.ISysOrgService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : SysOrgServiceImpl
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+@Service
+public class SysOrgServiceImpl implements ISysOrgService {
+    @Autowired
+    private SysOrgRepository orgRepository;
+    @Autowired
+    private SysUserRepository userRepository;
+
+    @Override
+    public List<SysOrgDTO> selectSysOrgList(SysOrgQueryDTO query) {
+        return SysOrgMapper.INSTANCE.toSysOrgDTOList(orgRepository.selectList(new LambdaQueryWrapper<SysOrgPO>()
+                .like(StrUtil.isNotEmpty(query.getName()), SysOrgPO::getName,query.getName())
+                .eq(StrUtil.isNotEmpty(query.getParentId()), SysOrgPO::getParentId,query.getParentId())
+                .eq(ObjectUtil.isNotNull(query.getDisable()), SysOrgPO::getDisable,query.getDisable()))
+        );
+    }
+
+    @Override
+    public SysOrgDTO selectSysOrgById(String id) {
+        return SysOrgMapper.INSTANCE.toSysOrgDTO(orgRepository.selectById(id));
+    }
+
+    @Override
+    @CacheEvict(value = "sys:org")
+    public boolean updateSysOrgById(SysOrgDTO source) {
+        return orgRepository.updateById(SysOrgMapper.INSTANCE.toSysOrgPO(source))!=0;
+    }
+    @Override
+    @CacheEvict(value = "sys:org")
+    public boolean insertSysOrg(SysOrgDTO source) {
+        return orgRepository.insert(SysOrgMapper.INSTANCE.toSysOrgPO(source))!=0;
+    }
+
+    @Override
+    @CacheEvict(value = "sys:org")
+    public int deleteSysOrgByIds(Collection<String> ids) {
+        List<SysOrgPO> orgs = orgRepository.selectBatchIds(ids);
+        if(CollectionUtil.isEmpty(orgs)){
+            return CollectionUtil.size(ids);
+        }
+        List<SysUserPO> orgUsers = userRepository.selectList(new LambdaQueryWrapper<SysUserPO>()
+                .in(SysUserPO::getOrgId, ids));
+        if(CollectionUtil.isNotEmpty(orgUsers)){
+            //部门用户
+            Map<String, SysOrgPO> orgMap = orgs.stream().collect(Collectors.groupingBy(SysOrgPO::getId, Collectors.collectingAndThen(Collectors.toList(), CollectionUtil::getFirst)));
+            Set<String> userOrgIds = orgUsers.stream().map(SysUserPO::getOrgId).collect(Collectors.toSet());
+            Set<String> existName = userOrgIds.stream()
+                    .map(orgMap::get)
+                    .filter(Objects::nonNull)
+                    .map(SysOrgPO::getName)
+                    .collect(Collectors.toSet());
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,String.format("部门 %s 下存在用户,不可删除", JsonUtils.toJsonString(existName)));
+
+        }
+        return orgRepository.deleteBatchIds(ids);
+    }
+}

+ 65 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysPositionServiceImpl.java

@@ -0,0 +1,65 @@
+package cn.tr.module.sys.user.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.tr.core.exception.ServiceException;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.sys.mapper.user.SysPositionMapper;
+import cn.tr.module.sys.user.dto.SysPositionDTO;
+import cn.tr.module.sys.user.dto.SysPositionQueryDTO;
+import cn.tr.module.sys.user.po.SysPositionPO;
+import cn.tr.module.sys.user.po.SysUserPO;
+import cn.tr.module.sys.user.repository.SysPositionRepository;
+import cn.tr.module.sys.user.repository.SysUserRepository;
+import cn.tr.module.sys.user.service.ISysPositionService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : SysPositionServiceImpl
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月31日
+ */
+@Service
+public class SysPositionServiceImpl implements ISysPositionService {
+    @Autowired
+    private SysPositionRepository positionRepository;
+    @Autowired
+    private SysUserRepository userRepository;
+
+    @Override
+    public List<SysPositionDTO> selectSysPositionList(SysPositionQueryDTO query) {
+        return SysPositionMapper.INSTANCE.toSysPositionDTOList(positionRepository.selectList(new LambdaQueryWrapper<SysPositionPO>()
+                .like(StrUtil.isNotEmpty(query.getPosName()), SysPositionPO::getPosName,query.getPosName())
+                .like(StrUtil.isNotEmpty(query.getPosCode()), SysPositionPO::getPosCode,query.getPosCode())
+                .eq(ObjectUtil.isNotNull(query.getDisable()), SysPositionPO::getDisable,query.getDisable()))
+        );
+    }
+
+    @Override
+    public SysPositionDTO selectSysPositionById(String id) {
+        return SysPositionMapper.INSTANCE.toSysPositionDTO(positionRepository.selectById(id));
+    }
+
+    @Override
+    public boolean updateSysPositionById(SysPositionDTO source) {
+        return positionRepository.updateById(SysPositionMapper.INSTANCE.toSysPositionPO(source))!=0;
+    }
+    @Override
+    public boolean insertSysPosition(SysPositionDTO source) {
+        return positionRepository.insert(SysPositionMapper.INSTANCE.toSysPositionPO(source))!=0;
+    }
+
+    @Override
+    public int deleteSysPositionByIds(Collection<String> ids) {
+        //todo 检测岗位是否被使用
+        return positionRepository.deleteBatchIds(ids);
+    }
+}