Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
d1d12ff8
Commit
d1d12ff8
authored
Sep 29, 2020
by
缪晖
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【ID1010972】多人拼单 订单锁定解锁代码优化
parent
9be1aa42
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
48 additions
and
20 deletions
+48
-20
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/CollageLockStatus.java
+1
-1
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
+6
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
+40
-16
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/CollageLockStatus.java
View file @
d1d12ff8
...
...
@@ -6,7 +6,7 @@ public enum CollageLockStatus {
LOCKED
(
true
,
"已锁定"
),
RELEASE
(
false
,
"未锁定"
);
private
b
oolean
value
;
private
B
oolean
value
;
private
String
desc
;
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
View file @
d1d12ff8
...
...
@@ -125,7 +125,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override
public
BaseResponse
unlockCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
this
.
setCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
(),
CollageLockStatus
.
RELEASE
);
return
this
.
getCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
()).
getValue
()
?
CartResponseUtil
.
success
()
:
CartResponseUtil
.
error
(
"操作失败"
);
return
!
this
.
getCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
()).
getValue
()
?
CartResponseUtil
.
success
()
:
CartResponseUtil
.
error
(
"操作失败"
);
}
/**
...
...
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
View file @
d1d12ff8
...
...
@@ -15,7 +15,6 @@ package cn.freemud.controller;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CollageOrderRequestVo
;
import
cn.freemud.service.impl.CollageOrderServiceImpl
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
io.swagger.annotations.Api
;
...
...
@@ -30,6 +29,11 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 拼单订单没有持久化存储对象,仅在Redis中暂存标志位信息
* 购物车操作过程中需要检测拼单订单状态是否合法(锁定、订单超时等)
* 暂时将Redis操作的拼单订单接口放在购物车聚合及其SDK中
*/
@RestController
@RequestMapping
(
value
=
"/shoppingCart/collage"
,
consumes
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
@Api
(
value
=
"拼单订单 controller"
,
tags
=
{
"拼单订单管理接口"
})
...
...
@@ -67,7 +71,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"lockOrder"
)
@PostMapping
(
value
=
"/lockOrder"
)
public
BaseResponse
lockCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
SDKCommonBaseContextWare
.
getBean
(
CollageOrderServiceImpl
.
class
)
.
lockCollageOrder
(
request
);
return
collageOrderServicel
.
lockCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"解锁拼单订单"
,
notes
=
"根据商户ID、门店ID、当前登录用户sessionId解锁拼单订单"
)
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
View file @
d1d12ff8
...
...
@@ -5,6 +5,7 @@ import cn.freemud.base.entity.BaseResponse;
import
cn.freemud.entities.vo.CollageOrderRequestVo
;
import
cn.freemud.entities.vo.CollageOrderResponseVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CollageOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder
;
...
...
@@ -15,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.Optional
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -53,17 +56,15 @@ public class CollageOrderServiceImpl implements CollageOrderService {
BaseResponse
<
CollageOrder
>
queryCollageOrderResponse
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
);
CollageOrder
collageOrder
=
queryCollageOrderResponse
.
getResult
();
if
(
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
queryCollageOrderResponse
.
getCode
())
&&
!
ObjectUtils
.
isEmpty
(
collageOrder
))
{
CollageOrderResponseVo
collageOrderResponseVo
=
new
CollageOrderResponseVo
();
// 订单基础信息
collageOrderResponseVo
.
setOrder
(
collageOrder
);
// SDK查询订单返回非成功code或返回结果订单信息为空时,返回前端异常信息
Optional
.
ofNullable
(
queryCollageOrderResponse
).
filter
(
resp
->
(
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
resp
.
getCode
())
&&
!
ObjectUtils
.
isEmpty
(
collageOrder
))).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// TODO 订单参与人列表信息
CollageOrderResponseVo
collageOrderResponseVo
=
new
CollageOrderResponseVo
();
// 订单基础信息
collageOrderResponseVo
.
setOrder
(
collageOrder
);
// TODO 订单参与人列表信息
return
ResponseUtil
.
success
(
collageOrderResponseVo
);
}
else
{
return
ResponseUtil
.
error
(
ResponseResult
.
COLLAGE_NOT_EXIST
);
}
return
ResponseUtil
.
success
(
collageOrderResponseVo
);
}
/**
...
...
@@ -80,14 +81,12 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 创建拼单订单基础缓存信息
BaseResponse
<
CollageOrder
>
createCollageOrderResponse
=
this
.
collageOrderBaseService
.
createCollageOrder
(
collageOrderDto
);
if
(
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createCollageOrderResponse
.
getCode
()))
{
CollageOrderResponseVo
collageOrderResponseVo
=
new
CollageOrderResponseVo
();
collageOrderResponseVo
.
setOrder
(
createCollageOrderResponse
.
getResult
());
// SDK创建订单返回非成功code时,返回前端异常信息
Optional
.
ofNullable
(
createCollageOrderResponse
).
filter
(
resp
->
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
resp
.
getCode
())).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_ALREADY_EXIST
));
return
ResponseUtil
.
success
(
collageOrderResponseVo
);
}
else
{
return
ResponseUtil
.
error
(
ResponseResult
.
COLLAGE_ALREADY_EXIST
);
}
CollageOrderResponseVo
collageOrderResponseVo
=
new
CollageOrderResponseVo
();
collageOrderResponseVo
.
setOrder
(
createCollageOrderResponse
.
getResult
());
return
ResponseUtil
.
success
(
collageOrderResponseVo
);
}
/**
...
...
@@ -100,6 +99,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 根据sessionId查询对应登录用户信息
collageOrderDto
.
setCreateCollageUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
this
.
checkCollageOrderOwner
(
collageOrderDto
);
return
this
.
collageOrderBaseService
.
cancelCollageOrder
(
collageOrderDto
);
}
...
...
@@ -113,6 +113,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 根据sessionId查询对应登录用户信息
collageOrderDto
.
setCreateCollageUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
this
.
checkCollageOrderOwner
(
collageOrderDto
);
return
this
.
collageOrderBaseService
.
lockCollageOrder
(
collageOrderDto
);
}
...
...
@@ -126,6 +127,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 根据sessionId查询对应登录用户信息
collageOrderDto
.
setCreateCollageUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
this
.
checkCollageOrderOwner
(
collageOrderDto
);
return
this
.
collageOrderBaseService
.
unlockCollageOrder
(
collageOrderDto
);
}
...
...
@@ -137,4 +139,26 @@ public class CollageOrderServiceImpl implements CollageOrderService {
private
String
getUserIdBySessionId
(
String
sessionId
)
{
return
this
.
shoppingCartCollageService
.
getCustomerInfoVo
(
sessionId
).
getMemberId
();
}
/**
* 查询当前拼单订单基础信息是否存在
* @param collageOrderDto
* @return
*/
private
Boolean
isCollageOrderExist
(
CollageOrderDto
collageOrderDto
)
{
// 查询当前拼单订单基础信息是否存在
return
ObjectUtils
.
isEmpty
(
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
).
getResult
())
?
false
:
true
;
}
/**
* 拼单订单检查
* @param collageOrderDto
*/
private
void
checkCollageOrderOwner
(
CollageOrderDto
collageOrderDto
)
{
CollageOrder
collageOrder
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
).
getResult
();
// 拼单订单信息不存在时,返回错误提示
Optional
.
ofNullable
(
collageOrder
).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// 若当前操作人并非拼单邀请人时,返回错误提示 当前用户不是拼单发起人,无法操作
Optional
.
ofNullable
(
collageOrder
).
map
(
CollageOrder:
:
getCreateCollageUserId
).
filter
(
userId
->
userId
.
equals
(
collageOrderDto
.
getCreateCollageUserId
())).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_OWNER
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment