Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
design
提交
3da76d29
D
design
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
design
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
design
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3da76d29
编写于
7月 29, 2023
作者:
Kwan的解忧杂货铺@新空间代码工作室
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:订单状态模块
上级
903b2f1c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
92 addition
and
18 deletion
+92
-18
src/main/java/com/study/design/order/OrderStateListener.java
src/main/java/com/study/design/order/OrderStateListener.java
+15
-5
src/main/java/com/study/design/order/config/OrderStateMachineConfig.java
...om/study/design/order/config/OrderStateMachineConfig.java
+16
-2
src/main/java/com/study/design/order/pojo/Order.java
src/main/java/com/study/design/order/pojo/Order.java
+16
-3
src/main/java/com/study/design/order/pojo/OrderState.java
src/main/java/com/study/design/order/pojo/OrderState.java
+25
-5
src/main/java/com/study/design/order/pojo/OrderStateChangeAction.java
...a/com/study/design/order/pojo/OrderStateChangeAction.java
+20
-3
未找到文件。
src/main/java/com/study/design/order/OrderStateListener.java
浏览文件 @
3da76d29
...
...
@@ -8,24 +8,34 @@ import org.springframework.statemachine.annotation.OnTransition;
import
org.springframework.statemachine.annotation.WithStateMachine
;
import
org.springframework.stereotype.Component
;
// 监听器是监听到 action 后进行状态的一个变更。
/**
* 监听器是监听到 action 后进行状态的一个变更。
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:18
*/
@Component
(
"orderStateListener"
)
@WithStateMachine
(
name
=
"orderStateMachine"
)
@WithStateMachine
(
name
=
"orderStateMachine"
)
public
class
OrderStateListener
{
@OnTransition
(
source
=
"ORDER_WAIT_PAY"
,
target
=
"ORDER_WAIT_SEND"
)
public
boolean
payToSend
(
Message
<
OrderStateChangeAction
>
message
){
public
boolean
payToSend
(
Message
<
OrderStateChangeAction
>
message
)
{
Order
order
=
(
Order
)
message
.
getHeaders
().
get
(
"order"
);
order
.
setOrderState
(
OrderState
.
ORDER_WAIT_SEND
);
return
true
;
}
@OnTransition
(
source
=
"ORDER_WAIT_SEND"
,
target
=
"ORDER_WAIT_RECEIVE"
)
public
boolean
sendToReceive
(
Message
<
OrderStateChangeAction
>
message
){
public
boolean
sendToReceive
(
Message
<
OrderStateChangeAction
>
message
)
{
Order
order
=
(
Order
)
message
.
getHeaders
().
get
(
"order"
);
order
.
setOrderState
(
OrderState
.
ORDER_WAIT_RECEIVE
);
return
true
;
}
@OnTransition
(
source
=
"ORDER_WAIT_RECEIVE"
,
target
=
"ORDER_FINISH"
)
public
boolean
receiveToFinish
(
Message
<
OrderStateChangeAction
>
message
){
public
boolean
receiveToFinish
(
Message
<
OrderStateChangeAction
>
message
)
{
Order
order
=
(
Order
)
message
.
getHeaders
().
get
(
"order"
);
order
.
setOrderState
(
OrderState
.
ORDER_FINISH
);
return
true
;
...
...
src/main/java/com/study/design/order/config/OrderStateMachineConfig.java
浏览文件 @
3da76d29
...
...
@@ -16,14 +16,24 @@ import org.springframework.statemachine.support.DefaultStateMachineContext;
import
java.util.EnumSet
;
/**
* 订单状态配置类
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:22
*/
@Configuration
@EnableStateMachine
(
name
=
"orderStateMachine"
)
@EnableStateMachine
(
name
=
"orderStateMachine"
)
public
class
OrderStateMachineConfig
extends
StateMachineConfigurerAdapter
<
OrderState
,
OrderStateChangeAction
>
{
@Override
public
void
configure
(
StateMachineStateConfigurer
<
OrderState
,
OrderStateChangeAction
>
states
)
throws
Exception
{
states
.
withStates
().
initial
(
OrderState
.
ORDER_WAIT_PAY
)
.
states
(
EnumSet
.
allOf
(
OrderState
.
class
));
}
@Override
public
void
configure
(
StateMachineTransitionConfigurer
<
OrderState
,
OrderStateChangeAction
>
transitions
)
throws
Exception
{
transitions
.
withExternal
().
source
(
OrderState
.
ORDER_WAIT_PAY
)
.
target
(
OrderState
.
ORDER_WAIT_SEND
)
...
...
@@ -38,7 +48,11 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
.
event
(
OrderStateChangeAction
.
RECEIVE_ORDER
);
}
// 配置状态机持久化
/**
* 配置状态机持久化
*
* @return
*/
@Bean
public
DefaultStateMachinePersister
machinePersister
()
{
return
new
DefaultStateMachinePersister
<>(
new
StateMachinePersist
<
Object
,
Object
,
Order
>()
{
...
...
src/main/java/com/study/design/order/pojo/Order.java
浏览文件 @
3da76d29
package
com.study.design.order.pojo
;
//状态转化的一个控制机。状态机:初始化状态;配置我们的所有状态之间的转化关系;
//一些持久化的工作(redis)。
/**
* 状态转化的一个控制机。状态机:初始化状态;配置我们的所有状态之间的转化关系;
* 一些持久化的工作(redis)。
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:18
*/
public
class
Order
{
/**
* 订单id
*/
private
Integer
orderId
;
private
OrderState
orderState
;
//订单状态
/**
* 订单状态
*/
private
OrderState
orderState
;
public
Integer
getOrderId
()
{
return
orderId
;
...
...
src/main/java/com/study/design/order/pojo/OrderState.java
浏览文件 @
3da76d29
package
com.study.design.order.pojo
;
public
enum
OrderState
{
ORDER_WAIT_PAY
,
// 待支付
ORDER_WAIT_SEND
,
// 待发货
ORDER_WAIT_RECEIVE
,
// 待收货
ORDER_FINISH
;
// 完成订单
/**
* 订单状态枚举类
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:19
*/
public
enum
OrderState
{
/**
* 待支付
*/
ORDER_WAIT_PAY
,
/**
* 待发货
*/
ORDER_WAIT_SEND
,
/**
* 待收货
*/
ORDER_WAIT_RECEIVE
,
/**
* 完成订单
*/
ORDER_FINISH
;
}
src/main/java/com/study/design/order/pojo/OrderStateChangeAction.java
浏览文件 @
3da76d29
package
com.study.design.order.pojo
;
/**
* 操作动作枚举
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:20
*/
public
enum
OrderStateChangeAction
{
PAY_ORDER
,
// 支付操作
SEND_ORDER
,
// 发货操作
RECEIVE_ORDER
;
// 收货操作
/**
* 支付操作
*/
PAY_ORDER
,
/**
* 发货操作
*/
SEND_ORDER
,
/**
* 收货操作
*/
RECEIVE_ORDER
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录