|
|
@@ -14,6 +14,7 @@ import org.springframework.statemachine.StateMachine;
|
|
|
import org.springframework.statemachine.StateMachineEventResult;
|
|
|
import org.springframework.statemachine.config.StateMachineFactory;
|
|
|
import org.springframework.statemachine.state.State;
|
|
|
+import org.springframework.statemachine.support.DefaultStateMachineContext;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
@@ -31,6 +32,18 @@ public class UserStateListener {
|
|
|
private synchronized boolean sendEvent(Mono<Message<UserState.UserStateEvent>> message) {
|
|
|
AtomicBoolean result = new AtomicBoolean(false);
|
|
|
try {
|
|
|
+
|
|
|
+ userStateMachine.stop(); // 停止状态机
|
|
|
+ Message<UserState.UserStateEvent> block = message.block();
|
|
|
+ SysUserJzgInfo sysUserJzgInfo =(SysUserJzgInfo)block.getHeaders().get("entity");
|
|
|
+ userStateMachine.getStateMachineAccessor().doWithAllRegions(accessor -> {
|
|
|
+ accessor.resetStateMachineReactively(new DefaultStateMachineContext<>(
|
|
|
+ UserState.UserStateEnum.fromValue(sysUserJzgInfo.getStatus()), // 目标状态
|
|
|
+ null, // 当前事件(可以为 null)
|
|
|
+ null, // 扩展上下文(可以为 null)
|
|
|
+ null // 转换历史(通常为 null)
|
|
|
+ )).block();
|
|
|
+ });
|
|
|
Mono<Void> startMono = userStateMachine.startReactively();
|
|
|
startMono.block();
|
|
|
|
|
|
@@ -80,11 +93,12 @@ public class UserStateListener {
|
|
|
return stateResult;
|
|
|
}
|
|
|
|
|
|
- public StateResult AuthCertFailed(SysUserJzgInfo sysUser){
|
|
|
+ public StateResult AuthCertFailed(SysUserJzgInfo sysUserJzgInfo){
|
|
|
StateResult stateResult = new StateResult();
|
|
|
Mono<Message<UserState.UserStateEvent>> message = Mono.just(
|
|
|
MessageBuilder.withPayload(UserState.UserStateEvent.REAL_AUTH_FAILED)
|
|
|
- .setHeader("entity", UserState.UserStateEnum.fromValue(sysUser.getStatus())).build());
|
|
|
+ .setHeader("entity", sysUserJzgInfo).build());
|
|
|
+
|
|
|
|
|
|
if(!sendEvent(message)){
|
|
|
throw new SystemException("实名认证审核失败");
|