785834757 1 anno fa
parent
commit
c19a040233

+ 6 - 2
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -68,11 +68,11 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         if (!encryptedPassword.equals(byId.getPassword())) {
             throw new SystemException("用户名或密码错误");
         }
-        //获取角色组
+        //获取用户角色权限标识
         List<SysRolePerms> userPerms = sysUserRoleService.getUserPerms(byId.getId(), system);
 
         List<JzgGrantedAuthority> authorities = userPerms.stream()
-                .map(perms -> new JzgGrantedAuthority(system,perms.getPermsId(),perms.getPerms()))
+                .map(perms -> new JzgGrantedAuthority(perms.getSysCode(),perms.getPermsId(),perms.getPerms()))
                 .collect(Collectors.toList());
 
         if (details instanceof java.util.Map) {
@@ -84,6 +84,10 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
             details = detailMap;
         }
 
+        if(!authorities.stream().anyMatch(x->x.getSystem().equals(system)) && !username.equals("admin")){
+            throw new SystemException("没有权限访问系统");
+        }
+
         Object finalDetails = details;
         return new UsernamePasswordAuthenticationToken(username, rawPassword, authorities) {{
             setDetails(finalDetails);

+ 4 - 0
authentication/src/main/java/com/jzg/entity/SysRolePerms.java

@@ -1,5 +1,6 @@
 package com.jzg.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -20,4 +21,7 @@ public class SysRolePerms {
     @Schema(description = "权限标识")
     private String perms;
 
+
+    @TableField(exist = false)
+    private String sysCode;
 }

+ 5 - 2
authentication/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -5,11 +5,14 @@
 
     <select id="getUserPerms" resultType="com.jzg.entity.SysRolePerms">
         SELECT
-            srp.*
+            srp.*,
+            ss.sys_code
         FROM
             sys_user su
                 LEFT JOIN sys_user_role sur ON su.id = sur.user_id
-                left join sys_role_perms  srp on sur.role_id = srp.role_id
+                LEFT JOIN sys_role sr ON sr.id = sur.role_id
+                LEFT JOIN sys_role_perms srp ON sur.role_id = srp.role_id
+                LEFT JOIN sys_system ss ON ss.sys_code = sr.system_code
         WHERE
             su.id = #{userId}
 

+ 2 - 1
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -29,7 +29,8 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://127.0.0.1:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.5.149:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.5.30:9000");
-        corsConfiguration.addAllowedOrigin("http://192.168.5.140:9001");
+        corsConfiguration.addAllowedOrigin("http://192.168.5.48:9001");
+        corsConfiguration.addAllowedOrigin("http://192.168.5.23:9001");
         // 允许的方法
         corsConfiguration.addAllowedMethod("*");
         // 允许的头信息

+ 8 - 6
pom.xml

@@ -62,6 +62,13 @@
       <artifactId>spring-boot-starter-validation</artifactId>
     </dependency>
 
+    <!-- 状态机 -->
+    <dependency>
+      <groupId>org.springframework.statemachine</groupId>
+      <artifactId>spring-statemachine-core</artifactId>
+      <version>4.0.0</version> <!-- 你可以选择适合你的版本 -->
+    </dependency>
+
     <!-- fastjson -->
     <dependency>
       <groupId>com.alibaba</groupId>
@@ -116,12 +123,7 @@
         <artifactId>spring-boot-starter-webflux</artifactId>
       </dependency>
 
-      <!-- 状态机 -->
-      <dependency>
-        <groupId>org.springframework.statemachine</groupId>
-        <artifactId>spring-statemachine-core</artifactId>
-        <version>3.0.0</version> <!-- 你可以选择适合你的版本 -->
-      </dependency>
+
 
       <!-- 数据库驱动,如 MySQL -->
       <dependency>

+ 30 - 0
tenant/organization/src/main/java/com/jzg/organization/state/UserState.java

@@ -0,0 +1,30 @@
+package com.jzg.organization.state;
+
+/**
+ * 用户状态管理
+ */
+public class UserState {
+
+
+    public enum UserStateEnum {
+        NOT_CERT, // 未认证
+        REAL_AUTH_ING, // 实名认证中
+        REAL_AUTH_FAILED, // 实名认证失败
+        PADDING_EMPLOYEE, // 待入职
+        COMPANY_REVIEW_ING, // 入司审核中
+        COMPANY_REVIEW_FAILED, // 入司审核失败
+        ALREADY_EMPLOYEE, // 已入职
+    }
+
+    public enum UserStateEvent{
+        REAL_AUTH_CERT, // 认证
+        REAL_AUTH_SUCCESS, // 实名认证成功事件
+        REAL_AUTH_FAILED, // 实名认证失败事件
+        COMPANY_REVIEW, // 入司审核
+        COMPANY_REVIEW_SUCCESS, // 入司审核成功事件
+        COMPANY_REVIEW_FAILED, // 入司审核失败事件
+        EMPLOYEE, // 入职
+    }
+
+
+}

+ 54 - 0
tenant/organization/src/main/java/com/jzg/organization/state/config/UserStateConfig.java

@@ -0,0 +1,54 @@
+package com.jzg.organization.state.config;
+
+import com.jzg.organization.state.UserState;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.statemachine.config.EnableStateMachine;
+import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
+import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
+import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
+
+import java.util.EnumSet;
+
+@Configuration
+@EnableStateMachine
+public class UserStateConfig extends StateMachineConfigurerAdapter<UserState.UserStateEnum, UserState.UserStateEvent> {
+
+    @Override
+    public void configure(StateMachineStateConfigurer<UserState.UserStateEnum, UserState.UserStateEvent> states) throws Exception {
+        states.withStates()
+                .initial(UserState.UserStateEnum.NOT_CERT) // 初始状态
+                .states(EnumSet.allOf(UserState.UserStateEnum.class)); // 所有状态
+    }
+
+    @Override
+    public void configure(StateMachineTransitionConfigurer<UserState.UserStateEnum, UserState.UserStateEvent> transitions) throws Exception {
+        transitions
+                .withExternal()
+                // 未认证 -> 实名认证中
+                .source(UserState.UserStateEnum.NOT_CERT).target(UserState.UserStateEnum.REAL_AUTH_ING).event(UserState.UserStateEvent.REAL_AUTH_CERT)
+                .and()
+                .withExternal()
+                //实名认证中 -> 实名认证失败
+                .source(UserState.UserStateEnum.REAL_AUTH_ING).target(UserState.UserStateEnum.REAL_AUTH_FAILED).event(UserState.UserStateEvent.REAL_AUTH_FAILED)
+                .and()
+                .withExternal()
+                //实名认证中 -> 待入职
+                .source(UserState.UserStateEnum.REAL_AUTH_ING).target(UserState.UserStateEnum.PADDING_EMPLOYEE).event(UserState.UserStateEvent.REAL_AUTH_SUCCESS)
+                .and()
+                .withExternal()
+                //待入职 -> 入司审核中
+                .source(UserState.UserStateEnum.PADDING_EMPLOYEE).target(UserState.UserStateEnum.COMPANY_REVIEW_ING).event(UserState.UserStateEvent.COMPANY_REVIEW)
+                .and()
+                .withExternal()
+                //入司审核中 -> 入司审核失败
+                .source(UserState.UserStateEnum.COMPANY_REVIEW_ING).target(UserState.UserStateEnum.COMPANY_REVIEW_FAILED).event(UserState.UserStateEvent.COMPANY_REVIEW_FAILED)
+                .and()
+                .withExternal()
+                //入司审核失败 -> 重新提交入司审核
+                .source(UserState.UserStateEnum.COMPANY_REVIEW_FAILED).target(UserState.UserStateEnum.COMPANY_REVIEW_ING).event(UserState.UserStateEvent.COMPANY_REVIEW)
+                .and()
+                .withExternal()
+                //入司审核中 -> 已入职
+                .source(UserState.UserStateEnum.COMPANY_REVIEW_ING).target(UserState.UserStateEnum.ALREADY_EMPLOYEE).event(UserState.UserStateEvent.COMPANY_REVIEW_SUCCESS);
+    }
+}