Bladeren bron

2022-8-5 基础功能开发

沈永艺 3 jaren geleden
bovenliggende
commit
5261d88aa3
45 gewijzigde bestanden met toevoegingen van 1178 en 279 verwijderingen
  1. 22 19
      PCS/src/main/java/cn/cslg/permission/common/config/SaTokenConfigure.java
  2. 4 4
      PCS/src/main/java/cn/cslg/permission/common/model/BaseEntity.java
  3. 19 0
      PCS/src/main/java/cn/cslg/permission/common/model/BaseVO.java
  4. 16 3
      PCS/src/main/java/cn/cslg/permission/common/model/vo/ApplicationVO.java
  5. 53 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/DepartmentVO.java
  6. 21 16
      PCS/src/main/java/cn/cslg/permission/common/model/vo/FunctionVO.java
  7. 119 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/PersonnelVO.java
  8. 52 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/PositionVO.java
  9. 46 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/RoleVO.java
  10. 83 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVO.java
  11. 46 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/UserGroupVO.java
  12. 17 5
      PCS/src/main/java/cn/cslg/permission/controller/ApplicationController.java
  13. 52 0
      PCS/src/main/java/cn/cslg/permission/controller/DepartmentController.java
  14. 17 4
      PCS/src/main/java/cn/cslg/permission/controller/FunctionController.java
  15. 43 0
      PCS/src/main/java/cn/cslg/permission/controller/LoginController.java
  16. 35 0
      PCS/src/main/java/cn/cslg/permission/controller/PersonnelController.java
  17. 4 0
      PCS/src/main/java/cn/cslg/permission/controller/PositionController.java
  18. 4 0
      PCS/src/main/java/cn/cslg/permission/controller/RoleController.java
  19. 4 0
      PCS/src/main/java/cn/cslg/permission/controller/TenantController.java
  20. 4 0
      PCS/src/main/java/cn/cslg/permission/controller/UserGroupController.java
  21. 2 3
      PCS/src/main/java/cn/cslg/permission/domain/Application.java
  22. 2 3
      PCS/src/main/java/cn/cslg/permission/domain/Department.java
  23. 18 18
      PCS/src/main/java/cn/cslg/permission/domain/Function.java
  24. 67 62
      PCS/src/main/java/cn/cslg/permission/domain/Personnel.java
  25. 26 3
      PCS/src/main/java/cn/cslg/permission/domain/Position.java
  26. 15 3
      PCS/src/main/java/cn/cslg/permission/domain/Role.java
  27. 63 3
      PCS/src/main/java/cn/cslg/permission/domain/Tenant.java
  28. 20 3
      PCS/src/main/java/cn/cslg/permission/domain/UserGroup.java
  29. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/ApplicationMapper.java
  30. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/DepartmentMapper.java
  31. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/FunctionMapper.java
  32. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/PersonnelMapper.java
  33. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/PositionMapper.java
  34. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/RoleMapper.java
  35. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/TenantEntityMapper.java
  36. 1 2
      PCS/src/main/java/cn/cslg/permission/mapper/UserGroupMapper.java
  37. 44 10
      PCS/src/main/java/cn/cslg/permission/service/ApplicationService.java
  38. 16 2
      PCS/src/main/java/cn/cslg/permission/service/DepartmentService.java
  39. 82 92
      PCS/src/main/java/cn/cslg/permission/service/FunctionService.java
  40. 42 0
      PCS/src/main/java/cn/cslg/permission/service/LoginService.java
  41. 48 2
      PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java
  42. 16 2
      PCS/src/main/java/cn/cslg/permission/service/PositionService.java
  43. 16 2
      PCS/src/main/java/cn/cslg/permission/service/RoleService.java
  44. 16 2
      PCS/src/main/java/cn/cslg/permission/service/TenantService.java
  45. 16 2
      PCS/src/main/java/cn/cslg/permission/service/UserGroupService.java

+ 22 - 19
PCS/src/main/java/cn/cslg/permission/common/config/SaTokenConfigure.java

@@ -10,26 +10,29 @@ import cn.dev33.satoken.stp.StpUtil;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-//@Configuration
+@Configuration
 public class SaTokenConfigure {
 
-//    @Bean
-//    public SaServletFilter getSaServletFilter() {
-//        return new SaServletFilter()
-//                .addInclude(Constants.PERMISSION_API + "/**")
-//                .addExclude("/favicon.ico")
-//                .setAuth(obj -> {
-//                    SaRouter.match(Constants.PERMISSION_API + "/**").notMatch(
-//                            Constants.PERMISSION_API + "/ws/**",
-//                            Constants.PERMISSION_API + "/test/**",
-//                            Constants.PERMISSION_API + "/oauth2/**",
-//                            Constants.PERMISSION_API + "/admin/**",
-//                            Constants.PERMISSION_API + "/common/download",
-//                            Constants.PERMISSION_API + "/common/export"
-//                    ).check(StpUtil::checkLogin);
-//                    SaRouter.match(Constants.PERMISSION_API + "/admin/**", Constants.PERMISSION_API + "/admin/login", StpAdminUtil::checkLogin);
-//                })
-//                .setError(e -> Response.error(ResponseEnum.UNAUTHORIZED));
-//    }
+    @Bean
+    public SaServletFilter getSaServletFilter() {
+        return new SaServletFilter()
+                .addInclude(Constants.PERMISSION_API + "/**")
+                .addExclude("/favicon.ico")
+                .setAuth(obj -> {
+                    System.out.println("---------- 进入sa-token全局认证 -----------");
+                    SaRouter.match(Constants.PERMISSION_API + "/**")
+                            .notMatch(
+                                    Constants.PERMISSION_API + "/ws/**",
+                                    Constants.PERMISSION_API + "/test/**",
+                                    Constants.PERMISSION_API + "/oauth2/**",
+                                    Constants.PERMISSION_API + "/admin/**",
+                                    Constants.PERMISSION_API + "/common/download",
+                                    Constants.PERMISSION_API + "/common/export", Constants.PERMISSION_API + "/common/download"
+                            ).check(StpUtil::checkLogin);
+                    SaRouter.match(Constants.PERMISSION_API + "/admin/**", Constants.PERMISSION_API + "/admin/login", StpAdminUtil::checkLogin);
+                    System.out.println("---------- 退出sa-token全局认证 -----------");
+                })
+                .setError(e -> Response.error(ResponseEnum.UNAUTHORIZED));
+    }
 
 }

