Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
design
提交
35af2e26
D
design
项目概览
檀越@新空间
/
design
通知
2
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看板
提交
35af2e26
编写于
7月 29, 2023
作者:
檀越@新空间
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:添加注释
上级
3da76d29
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
73 addition
and
19 deletion
+73
-19
src/main/java/com/study/design/controller/OrderController.java
...ain/java/com/study/design/controller/OrderController.java
+10
-1
src/main/java/com/study/design/order/config/OrderStateMachineConfig.java
...om/study/design/order/config/OrderStateMachineConfig.java
+14
-3
src/main/java/com/study/design/service/OrderService.java
src/main/java/com/study/design/service/OrderService.java
+49
-15
未找到文件。
src/main/java/com/study/design/controller/OrderController.java
浏览文件 @
35af2e26
...
@@ -10,8 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody;
...
@@ -10,8 +10,17 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 订单入口
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/7/29 19:53
*/
@RestController
@RestController
public
class
OrderController
{
public
class
OrderController
{
@Autowired
@Autowired
private
OrderService
orderService
;
private
OrderService
orderService
;
...
@@ -21,7 +30,7 @@ public class OrderController {
...
@@ -21,7 +30,7 @@ public class OrderController {
}
}
@PostMapping
(
"/pay"
)
@PostMapping
(
"/pay"
)
public
Order
payOrder
(
@RequestBody
PayBody
payBody
){
public
Order
payOrder
(
@RequestBody
PayBody
payBody
)
{
return
orderService
.
pay
(
payBody
);
return
orderService
.
pay
(
payBody
);
}
}
...
...
src/main/java/com/study/design/order/config/OrderStateMachineConfig.java
浏览文件 @
35af2e26
...
@@ -16,7 +16,6 @@ import org.springframework.statemachine.support.DefaultStateMachineContext;
...
@@ -16,7 +16,6 @@ import org.springframework.statemachine.support.DefaultStateMachineContext;
import
java.util.EnumSet
;
import
java.util.EnumSet
;
/**
/**
* 订单状态配置类
* 订单状态配置类
*
*
...
@@ -27,12 +26,25 @@ import java.util.EnumSet;
...
@@ -27,12 +26,25 @@ import java.util.EnumSet;
@Configuration
@Configuration
@EnableStateMachine
(
name
=
"orderStateMachine"
)
@EnableStateMachine
(
name
=
"orderStateMachine"
)
public
class
OrderStateMachineConfig
extends
StateMachineConfigurerAdapter
<
OrderState
,
OrderStateChangeAction
>
{
public
class
OrderStateMachineConfig
extends
StateMachineConfigurerAdapter
<
OrderState
,
OrderStateChangeAction
>
{
/**
* 配置状态的初始值
*
* @param states
* @throws Exception
*/
@Override
@Override
public
void
configure
(
StateMachineStateConfigurer
<
OrderState
,
OrderStateChangeAction
>
states
)
throws
Exception
{
public
void
configure
(
StateMachineStateConfigurer
<
OrderState
,
OrderStateChangeAction
>
states
)
throws
Exception
{
states
.
withStates
().
initial
(
OrderState
.
ORDER_WAIT_PAY
)
states
.
withStates
().
initial
(
OrderState
.
ORDER_WAIT_PAY
)
.
states
(
EnumSet
.
allOf
(
OrderState
.
class
));
.
states
(
EnumSet
.
allOf
(
OrderState
.
class
));
}
}
/**
* 配置状态转化
*
* @param transitions
* @throws Exception
*/
@Override
@Override
public
void
configure
(
StateMachineTransitionConfigurer
<
OrderState
,
OrderStateChangeAction
>
transitions
)
throws
Exception
{
public
void
configure
(
StateMachineTransitionConfigurer
<
OrderState
,
OrderStateChangeAction
>
transitions
)
throws
Exception
{
transitions
.
withExternal
().
source
(
OrderState
.
ORDER_WAIT_PAY
)
transitions
.
withExternal
().
source
(
OrderState
.
ORDER_WAIT_PAY
)
...
@@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
...
@@ -56,7 +68,6 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
@Bean
@Bean
public
DefaultStateMachinePersister
machinePersister
()
{
public
DefaultStateMachinePersister
machinePersister
()
{
return
new
DefaultStateMachinePersister
<>(
new
StateMachinePersist
<
Object
,
Object
,
Order
>()
{
return
new
DefaultStateMachinePersister
<>(
new
StateMachinePersist
<
Object
,
Object
,
Order
>()
{
@Override
@Override
public
void
write
(
StateMachineContext
<
Object
,
Object
>
stateMachineContext
,
Order
order
)
throws
Exception
{
public
void
write
(
StateMachineContext
<
Object
,
Object
>
stateMachineContext
,
Order
order
)
throws
Exception
{
//持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache
//持久化操作。可以通过任何形式进行持久化。redis 、 mongodb、mysql,ecache
...
@@ -69,4 +80,4 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
...
@@ -69,4 +80,4 @@ public class OrderStateMachineConfig extends StateMachineConfigurerAdapter<Order
}
}
});
});
}
}
}
}
\ No newline at end of file
src/main/java/com/study/design/service/OrderService.java
浏览文件 @
35af2e26
...
@@ -20,23 +20,27 @@ import java.util.List;
...
@@ -20,23 +20,27 @@ import java.util.List;
@Service
@Service
public
class
OrderService
{
public
class
OrderService
{
@Autowired
private
StateMachine
<
OrderState
,
OrderStateChangeAction
>
orderStateMachine
;
@Autowired
private
StateMachinePersister
<
OrderState
,
OrderStateChangeAction
,
Order
>
stateMachinePersister
;
@Autowired
@Autowired
private
PayLogProcessor
payLogProcessor
;
private
PayLogProcessor
payLogProcessor
;
@Autowired
@Autowired
private
OrderLogProcessor
orderLogProcessor
;
private
OrderLogProcessor
orderLogProcessor
;
@Autowired
private
StateMachine
<
OrderState
,
OrderStateChangeAction
>
orderStateMachine
;
@Autowired
private
StateMachinePersister
<
OrderState
,
OrderStateChangeAction
,
Order
>
stateMachinePersister
;
/**
/**
* 模拟一个存储
* 模拟一个存储
*/
*/
private
final
List
<
Object
>
orders
=
new
ArrayList
<>();
private
final
List
<
Object
>
orders
=
new
ArrayList
<>();
/**
* 创建订单
*
* @param oid
* @return
*/
public
Order
createOrder
(
Integer
oid
)
{
public
Order
createOrder
(
Integer
oid
)
{
Order
order
=
new
Order
();
Order
order
=
new
Order
();
order
.
setOrderState
(
OrderState
.
ORDER_WAIT_PAY
);
order
.
setOrderState
(
OrderState
.
ORDER_WAIT_PAY
);
...
@@ -47,20 +51,27 @@ public class OrderService {
...
@@ -47,20 +51,27 @@ public class OrderService {
return
order
;
return
order
;
}
}
// 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。
//不会对调用层产生任何代码的改动。
/**
// 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。
* 支付订单
* 将来我们删除或者增加或者修改任何关于付款的模块,无需改动service。
* 不会对调用层产生任何代码的改动。
* 调用层使用我们的pay 模块,无需关系实现的逻辑,只需要将入参传给我们的pay模块即可。
*
* @param payBody
* @return
*/
public
Order
pay
(
PayBody
payBody
)
{
public
Order
pay
(
PayBody
payBody
)
{
// 书写我们的付款逻辑
// 书写我们的付款逻辑
boolean
flag
=
false
;
boolean
flag
=
false
;
flag
=
StrategyFacade
.
pay
(
payBody
);
flag
=
StrategyFacade
.
pay
(
payBody
);
if
(
flag
)
{
if
(
flag
)
{
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
payLogProcessor
.
processAuditLog
(
payBody
.
getAccount
(),
"pay"
,
order
.
getOrderId
().
toString
());
payLogProcessor
.
processAuditLog
(
payBody
.
getAccount
(),
"pay"
,
order
.
getOrderId
().
toString
());
Message
message
=
MessageBuilder
Message
message
=
MessageBuilder
.
withPayload
(
OrderStateChangeAction
.
PAY_ORDER
).
setHeader
(
"order"
,
order
).
build
();
.
withPayload
(
OrderStateChangeAction
.
PAY_ORDER
).
setHeader
(
"order"
,
order
).
build
();
//发送消息,发送给谁?和状态机有没有关系啊? 有
//发送消息,发送给谁?和状态机有没有关系啊? 有
if
(
changeStateAction
(
message
,
order
))
{
if
(
changeStateAction
(
message
,
order
))
{
return
order
;
return
order
;
}
}
//如果是 true,我们要保存到db
//如果是 true,我们要保存到db
...
@@ -68,29 +79,52 @@ public class OrderService {
...
@@ -68,29 +79,52 @@ public class OrderService {
}
}
return
null
;
return
null
;
}
}
private
void
saveToDb
(
PayBody
payBody
)
{
private
void
saveToDb
(
PayBody
payBody
)
{
}
}
/**
* 订单发货
*
* @param oid
* @return
*/
public
Order
send
(
Integer
oid
)
{
public
Order
send
(
Integer
oid
)
{
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
Message
message
=
MessageBuilder
Message
message
=
MessageBuilder
.
withPayload
(
OrderStateChangeAction
.
SEND_ORDER
).
setHeader
(
"order"
,
order
).
build
();
.
withPayload
(
OrderStateChangeAction
.
SEND_ORDER
).
setHeader
(
"order"
,
order
).
build
();
if
(
changeStateAction
(
message
,
order
))
{
if
(
changeStateAction
(
message
,
order
))
{
return
order
;
return
order
;
}
}
return
null
;
return
null
;
}
}
/**
* 订单收货
*
* @param oid
* @return
*/
public
Order
receive
(
Integer
oid
)
{
public
Order
receive
(
Integer
oid
)
{
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
Order
order
=
(
Order
)
orders
.
get
(
0
);
// 模拟查询db代码
Message
message
=
MessageBuilder
Message
message
=
MessageBuilder
.
withPayload
(
OrderStateChangeAction
.
RECEIVE_ORDER
).
setHeader
(
"order"
,
order
).
build
();
.
withPayload
(
OrderStateChangeAction
.
RECEIVE_ORDER
).
setHeader
(
"order"
,
order
).
build
();
if
(
changeStateAction
(
message
,
order
))
{
if
(
changeStateAction
(
message
,
order
))
{
return
order
;
return
order
;
}
}
return
null
;
return
null
;
}
}
/**
* 状态变更
*
* @param message
* @param order
* @return
*/
private
boolean
changeStateAction
(
Message
<
OrderStateChangeAction
>
message
,
Order
order
)
{
private
boolean
changeStateAction
(
Message
<
OrderStateChangeAction
>
message
,
Order
order
)
{
try
{
try
{
orderStateMachine
.
start
();
orderStateMachine
.
start
();
...
@@ -105,4 +139,4 @@ public class OrderService {
...
@@ -105,4 +139,4 @@ public class OrderService {
}
}
return
false
;
return
false
;
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录