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
5c68844c
Commit
5c68844c
authored
Oct 09, 2020
by
刘鹏飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
加入、退出拼单
parent
b950e0ec
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
279 additions
and
4 deletions
+279
-4
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/RedisKeyConstant.java
+6
-0
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollageOrderDto.java
+11
-0
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/CollageOrderBaseService.java
+51
-0
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
+73
-3
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
+16
-0
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+3
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
+14
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
+105
-0
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/RedisKeyConstant.java
View file @
5c68844c
...
...
@@ -110,4 +110,10 @@ public class RedisKeyConstant {
*/
public
final
static
String
COLLAGE_MEMBER_STATE_KEY
=
"kgd:collage:member:state:{0}:{1}:{2}"
;
/**
* kgd:collage:store:member:{partnerId}:{storeId}
* 门店下拼单人员缓存key
*/
public
final
static
String
COLLAGE_STORE_MEMBER_KEY
=
"kgd:collage:store:member:{0}:{1}"
;
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollageOrderDto.java
View file @
5c68844c
...
...
@@ -5,6 +5,7 @@ import lombok.Builder;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -44,4 +45,14 @@ public class CollageOrderDto
* 门店ID
*/
private
String
storeId
;
/**
* 拼单当前用户ID
*/
private
String
currentUserId
;
/**
* 购物车行ids
*/
private
List
<
String
>
cartLines
;
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/CollageOrderBaseService.java
View file @
5c68844c
...
...
@@ -4,6 +4,8 @@ import cn.freemud.base.entity.BaseResponse;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrderDto
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -56,4 +58,53 @@ public interface CollageOrderBaseService {
* @return
*/
BaseResponse
<
Boolean
>
isLockedCollageOrder
(
CollageOrderDto
collageOrderDto
);
/**
* 判断门店下的拼单是否存在该会员
*/
BaseResponse
judgeMemberStates
(
CollageOrderDto
collageOrderDto
);
/**
* 设置用户的点餐位信息
* @param collageOrderDto
* @return
*/
BaseResponse
setCollageMember
(
CollageOrderDto
collageOrderDto
);
/**
* 设置用户在该店铺下的拼单状态
* @param collageOrderDto
* @return
*/
BaseResponse
setCollageMemberAddStates
(
CollageOrderDto
collageOrderDto
,
Boolean
states
);
/**
* 判断用户是否参加了某一个拼单
* @param collageOrderDto
* @return
*/
BaseResponse
judgeMemberAddOneCollage
(
CollageOrderDto
collageOrderDto
);
/**
* 清除用户的点餐位
* @param collageOrderDto
* @return
*/
BaseResponse
cleanMemberSeat
(
CollageOrderDto
collageOrderDto
);
/**
* 获取用户的点餐中购物车行id
*/
List
<
String
>
getMemCarLine
(
CollageOrderDto
collageOrderDto
);
/**
* 清除用户的购物车行
*/
BaseResponse
cleanMemberCartLine
(
CollageOrderDto
collageOrderDto
);
/**
* 清除用户选好了的状态
*/
BaseResponse
cleanMemberStates
(
CollageOrderDto
collageOrderDto
);
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
View file @
5c68844c
...
...
@@ -17,9 +17,7 @@ import org.springframework.util.ObjectUtils;
import
java.text.MessageFormat
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.UUID
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -138,6 +136,77 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
return
CartResponseUtil
.
success
(
this
.
getCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
()).
getValue
());
}
@Override
public
BaseResponse
judgeMemberStates
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
());
Boolean
states
=
(
Boolean
)
redisTemplate
.
boundHashOps
(
key
).
get
(
collageOrderDto
.
getCurrentUserId
());
if
(
states
){
return
CartResponseUtil
.
error
(
"用户已经参加其他的拼单"
);
}
return
CartResponseUtil
.
success
();
}
@Override
public
BaseResponse
setCollageMember
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
());
redisTemplate
.
boundHashOps
(
key
).
put
(
collageOrderDto
.
getCurrentUserId
(),
new
ArrayList
<>());
return
CartResponseUtil
.
success
();
}
@Override
public
BaseResponse
setCollageMemberAddStates
(
CollageOrderDto
collageOrderDto
,
Boolean
states
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
redisTemplate
.
boundHashOps
(
key
).
put
(
collageOrderDto
.
getCurrentUserId
(),
states
);
return
CartResponseUtil
.
success
();
}
@Override
public
BaseResponse
judgeMemberAddOneCollage
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
Boolean
judge
=
redisTemplate
.
boundHashOps
(
key
).
hasKey
(
collageOrderDto
.
getCurrentUserId
());
if
(
judge
){
CartResponseUtil
.
success
();
}
return
CartResponseUtil
.
error
(
""
);
}
@Override
public
BaseResponse
cleanMemberSeat
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
redisTemplate
.
boundHashOps
(
key
).
delete
(
collageOrderDto
.
getCurrentUserId
());
return
CartResponseUtil
.
success
();
}
@Override
public
List
<
String
>
getMemCarLine
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
List
<
String
>
cartLineIds
=
(
List
<
String
>)
redisTemplate
.
boundHashOps
(
key
).
get
(
collageOrderDto
.
getCurrentUserId
());
return
cartLineIds
;
}
@Override
public
BaseResponse
cleanMemberCartLine
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageCarHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
redisTemplate
.
boundHashOps
(
key
).
delete
(
collageOrderDto
.
getCartLines
());
return
CartResponseUtil
.
success
();
}
@Override
public
BaseResponse
cleanMemberStates
(
CollageOrderDto
collageOrderDto
){
String
key
=
genCollageMemberStateHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
redisTemplate
.
boundHashOps
(
key
).
delete
(
collageOrderDto
.
getCurrentUserId
());
return
CartResponseUtil
.
success
();
}
/**
* 构建门店下拼单人员hashKey
* @param partnerId
* @param storeId
*/
private
String
genCollageMemerHashKey
(
String
partnerId
,
String
storeId
)
{
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_STORE_MEMBER_KEY
,
partnerId
,
storeId
);
}
/**
* Redis获取拼单订单信息
* @param redisKey
...
...
@@ -262,4 +331,5 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
private
String
genCollageCarVerKey
(
String
partnerId
,
String
storeId
,
String
userId
)
{
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_CART_VER_KEY
,
partnerId
,
storeId
,
userId
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
View file @
5c68844c
...
...
@@ -81,4 +81,20 @@ public class CollageOrderController {
public
BaseResponse
unlockCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderServicel
.
unlockCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"加入拼单订单"
,
notes
=
"加入拼单订单"
)
@ApiImplicitParam
(
value
=
"请求"
,
required
=
true
,
dataType
=
"CollageOrderRequestVo"
,
name
=
"CollageOrderRequestVo"
)
@ApiAnnotation
(
logMessage
=
"addOrder"
)
@PostMapping
(
value
=
"/addOrder"
)
public
BaseResponse
addOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderServicel
.
addCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"退出拼单订单"
,
notes
=
"退出拼单订单"
)
@ApiImplicitParam
(
value
=
"请求"
,
required
=
true
,
dataType
=
"CollageOrderRequestVo"
,
name
=
"CollageOrderRequestVo"
)
@ApiAnnotation
(
logMessage
=
"outOfOrder"
)
@PostMapping
(
value
=
"/outOfOrder"
)
public
BaseResponse
outOfOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderServicel
.
outOfOrder
(
request
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
5c68844c
...
...
@@ -146,7 +146,9 @@ public enum ResponseResult {
COLLAGE_ALREADY_EXIST
(
"49005"
,
"当前用户存在进行中的拼单订单"
),
COLLAGE_NOT_OWNER
(
"49006"
,
"当前用户不是拼单发起人,无法操作"
),
COLLAGE_GOOD_NOT_ONESELF
(
"49007"
,
"只能操作自己的商品"
),
COLLAGE_MEMBER_ALREADY_ADD
(
"49008"
,
"用户已经加入其他的拼单"
),
COLLAGE_CREATE_NOT_OUT_OF
(
"49009"
,
"拼单发起人不能退出拼单,请取消"
),
COLLAGE_MEMBER_NOT_ADD
(
"49010"
,
"用户未参加拼单,请确认"
),
/**
* 微信卡券
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/CollageOrderService.java
View file @
5c68844c
...
...
@@ -50,4 +50,18 @@ public interface CollageOrderService {
* @return
*/
BaseResponse
unlockCollageOrder
(
CollageOrderRequestVo
request
);
/**
* 加入拼单订单
* @param request
* @return
*/
BaseResponse
addCollageOrder
(
CollageOrderRequestVo
request
);
/**
* 退出拼单订单
* @param request
* @return
*/
BaseResponse
outOfOrder
(
CollageOrderRequestVo
request
);
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
View file @
5c68844c
...
...
@@ -2,12 +2,16 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.CollageOrderAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CartGoods
;
import
cn.freemud.entities.vo.CollageOrderRequestVo
;
import
cn.freemud.entities.vo.CollageOrderResponseVo
;
import
cn.freemud.entities.vo.CustomerInfoVo
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.service.CollageOrderService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrderDto
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.CollageOrderBaseServiceImpl
;
...
...
@@ -16,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.List
;
import
java.util.Optional
;
/**
...
...
@@ -163,4 +168,104 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 若当前操作人并非拼单邀请人时,返回错误提示 当前用户不是拼单发起人,无法操作
Optional
.
ofNullable
(
collageOrder
).
map
(
CollageOrder:
:
getCreateCollageUserId
).
filter
(
userId
->
userId
.
equals
(
collageOrderDto
.
getCreateCollageUserId
())).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_OWNER
));
}
/**
* 加入拼单订单
* @param request(partnerId shopId sessionId)
* @return
*/
@Override
public
BaseResponse
addCollageOrder
(
CollageOrderRequestVo
request
)
{
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 设置当前登陆用户
collageOrderDto
.
setCurrentUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
// 设置拼单发起人
collageOrderDto
.
setCreateCollageUserId
(
request
.
getCreateCollageUserId
());
// 校验拼单是否存在
CollageOrder
collageOrder
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
).
getResult
();
// 拼单订单信息不存在时,返回错误提示
Optional
.
ofNullable
(
collageOrder
).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// 判断当前登陆用户是否参加过当前店铺其他的拼团
// 因为一个用户在一个店铺下只能参加一个拼单,所以通过判断用户在店铺下的拼单状态来确认
BaseResponse
judgeMem
=
collageOrderBaseService
.
judgeMemberStates
(
collageOrderDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
judgeMem
.
getCode
())){
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_MEMBER_ALREADY_ADD
);
}
// 设置用户的点餐位
collageOrderBaseService
.
setCollageMember
(
collageOrderDto
);
// 设置用户在该店铺的拼单状态
collageOrderBaseService
.
setCollageMemberAddStates
(
collageOrderDto
,
Boolean
.
TRUE
);
return
ResponseUtil
.
success
();
}
/**
* 退出拼单订单
* @param request(partnerId shopId sessionId)
* @return
*/
@Override
public
BaseResponse
outOfOrder
(
CollageOrderRequestVo
request
)
{
// 获取当前登陆用户信息
CustomerInfoVo
currentUserInfoVo
=
this
.
shoppingCartCollageService
.
getCustomerInfoVo
(
request
.
getSessionId
());
// 当前用户必须登陆
if
(
StringUtils
.
isEmpty
(
currentUserInfoVo
.
getMemberId
()))
{
throw
new
ServiceException
(
ResponseResult
.
NOT_LOGIN
);
}
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 设置当前登陆用户
collageOrderDto
.
setCurrentUserId
(
currentUserInfoVo
.
getMemberId
());
// 设置拼单发起人
collageOrderDto
.
setCreateCollageUserId
(
request
.
getCreateCollageUserId
());
// 校验拼单是否存在
CollageOrder
collageOrder
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderDto
).
getResult
();
// 拼单订单信息不存在时,返回错误提示
Optional
.
ofNullable
(
collageOrder
).
orElseThrow
(()
->
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
));
// 拼单发起人不能退出只能取消
// 直接使用当前的用户查询拼单,如果能查询到,则当前用户就是拼单发起人
CollageOrderDto
collageOrderCheckDto
=
CollageOrderDto
.
builder
()
.
partnerId
(
request
.
getPartnerId
())
.
storeId
(
request
.
getShopId
())
.
createCollageUserId
(
currentUserInfoVo
.
getMemberId
()).
build
();
CollageOrder
collageOrderCheck
=
this
.
collageOrderBaseService
.
queryCollageOrder
(
collageOrderCheckDto
).
getResult
();
if
(
null
!=
collageOrderCheck
){
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_NOT_EXIST
);
}
// 非邀请人检查是否参加了该邀请人的订单
BaseResponse
judge
=
collageOrderBaseService
.
judgeMemberAddOneCollage
(
collageOrderDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
judge
.
getCode
())){
throw
new
ServiceException
(
ResponseResult
.
COLLAGE_MEMBER_NOT_ADD
);
}
List
<
String
>
cartLineIds
=
collageOrderBaseService
.
getMemCarLine
(
collageOrderDto
);
// 删除用户购物车行数据
if
(
cartLineIds
!=
null
&&
!
cartLineIds
.
isEmpty
()){
collageOrderDto
.
setCartLines
(
cartLineIds
);
collageOrderBaseService
.
cleanMemberCartLine
(
collageOrderDto
);
}
// 删除点餐位
collageOrderBaseService
.
cleanMemberSeat
(
collageOrderDto
);
// 删除用户选好了状态
collageOrderBaseService
.
cleanMemberStates
(
collageOrderDto
);
// 设置用户在该店铺的拼单状态
collageOrderBaseService
.
setCollageMemberAddStates
(
collageOrderDto
,
Boolean
.
FALSE
);
return
ResponseUtil
.
success
();
}
}
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