+ 4 - 4
PCS/src/main/java/cn/cslg/permission/common/model/BaseEntity.java

@@ -10,13 +10,13 @@ import java.util.Date;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description Entity基类
  */
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
+
 @Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
 public class BaseEntity<T extends Model> extends Model {
     private static final long serialVersionUID = -4851055162892178225L;
 

+ 19 - 0
PCS/src/main/java/cn/cslg/permission/common/model/BaseVO.java

@@ -3,9 +3,28 @@ package cn.cslg.permission.common.model;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+/**
+ * @author 沈永艺
+ * @date 2022-8-3
+ * @description VO基类
+ */
+
 @Data
 @Accessors(chain = true)
 public class BaseVO {
+    /**
+     * 每页条数
+     */
     private Integer size;
+
+    /**
+     * 当前页数
+     */
     private Integer current;
+
+    /**
+     * 数据总数
+     */
+    private Integer total;
+
 }

+ 16 - 3
PCS/src/main/java/cn/cslg/permission/common/model/vo/ApplicationVO.java

@@ -5,17 +5,30 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-@EqualsAndHashCode(callSuper = true)
+/**
+ * @author 沈永艺
+ * @date 2022-8-3
+ * @description 应用类 前台对应实体
+ */
+
 @Data
 @Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
 public class ApplicationVO extends BaseVO {
     /**
-     * 应用名称
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:应用名称
+     * Back:应用名称
      */
     private String name;
 
     /**
-     * 应用描述
+     * Front:应用描述
+     * Back:应用描述
      */
     private String describe;
 }

+ 53 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/DepartmentVO.java

@@ -0,0 +1,53 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 部门类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class DepartmentVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:部门名称
+     * Back:部门名称
+     */
+    private String name;
+
+    /**
+     * Front:备注
+     * Back:部门描述
+     */
+    private String remark;
+
+    /**
+     * Front:所属部门
+     * Back:部门(上级)
+     */
+    private Integer updepartment;
+
+    /**
+     * Front:所属租户
+     * Back:租户ID
+     */
+    private Integer tenant;
+
+    /**
+     * Front:角色
+     * Back:
+     */
+    private Integer role;
+
+}

+ 21 - 16
PCS/src/main/java/cn/cslg/permission/common/model/vo/FunctionVO.java

@@ -1,54 +1,59 @@
 package cn.cslg.permission.common.model.vo;
 
 import cn.cslg.permission.common.model.BaseVO;
-import cn.cslg.permission.domain.Function;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-import java.util.List;
+/**
+ * @author 沈永艺
+ * @date 2022-8-3
+ * @description 功能类 前台对应实体
+ */
 
-@EqualsAndHashCode(callSuper = true)
 @Data
 @Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
 public class FunctionVO extends BaseVO {
     /**
-     * id
+     * ID
      */
     private Integer id;
 
     /**
-     * 功能权限名称
+     * Front:功能名称
+     * Back:功能权限名称
      */
     private String name;
 
     /**
-     * 功能权限描述
+     * Front:功能描述
+     * Back:功能权限描述
      */
     private String describe;
 
     /**
-     * 功能权限所属应用
+     * Front:所属应用
+     * Back:功能权限所属应用ID
      */
     private Integer apply;
 
     /**
-     * 功能权限(上级)
+     * Front:所属功能
+     * Back:功能权限(上级)
      */
     private Integer function;
 
     /**
-     * 功能权限对应功能
-     */
-    private String sign;
-
-    /**
-     * 功能权限上级名称
+     * Front:所属功能名称
+     * Back:
      */
     private String upName;
 
     /**
-     * 功能权限子项
+     * Front:功能标识
+     * Back:功能权限对应功能
      */
-    private List<FunctionVO> children;
+    private String sign;
+
 }

+ 119 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/PersonnelVO.java

@@ -0,0 +1,119 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 人员类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PersonnelVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:姓名
+     * Back:人员名称
+     */
+    private String name;
+
+    /**
+     * Front:性别
+     * Back:人员性别
+     */
+    private Integer gender;
+
+    /**
+     * Front:邮箱
+     * Back:人员邮箱
+     */
+    private String email;
+
+    /**
+     * Front:联系方式
+     * Back:人员联系电话
+     */
+    private String mobile;
+
+    /**
+     * Front:所属租户
+     * Back:租户ID
+     */
+    private Integer tenant;
+
+    /**
+     * Front:所属部门
+     * Back:
+     */
+    private Integer department;
+
+    /**
+     * Front:担任职位
+     * Back:
+     */
+    private Integer position;
+
+    /**
+     * Front:所属用户组
+     * Back:
+     */
+    private Integer group;
+
+    /**
+     * Front:角色
+     * Back:
+     */
+    private Integer role;
+
+    /**
+     * Front:状态
+     * Back:人员账号状态(1启用0停用)
+     */
+    private Integer state;
+
+    /**
+     * Front:账号
+     * Back:人员账号
+     */
+    private String username;
+
+    /**
+     * Front:密码
+     * Back:人员密码
+     */
+    private String password;
+
+    /**
+     * Front:备注
+     * Back:人员描述
+     */
+    private String remark;
+
+    /**
+     * Front:QQ号
+     * Back:人员QQ号
+     */
+    private String QQnumber;
+
+    /**
+     * Front:微信号
+     * Back:人员微信号
+     */
+    private String wechat;
+
+    /**
+     * Front:钉钉号
+     * Back:人员钉钉号
+     */
+    private String nail;
+
+}

+ 52 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/PositionVO.java

@@ -0,0 +1,52 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 职位类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class PositionVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:职位名称
+     * Back:职位名称
+     */
+    private String position;
+
+    /**
+     * Front:所属租户
+     * Back:租户ID
+     */
+    private Integer tenant;
+
+    /**
+     * Front:所属部门
+     * Back:
+     */
+    private Integer updepartment;
+
+    /**
+     * Front:描述
+     * Back:职位描述
+     */
+    private String remark;
+
+    /**
+     * Front:是否多人
+     * Back:职位是否多人(1是0否)
+     */
+    private Integer positionIsMore;
+}

+ 46 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/RoleVO.java

@@ -0,0 +1,46 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 角色类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class RoleVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:角色名称
+     * Back:角色名称
+     */
+    private String name;
+
+    /**
+     * Front:功能权限
+     * Back:
+     */
+    private Integer function;
+
+    /**
+     * Front:数据权限
+     * Back:
+     */
+    private Integer data;
+
+    /**
+     * Front:备注
+     * Back:角色描述
+     */
+    private String remark;
+}

+ 83 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVO.java

@@ -0,0 +1,83 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 租户类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class TenantVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:名称
+     * Back:租户名称
+     */
+    private String name;
+
+    /**
+     * Front:联系人
+     * Back:租户联系人
+     */
+    private String contacts;
+
+    /**
+     * Front:联系地址
+     * Back:租户联系地址
+     */
+    private String address;
+
+    /**
+     * Front:描述
+     * Back:租户描述
+     */
+    private String describe;
+
+    /**
+     * Front:用户账号配额
+     * Back:租户账号配额
+     */
+    private String number;
+
+    /**
+     * Front:管理员账号
+     * Back:
+     */
+    private String username;
+
+    /**
+     * Front:管理员密码
+     * Back:
+     */
+    private String password;
+
+    /**
+     * Front:可用功能权限
+     * Back:
+     */
+    private Integer power;
+
+    /**
+     * Front:状态
+     * Back:租户状态(1启用0停用)
+     */
+    private String state;
+
+    /**
+     * Front:类型
+     * Back:租户类型
+     */
+    private String type;
+
+}

+ 46 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/UserGroupVO.java

@@ -0,0 +1,46 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.common.model.BaseVO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-4
+ * @description 用户组类 前台对应实体
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class UserGroupVO extends BaseVO {
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * Front:用户组名称
+     * Back:用户组名称
+     */
+    private String name;
+
+    /**
+     * Front:组员
+     * Back:
+     */
+    private Integer users;
+
+    /**
+     * Front:角色
+     * Back:
+     */
+    private Integer role;
+
+    /**
+     * Front:备注
+     * Back:用户组描述
+     */
+    private String remark;
+}

+ 17 - 5
PCS/src/main/java/cn/cslg/permission/controller/ApplicationController.java

@@ -11,13 +11,11 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
 /**
- * <p>
- * 管理员 前端控制器
- * </p>
- *
  * @author 沈永艺
- * @since 2022-8-3
+ * @date 2022-8-3
+ * @description 应用类 Controller 层
  */
+
 @Tag(name = "应用管理")
 @RestController
 @RequestMapping(Constants.PERMISSION_API + "/application")
@@ -32,6 +30,20 @@ public class ApplicationController {
         return Response.success(true);
     }
 
+    @PostMapping("/delete")
+    @Operation(summary = "删除应用")
+    public String deleteApplication(ApplicationVO applicationVO) {
+        applicationService.deleteApplication(applicationVO);
+        return Response.success(true);
+    }
+
+    @PostMapping("/update")
+    @Operation(summary = "修改应用")
+    public String updateApplication(@RequestBody ApplicationVO applicationVO) {
+        applicationService.updateApplication(applicationVO);
+        return Response.success(true);
+    }
+
     @GetMapping("/queryPageList")
     @Operation(summary = "分页查询应用")
     public String queryPageList(ApplicationVO applicationVO) {

+ 52 - 0
PCS/src/main/java/cn/cslg/permission/controller/DepartmentController.java

@@ -0,0 +1,52 @@
+package cn.cslg.permission.controller;
+
+import cn.cslg.permission.common.core.base.Constants;
+import cn.cslg.permission.common.model.vo.DepartmentVO;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.service.DepartmentService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author 沈永艺
+ * @version 1.0
+ * @date 2022-8-3
+ * @description 部门类 Controller 层
+ */
+@Tag(name = "部门管理")
+@RestController
+@RequestMapping(Constants.PERMISSION_API + "/department")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class DepartmentController {
+    private final DepartmentService departmentService;
+
+    @PostMapping("/add")
+    @Operation(summary = "新增应用")
+    public String addDepartment(@RequestBody DepartmentVO departmentVO) {
+        departmentService.addDepartment();
+        return Response.success(true);
+    }
+
+    @PostMapping("/delete")
+    @Operation(summary = "删除应用")
+    public String deleteDepartment(@RequestBody DepartmentVO departmentVO) {
+        departmentService.deleteDepartment();
+        return Response.success(true);
+    }
+
+    @PostMapping("/update")
+    @Operation(summary = "修改应用")
+    public String updateDepartment(@RequestBody DepartmentVO departmentVO) {
+        departmentService.updateDepartment();
+        return Response.success(true);
+    }
+
+    @GetMapping("/queryPageList")
+    @Operation(summary = "分页查询应用")
+    public String queryPageList(DepartmentVO departmentVO) {
+        return Response.success(departmentService.queryPageList());
+    }
+}

+ 17 - 4
PCS/src/main/java/cn/cslg/permission/controller/FunctionController.java

@@ -12,9 +12,8 @@ import org.springframework.web.bind.annotation.*;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 功能类
+ * @date 2022-8-3
+ * @description 功能类 Controller层
  */
 
 @Tag(name = "功能管理")
@@ -31,8 +30,22 @@ public class FunctionController {
         return Response.success(true);
     }
 
+    @PostMapping("/delete")
+    @Operation(summary = "删除功能")
+    public String deleteFunction(@RequestBody FunctionVO functionVO) {
+        functionService.addFunction(functionVO);
+        return Response.success(true);
+    }
+
+    @PostMapping("/update")
+    @Operation(summary = "修改功能")
+    public String updateFunction(@RequestBody FunctionVO functionVO) {
+        functionService.addFunction(functionVO);
+        return Response.success(true);
+    }
+
     @GetMapping("/queryPageList")
-    @Operation(summary = "分页查询应用")
+    @Operation(summary = "分页查询功能")
     public String queryPageList(FunctionVO functionVO) {
         return Response.success(functionService.queryPageList(functionVO));
     }

+ 43 - 0
PCS/src/main/java/cn/cslg/permission/controller/LoginController.java

@@ -0,0 +1,43 @@
+package cn.cslg.permission.controller;
+
+import cn.cslg.permission.common.core.base.Constants;
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.service.LoginService;
+import cn.cslg.permission.service.PersonnelService;
+import cn.dev33.satoken.stp.StpUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-5
+ * @description 登录 Controller 层
+ */
+
+@Tag(name = "登录管理")
+@RestController
+@RequestMapping(Constants.PERMISSION_API + "/admin")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class LoginController {
+    private final LoginService login;
+
+    @PostMapping("/login")
+    @Operation(summary = "登录")
+    public String login(@RequestBody PersonnelVO personnelVO) {
+        return login.login(personnelVO);
+    }
+
+    @PostMapping("/logout")
+    @Operation(summary = "退出")
+    public String logout() {
+        StpUtil.logout();
+        return Response.success(true);
+    }
+}

+ 35 - 0
PCS/src/main/java/cn/cslg/permission/controller/PersonnelController.java

@@ -0,0 +1,35 @@
+package cn.cslg.permission.controller;
+
+import cn.cslg.permission.common.core.base.Constants;
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.service.PersonnelService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-5
+ * @description 人员类 Controller 层
+ */
+
+@Tag(name = "应用管理")
+@RestController
+@RequestMapping(Constants.PERMISSION_API + "/personnel")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PersonnelController {
+    private final PersonnelService personnelService;
+
+    @PostMapping("/add")
+    @Operation(summary = "新增人员")
+    public String addPersonnel(PersonnelVO personnelVO) {
+        personnelService.addPersonnel(personnelVO);
+        return Response.success(true);
+    }
+
+}

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/controller/PositionController.java

@@ -0,0 +1,4 @@
+package cn.cslg.permission.controller;
+
+public class PositionController {
+}

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/controller/RoleController.java

@@ -0,0 +1,4 @@
+package cn.cslg.permission.controller;
+
+public class RoleController {
+}

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/controller/TenantController.java

@@ -0,0 +1,4 @@
+package cn.cslg.permission.controller;
+
+public class TenantController {
+}

+ 4 - 0
PCS/src/main/java/cn/cslg/permission/controller/UserGroupController.java

@@ -0,0 +1,4 @@
+package cn.cslg.permission.controller;
+
+public class UserGroupController {
+}

+ 2 - 3
PCS/src/main/java/cn/cslg/permission/domain/Application.java

@@ -9,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 应用类
+ * @date 2022-8-2
+ * @description 应用类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)

+ 2 - 3
PCS/src/main/java/cn/cslg/permission/domain/Department.java

@@ -9,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 部门类
+ * @date 2022-8-2
+ * @description 部门类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)

+ 18 - 18
PCS/src/main/java/cn/cslg/permission/domain/Function.java

@@ -9,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 功能类
+ * @date 2022-8-2
+ * @description 功能类 数据库对应实体
  */
 
 @Data
@@ -26,32 +25,33 @@ public class Function extends BaseEntity<Function> {
     private String functionName;
 
     /**
-     * 功能权限对应功能
+     * 功能权限对应功能路径
      */
-    @TableField(value = "FUNCTION_CORRESPONDING")
-    private String functionCorresponding;
+    @TableField(value = "FUNCTION_PATH")
+    private String functionPath;
 
     /**
-     * 功能权限上级功能
+     * 功能权限(上级)
      */
     @TableField(value = "FUNCTION_UP")
     private Integer functionUp;
 
     /**
-     * 功能权限所属应用ID
-     */
-    @TableField(value = "APPLICATION_ID")
-    private Integer applicationId;
-
-    /**
      * 功能权限描述
      */
     @TableField(value = "FUNCTION_DESCRIPTION")
     private String functionDescription;
 
-//    /**
-//     * 功能权限描述
-//     */
-//    @TableField(value = "FUNCTION_PATH")
-//    private String functionPath;
+    /**
+     * 功能权限排序
+     */
+    @TableField(value = "FUNCTION_ORDER")
+    private Integer functionOrder;
+
+    /**
+     * 功能权限所属应用ID
+     */
+    @TableField(value = "APPLICATION_ID")
+    private Integer applicationId;
+
 }

+ 67 - 62
PCS/src/main/java/cn/cslg/permission/domain/Personnel.java

@@ -9,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 人员类
+ * @date 2022-8-2
+ * @description 人员类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)
@@ -25,63 +24,69 @@ public class Personnel extends BaseEntity<Personnel> {
     @TableField(value = "PERSONNEL_USERNAME")
     private String personnelUserName;
 
-//    /**
-//     * 人员密码
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
-//
-//    /**
-//     * 人员账号
-//     */
-//    @TableField(value = "PERSONNEL_USERNAME")
-//    private String personnelUserName;
+    /**
+     * 人员密码
+     */
+    @TableField(value = "PERSONNEL_PASSWORD")
+    private String personnelPassword;
+
+    /**
+     * 人员名称
+     */
+    @TableField(value = "PERSONNEL_NAME")
+    private String personnelName;
+
+    /**
+     * 人员性别(1男0女)
+     */
+    @TableField(value = "PERSONNEL_SEX")
+    private Integer personnelUserSex;
+
+    /**
+     * 人员联系电话
+     */
+    @TableField(value = "PERSONNEL_CONTACT_NUMBER")
+    private String personnelContactNumber;
+
+    /**
+     * 人员邮箱
+     */
+    @TableField(value = "PERSONNEL_EMAIL")
+    private String personnelEmail;
+
+    /**
+     * 人员QQ号
+     */
+    @TableField(value = "PERSONNEL_QQ")
+    private String personnelQQ;
+
+    /**
+     * 人员微信号
+     */
+    @TableField(value = "PERSONNEL_WECHAT")
+    private String personnelWechat;
+
+    /**
+     * 人员钉钉号
+     */
+    @TableField(value = "PERSONNEL_DING")
+    private String personnelDing;
+
+    /**
+     * 人员描述
+     */
+    @TableField(value = "PERSONNEL_DESCRIPTION")
+    private String personnelDescription;
+
+    /**
+     * 人员账号状态(1启用0停用)
+     */
+    @TableField(value = "PERSONNEL_STATUS")
+    private Integer personnelStatus;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
 }

+ 26 - 3
PCS/src/main/java/cn/cslg/permission/domain/Position.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.domain;
 
 import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -8,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 职位类
+ * @date 2022-8-2
+ * @description 职位类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)
@@ -18,4 +18,27 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @TableName(value = "position")
 public class Position extends BaseEntity<Position> {
+    /**
+     * 职位名称
+     */
+    @TableField(value = "POSITION_NAME")
+    private String positionName;
+
+    /**
+     * 职位描述
+     */
+    @TableField(value = "POSITION_DESCRIPTION")
+    private String positionDescription;
+
+    /**
+     * 职位是否多人(1是0否)
+     */
+    @TableField(value = "POSITION_IS_MORE")
+    private Integer positionIsMore;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
 }

+ 15 - 3
PCS/src/main/java/cn/cslg/permission/domain/Role.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.domain;
 
 import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -8,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 角色类
+ * @date 2022-8-2
+ * @description 角色类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)
@@ -18,4 +18,16 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @TableName(value = "role")
 public class Role extends BaseEntity<Role> {
+    /**
+     * 角色名称
+     */
+    @TableField(value = "ROLE_NAME")
+    private String roleName;
+
+    /**
+     * 角色描述
+     */
+    @TableField(value = "ROLE_DESCRIPTION")
+    private String roleDescription;
+
 }

+ 63 - 3
PCS/src/main/java/cn/cslg/permission/domain/Tenant.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.domain;
 
 import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -8,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 租户类
+ * @date 2022-8-2
+ * @description 租户类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)
@@ -18,4 +18,64 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @TableName(value = "tenant")
 public class Tenant extends BaseEntity<Tenant> {
+    /**
+     * 租户名称
+     */
+    @TableField(value = "TENANT_NAME")
+    private String tenantName;
+
+    /**
+     * 租户联系地址
+     */
+    @TableField(value = "TENANT_ADDRESS")
+    private String tenantAddress;
+
+    /**
+     * 租户联系人
+     */
+    @TableField(value = "TENANT_CONTACTS")
+    private String tenantContacts;
+
+    /**
+     * 租户联系方式
+     */
+    @TableField(value = "TENANT_CONTACT_NUMBER")
+    private Integer tenantContactNumber;
+
+    /**
+     * 租户邮箱
+     */
+    @TableField(value = "TENANT_EMAIL")
+    private String tenantEmail;
+
+    /**
+     * 租户描述
+     */
+    @TableField(value = "TENANT_DESCRIPTION")
+    private String tenantDescription;
+
+    /**
+     * 租户账号配额
+     */
+    @TableField(value = "TENANT_QUOTA")
+    private Integer tenantQuota;
+
+    /**
+     * 租户状态(1启用0停用)
+     */
+    @TableField(value = "TENANT_STATUS")
+    private Integer tenantStatus;
+
+    /**
+     * 租户类型
+     */
+    @TableField(value = "TENANT_TYPE")
+    private String tenantType;
+
+    /**
+     * 租户关联人员ID
+     */
+    @TableField(value = "PERSONNEL_ID")
+    private Integer personnelId;
+
 }

+ 20 - 3
PCS/src/main/java/cn/cslg/permission/domain/UserGroup.java

@@ -1,6 +1,7 @@
 package cn.cslg.permission.domain;
 
 import cn.cslg.permission.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -8,9 +9,8 @@ import lombok.experimental.Accessors;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
- * @description 用户组类
+ * @date 2022-8-2
+ * @description 用户组类 数据库对应实体
  */
 
 @EqualsAndHashCode(callSuper = true)
@@ -18,4 +18,21 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @TableName(value = "user_group")
 public class UserGroup extends BaseEntity<UserGroup> {
+    /**
+     * 用户组名称
+     */
+    @TableField(value = "USER_GROUP_NAME")
+    private String userGroupName;
+
+    /**
+     * 用户组描述
+     */
+    @TableField(value = "USER_GROUP_DESCRIPTION")
+    private String userGroupDescription;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANT_ID")
+    private Integer tenantId;
 }

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/ApplicationMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 应用类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/DepartmentMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 部门类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/FunctionMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 功能类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/PersonnelMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 人员类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/PositionMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 职位类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/RoleMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 角色类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/TenantEntityMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 租户类 Mapper 层
  */
 

+ 1 - 2
PCS/src/main/java/cn/cslg/permission/mapper/UserGroupMapper.java

@@ -6,8 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 19:58:00
+ * @date 2022-8-2
  * @description 用户组类 Mapper 层
  */
 

+ 44 - 10
PCS/src/main/java/cn/cslg/permission/service/ApplicationService.java

@@ -3,44 +3,78 @@ package cn.cslg.permission.service;
 import cn.cslg.permission.common.model.vo.ApplicationVO;
 import cn.cslg.permission.domain.Application;
 import cn.cslg.permission.mapper.ApplicationMapper;
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 应用类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ApplicationService extends ServiceImpl<ApplicationMapper, Application> {
+    @Transactional(rollbackFor = Exception.class)
     public void addApplication(ApplicationVO applicationVO) {
-        Application application = new Application();
-        application.setApplicationName(applicationVO.getName());
-        application.setApplicationDescription(applicationVO.getDescribe());
-        application.insert();
+        try {
+            Application application = new Application();
+            application.setApplicationName(applicationVO.getName())
+                    .setApplicationDescription(applicationVO.getDescribe());
+            System.out.println(StpUtil.getLoginId());
+            application.insert();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteApplication(ApplicationVO applicationVO) {
+        try {
+            Application application = new Application();
+            application.setIsDelete(1)
+                    .setId(applicationVO.getId());
+            application.updateById();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void updateApplication(ApplicationVO applicationVO) {
+        try {
+            Application application = new Application();
+            application.setApplicationName(applicationVO.getName())
+                    .setApplicationDescription(applicationVO.getDescribe())
+                    .setId(applicationVO.getId());
+            application.updateById();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
     }
 
     public Object queryPageList(ApplicationVO applicationVO) {
         LambdaQueryWrapper<Application> queryWrapper = new LambdaQueryWrapper<>();
         if (applicationVO.getSize() == null || applicationVO.getCurrent() == null) {
             queryWrapper.eq(Application::getIsDelete, 0);
-            Application application = new Application();
-
-            return application.selectList(queryWrapper);
+            return this.list(queryWrapper);
         } else {
             queryWrapper.like(Application::getApplicationDescription, applicationVO.getName());
             queryWrapper.or();
             queryWrapper.like(Application::getApplicationName, applicationVO.getName());
             queryWrapper.eq(Application::getIsDelete, 0);
 
-            return page(new Page<>(applicationVO.getCurrent(), applicationVO.getSize()), queryWrapper);
+            return this.page(new Page<>(applicationVO.getCurrent(), applicationVO.getSize()), queryWrapper);
         }
     }
 }

+ 16 - 2
PCS/src/main/java/cn/cslg/permission/service/DepartmentService.java

@@ -6,12 +6,26 @@ import org.springframework.stereotype.Service;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 部门类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class DepartmentService {
+    public void addDepartment() {
+
+    }
+
+    public void deleteDepartment() {
+
+    }
+
+    public void updateDepartment() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }

+ 82 - 92
PCS/src/main/java/cn/cslg/permission/service/FunctionService.java

@@ -3,128 +3,118 @@ package cn.cslg.permission.service;
 import cn.cslg.permission.common.model.vo.FunctionVO;
 import cn.cslg.permission.domain.Function;
 import cn.cslg.permission.mapper.FunctionMapper;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeNodeConfig;
+import cn.hutool.core.lang.tree.TreeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 功能类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class FunctionService extends ServiceImpl<FunctionMapper, Function> {
+    @Transactional(rollbackFor = Exception.class)
     public void addFunction(FunctionVO functionVO) {
-        Function function = new Function();
-        function.setFunctionUp(functionVO.getFunction())
-                .setFunctionName(functionVO.getName())
-                .setFunctionCorresponding(functionVO.getSign())
-                .setApplicationId(functionVO.getApply())
-                .setFunctionDescription(functionVO.getDescribe());
-        function.insert();
+        try {
+            Function function = new Function();
+            function.setFunctionUp(functionVO.getFunction())
+                    .setFunctionName(functionVO.getName())
+                    .setFunctionPath(functionVO.getSign())
+                    .setApplicationId(functionVO.getApply())
+                    .setFunctionDescription(functionVO.getDescribe());
+            function.insert();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteFunction(FunctionVO functionVO) {
+        try {
+            Function function = new Function();
+            function.setFunctionUp(functionVO.getFunction())
+                    .setFunctionName(functionVO.getName())
+                    .setFunctionPath(functionVO.getSign())
+                    .setApplicationId(functionVO.getApply())
+                    .setFunctionDescription(functionVO.getDescribe());
+            function.updateById();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFunction(FunctionVO functionVO) {
+        try {
+            Function function = new Function();
+            function.setFunctionUp(functionVO.getFunction())
+                    .setFunctionName(functionVO.getName())
+                    .setFunctionPath(functionVO.getSign())
+                    .setApplicationId(functionVO.getApply())
+                    .setFunctionDescription(functionVO.getDescribe());
+            function.updateById();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
     }
 
     public Object queryPageList(FunctionVO functionVO) {
         LambdaQueryWrapper<Function> queryWrapper = new LambdaQueryWrapper<>();
         if (functionVO.getSize() == null || functionVO.getCurrent() == null) {
-            LambdaQueryWrapper<Function> lambdaQueryWrapper = new LambdaQueryWrapper();
-
             queryWrapper.eq(Function::getIsDelete, 0);
-            Function function = new Function();
-
-            List<Function> lst = function.selectList(queryWrapper);
-            List<FunctionVO> voList = new ArrayList<>();
-            for (Function value : lst) {
-                int id;
-                if (value.getFunctionUp() == 0) {
-
-                    id = value.getId();
-                    LambdaQueryWrapper<Function> functionLambdaQueryWrapper = new LambdaQueryWrapper<>();
-                    functionLambdaQueryWrapper.eq(Function::getFunctionUp, id);
-
-                    Function function1 = new Function();
-                    List<Function> children = function1.selectList(functionLambdaQueryWrapper);
-                    List<FunctionVO> children1 = new ArrayList<>();
-                    for (Function child : children) {
-                        FunctionVO functionVO1 = new FunctionVO();
-                        functionVO1.setFunction(child.getFunctionUp())
-                                .setName(child.getFunctionName())
-                                .setSign(child.getFunctionCorresponding())
-                                .setDescribe(child.getFunctionDescription())
-                                .setApply(child.getApplicationId())
-                                .setId(child.getId());
-                        children1.add(functionVO1);
-                    }
+            List<Function> lst = this.list(queryWrapper);
 
-                    FunctionVO functionVO1 = new FunctionVO();
-                    functionVO1.setChildren(children1)
-                            .setFunction(value.getFunctionUp())
-                            .setApply(value.getApplicationId())
-                            .setName(value.getFunctionName())
-                            .setDescribe(value.getFunctionDescription())
-                            .setSign(value.getFunctionCorresponding())
-                            .setUpName("测试")
-                            .setId(value.getId());
-                    voList.add(functionVO1);
-                }
+            TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
+            treeNodeConfig.setWeightKey("order");
+            List<TreeNode<Integer>> nodeList = CollUtil.newArrayList();
+            for (Function data : lst) {
+                nodeList.add(new TreeNode<>(data.getId(), data.getFunctionUp(), data.getFunctionName(), data.getFunctionOrder()));
             }
-            return voList;
+            return TreeUtil.build(nodeList, 0, treeNodeConfig, (treeNode, tree) -> {
+                tree.setId(treeNode.getId());
+                tree.setParentId(treeNode.getParentId());
+                tree.setWeight(treeNode.getWeight());
+                tree.setName(treeNode.getName());
+            });
         } else {
-            queryWrapper.like(Function::getFunctionName, functionVO.getName());
-            queryWrapper.or();
-            queryWrapper.like(Function::getFunctionCorresponding, functionVO.getName());
-            queryWrapper.or();
-            queryWrapper.like(Function::getFunctionDescription, functionVO.getName());
-            queryWrapper.eq(Function::getIsDelete, 0);
-
+            queryWrapper
+                    .like(Function::getFunctionName, functionVO.getName())
+                    .or()
+                    .like(Function::getFunctionPath, functionVO.getName())
+                    .or()
+                    .like(Function::getFunctionDescription, functionVO.getName())
+                    .eq(Function::getIsDelete, 0);
             Function function = new Function();
             List<Function> lst = function.selectList(queryWrapper);
 
-            List<FunctionVO> voList = new ArrayList<>();
-            for (Function value : lst) {
-                int id;
-                if (value.getFunctionUp() == 0) {
-
-                    id = value.getId();
-                    LambdaQueryWrapper<Function> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-                    lambdaQueryWrapper.eq(Function::getFunctionUp, id);
-
-                    Function function1 = new Function();
-                    List<Function> children = function1.selectList(lambdaQueryWrapper);
-                    List<FunctionVO> children1 = new ArrayList<>();
-                    for (Function child : children) {
-                        FunctionVO functionVO1 = new FunctionVO();
-                        functionVO1.setFunction(child.getFunctionUp())
-                                .setName(child.getFunctionName())
-                                .setSign(child.getFunctionCorresponding())
-                                .setDescribe(child.getFunctionDescription())
-                                .setApply(child.getApplicationId())
-                                .setId(child.getId());
-                        children1.add(functionVO1);
-                    }
-
-                    FunctionVO functionVO1 = new FunctionVO();
-                    functionVO1.setChildren(children1)
-                            .setFunction(value.getFunctionUp())
-                            .setApply(value.getApplicationId())
-                            .setName(value.getFunctionName())
-                            .setDescribe(value.getFunctionDescription())
-                            .setSign(value.getFunctionCorresponding())
-                            .setUpName("测试")
-                            .setId(value.getId());
-                    voList.add(functionVO1);
-                }
+            TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
+            treeNodeConfig.setWeightKey("order");
+            List<TreeNode<Integer>> nodeList = CollUtil.newArrayList();
+            for (Function data : lst) {
+                nodeList.add(new TreeNode<>(data.getId(), data.getFunctionUp(), data.getFunctionName(), data.getFunctionOrder()));
             }
-            return voList;
+            return TreeUtil.build(nodeList, 0, treeNodeConfig, (treeNode, tree) -> {
+                tree.setId(treeNode.getId());
+                tree.setParentId(treeNode.getParentId());
+                tree.setWeight(treeNode.getWeight());
+                tree.setName(treeNode.getName());
+            });
         }
     }
 }

+ 42 - 0
PCS/src/main/java/cn/cslg/permission/service/LoginService.java

@@ -0,0 +1,42 @@
+package cn.cslg.permission.service;
+
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import cn.cslg.permission.common.utils.Response;
+import cn.cslg.permission.common.utils.ResponseEnum;
+import cn.cslg.permission.common.utils.StpAdminUtil;
+import cn.cslg.permission.domain.Personnel;
+import cn.cslg.permission.mapper.PersonnelMapper;
+import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-2
+ * @description 登录 Service 层
+ */
+
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
+    public String login(PersonnelVO personnelVO) {
+        LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Personnel::getPersonnelUserName, personnelVO.getUsername());
+
+        Personnel personnel = this.getOne(queryWrapper);
+
+        if (personnel == null) {
+            return Response.error(ResponseEnum.USERNAME_ERROR);
+        }
+        boolean isPassword = SecureUtil.md5(personnelVO.getPassword()).equals(personnel.getPersonnelPassword());
+        if (!isPassword) {
+            return Response.error(ResponseEnum.PASSWORD_ERROR);
+        }
+        StpAdminUtil.login(personnel.getId());
+        System.out.println(StpAdminUtil.getLoginId());
+        return Response.success(StpAdminUtil.getTokenValue());
+    }
+}

+ 48 - 2
PCS/src/main/java/cn/cslg/permission/service/PersonnelService.java

@@ -1,17 +1,63 @@
 package cn.cslg.permission.service;
 
+import cn.cslg.permission.common.model.vo.PersonnelVO;
+import cn.cslg.permission.domain.Application;
+import cn.cslg.permission.domain.Personnel;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.crypto.SecureUtil;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 人员类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PersonnelService {
+    @Transactional(rollbackFor = Exception.class)
+    public void addPersonnel(PersonnelVO personnelVO) {
+        try {
+            Personnel personnel = new Personnel();
+            personnel.setPersonnelUserName(personnelVO.getUsername())
+                    .setPersonnelName(personnelVO.getName())
+                    .setPersonnelEmail(personnelVO.getEmail())
+                    .setPersonnelQQ(personnelVO.getQQnumber())
+                    .setPersonnelDing(personnelVO.getNail())
+                    .setPersonnelWechat(personnelVO.getWechat())
+                    .setPersonnelContactNumber(personnelVO.getMobile())
+                    .setPersonnelDescription(personnelVO.getRemark())
+                    .setPersonnelStatus(personnelVO.getState())
+                    .setPersonnelUserSex(personnelVO.getGender())
+                    .setTenantId(personnelVO.getTenant())
+                    .setCreateUser((Integer) StpUtil.getLoginId());
+            if (personnelVO.getPassword() != null) {
+                personnel.setPersonnelPassword(SecureUtil.md5(personnelVO.getPassword()));
+            } else {
+                personnel.setPersonnelPassword(SecureUtil.md5("123456"));
+            }
+
+            personnel.insert();
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            e.printStackTrace();
+        }
+    }
+
+    public void deletePersonnel() {
+
+    }
+
+    public void updatePersonnel() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }

+ 16 - 2
PCS/src/main/java/cn/cslg/permission/service/PositionService.java

@@ -6,12 +6,26 @@ import org.springframework.stereotype.Service;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 职位类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PositionService {
+    public void addPosition() {
+
+    }
+
+    public void deletePosition() {
+
+    }
+
+    public void updatePosition() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }

+ 16 - 2
PCS/src/main/java/cn/cslg/permission/service/RoleService.java

@@ -6,12 +6,26 @@ import org.springframework.stereotype.Service;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 角色类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class RoleService {
+    public void addRole() {
+
+    }
+
+    public void deleteRole() {
+
+    }
+
+    public void updateRole() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }

+ 16 - 2
PCS/src/main/java/cn/cslg/permission/service/TenantService.java

@@ -6,12 +6,26 @@ import org.springframework.stereotype.Service;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 租户类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class TenantService {
+    public void addTenant() {
+
+    }
+
+    public void deleteTenant() {
+
+    }
+
+    public void updateTenant() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }

+ 16 - 2
PCS/src/main/java/cn/cslg/permission/service/UserGroupService.java

@@ -6,12 +6,26 @@ import org.springframework.stereotype.Service;
 
 /**
  * @author 沈永艺
- * @version 1.0
- * @date 2022-8-2 20:11:00
+ * @date 2022-8-2
  * @description 用户组类 Service 层
  */
 
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class UserGroupService {
+    public void addUserGroup() {
+
+    }
+
+    public void deleteUserGroup() {
+
+    }
+
+    public void updateUserGroup() {
+
+    }
+
+    public Object queryPageList() {
+        return null;
+    }
 }