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
f4e45717
Commit
f4e45717
authored
Oct 09, 2020
by
缪晖
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
订单创建时初始化发起人餐位以及门店拼单客户列表,拼单取消时添加清除操作
parent
5c68844c
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
189 additions
and
72 deletions
+189
-72
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/CollageOrderConstant.java
+17
-0
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/ShoppingCartConstant.java
+0
-2
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollageOrderDto.java
+0
-2
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
+148
-60
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/util/DateTimeUtils.java
+15
-0
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
+8
-8
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
+1
-0
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/CollageOrderConstant.java
0 → 100644
View file @
f4e45717
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
constant
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0.0
* @Description:
* @author: hui.miao
* @date: 2020-10-09 10:49
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public
class
CollageOrderConstant
{
public
final
static
String
COLLAGE_ORDER_FAILED
=
"订单操作失败"
;
public
final
static
String
COLLAGE_ORDER_NOT_EXIST
=
"拼单订单信息不存在"
;
public
final
static
String
COLLAGE_ORDER_ALREADY_EXIST
=
"当前用户存在进行中的拼单订单"
;
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/constant/ShoppingCartConstant.java
View file @
f4e45717
...
...
@@ -33,7 +33,5 @@ public class ShoppingCartConstant {
public
final
static
String
ONE_TRADE_CAN_ONLY_USE_ONE_GOODS_COUPON
=
"一笔交易仅允许同时使用一张商品券"
;
public
final
static
String
ORDER_WAY_CHANGE
=
"切换点餐方式,商品库存和价格等可能会发生变化。"
;
public
final
static
String
COLLAGE_ORDER_NOT_EXIST
=
"拼单订单信息不存在"
;
public
final
static
String
COLLAGE_ORDER_ALREADY_EXIST
=
"当前用户存在进行中的拼单订单"
;
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/domain/CollageOrderDto.java
View file @
f4e45717
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
domain
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CollageLockStatus
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/impl/CollageOrderBaseServiceImpl.java
View file @
f4e45717
package
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
service
.
impl
;
import
cn.freemud.base.entity.BaseResponse
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.sdk.api.assortment.shoppingcart.adapter.CollageOrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CollageLockStatus
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CollageOrderConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant
;
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.CollageOrderBaseService
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.DateTimeUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.text.MessageFormat
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -35,6 +35,9 @@ import java.util.concurrent.TimeUnit;
@Service
(
"collageOrderBaseService"
)
public
class
CollageOrderBaseServiceImpl
implements
CollageOrderBaseService
{
@Autowired
private
CollageCartBaseServiceImpl
collageCartBaseService
;
@Autowired
private
CollageOrderSdkAdapter
collageOrderSdkAdapter
;
@Autowired
...
...
@@ -47,19 +50,24 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
@Override
public
BaseResponse
<
CollageOrder
>
queryCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
redisKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
try
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
redisKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
// 查询Redis缓存中拼单订单基础信息
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
redisKey
);
// 查询Redis缓存中拼单订单基础信息
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
redisKey
);
// 若拼单订单信息不存在,则返回错误提示【拼单订单信息不存在】,由前端根据场景处理(静默、提示拼单已取消)
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
return
CartResponseUtil
.
error
(
ShoppingCart
Constant
.
COLLAGE_ORDER_NOT_EXIST
);
}
// 若拼单订单信息不存在,则返回错误提示【拼单订单信息不存在】,由前端根据场景处理(静默、提示拼单已取消)
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
return
CartResponseUtil
.
error
(
CollageOrder
Constant
.
COLLAGE_ORDER_NOT_EXIST
);
}
// 若拼单订单信息存在,则构造订单拼单对象并返回成功提示
return
CartResponseUtil
.
success
(
collageOrder
);
// 若拼单订单信息存在,则构造订单拼单对象并返回成功提示
return
CartResponseUtil
.
success
(
collageOrder
);
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"获取拼单订单基础信息异常"
,
"CollageOrderBaseServiceImpl/queryCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_NOT_EXIST
);
}
}
/**
...
...
@@ -69,25 +77,34 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
@Override
public
BaseResponse
<
CollageOrder
>
createCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
redisKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
// 根据key查询Redis中拼单订单的基本信息
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
redisKey
);
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
// 若拼单信息不存在,则初始化拼单订单对象,放入Redis缓存并设置1小时失效时间,返回拼单订单对象并给出成功提示
collageOrder
=
collageOrderSdkAdapter
.
toCollageOrder
(
collageOrderDto
);
collageOrder
.
setCollageId
(
UUID
.
randomUUID
().
toString
());
collageOrder
.
setCreateTime
(
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
());
collageOrder
.
setExpireTime
(
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
()
+
60
*
60
*
1000
);
// 创建缓存数据
this
.
putCollageBaseHash
(
redisKey
,
collageOrder
);
return
CartResponseUtil
.
success
(
collageOrder
);
}
else
{
// 若拼单订单信息已存在,则返回错误提示【当前用户存在进行中的拼单订单】
return
CartResponseUtil
.
error
(
ShoppingCartConstant
.
COLLAGE_ORDER_ALREADY_EXIST
);
try
{
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String
collageBaseHashKey
=
this
.
genCollageBaseHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
// 根据key查询Redis中拼单订单的基本信息
CollageOrder
collageOrder
=
this
.
getCollageBaseHash
(
collageBaseHashKey
);
if
(
ObjectUtils
.
isEmpty
(
collageOrder
))
{
// 若拼单信息不存在,则初始化拼单订单对象,放入Redis缓存并设置1小时失效时间,返回拼单订单对象并给出成功提示
collageOrder
=
collageOrderSdkAdapter
.
toCollageOrder
(
collageOrderDto
);
collageOrder
.
setCollageId
(
UUID
.
randomUUID
().
toString
());
collageOrder
.
setCreateTime
(
DateTimeUtils
.
currentTimeMillis
());
collageOrder
.
setExpireTime
(
DateTimeUtils
.
currentTimeMillis
(
60
*
60L
));
// 创建缓存数据
this
.
putCollageBaseHash
(
collageBaseHashKey
,
collageOrder
);
// 将拼单发起人加入拼单餐位
this
.
collageCartBaseService
.
updateCollageCartGoodsUids
(
Collections
.
EMPTY_LIST
,
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
(),
collageOrderDto
.
getCurrentUserId
());
// 将拼单发起人加入门店拼单客户列表
String
collageStoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
());
this
.
putCollageStoreMember
(
collageStoreMemberKey
,
collageOrderDto
.
getCreateCollageUserId
(),
this
.
getCollageBashHashExpireSeconds
(
collageBaseHashKey
));
return
CartResponseUtil
.
success
(
collageOrder
);
}
else
{
// 若拼单订单信息已存在,则返回错误提示【当前用户存在进行中的拼单订单】
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_ALREADY_EXIST
);
}
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"创建拼单订单异常"
,
"CollageOrderBaseServiceImpl/createCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_ALREADY_EXIST
);
}
}
...
...
@@ -98,10 +115,14 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
@Override
public
BaseResponse
cancelCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
// 批量删除上述Key对应的Redis缓存
this
.
deleteCollageBaseHash
(
this
.
collageOrderSdkAdapter
.
toCollageOrder
(
collageOrderDto
));
return
CartResponseUtil
.
success
();
try
{
// 批量删除上述Key对应的Redis缓存
this
.
deleteCollageBaseHash
(
this
.
collageOrderSdkAdapter
.
toCollageOrder
(
collageOrderDto
));
return
CartResponseUtil
.
success
();
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"取消拼单订单异常"
,
"CollageOrderBaseServiceImpl/cancelCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_FAILED
);
}
}
/**
...
...
@@ -111,8 +132,14 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
@Override
public
BaseResponse
lockCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
this
.
setCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
(),
CollageLockStatus
.
LOCKED
);
return
this
.
getCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
()).
getValue
()
?
CartResponseUtil
.
success
()
:
CartResponseUtil
.
error
(
"操作失败"
);
try
{
String
collageLockKey
=
this
.
genCollageLockKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
this
.
setCollageLock
(
collageLockKey
,
CollageLockStatus
.
LOCKED
);
return
this
.
getCollageLock
(
collageLockKey
).
getValue
()
?
CartResponseUtil
.
success
()
:
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_FAILED
);
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"锁定拼单订单异常"
,
"CollageOrderBaseServiceImpl/lockCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_FAILED
);
}
}
/**
...
...
@@ -122,8 +149,14 @@ 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
(
"操作失败"
);
try
{
String
collageLockKey
=
this
.
genCollageLockKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
this
.
setCollageLock
(
collageLockKey
,
CollageLockStatus
.
RELEASE
);
return
!
this
.
getCollageLock
(
collageLockKey
).
getValue
()
?
CartResponseUtil
.
success
()
:
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_FAILED
);
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"解锁拼单订单异常"
,
"CollageOrderBaseServiceImpl/unlockCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
error
(
CollageOrderConstant
.
COLLAGE_ORDER_FAILED
);
}
}
/**
...
...
@@ -133,7 +166,13 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
*/
@Override
public
BaseResponse
<
Boolean
>
isLockedCollageOrder
(
CollageOrderDto
collageOrderDto
)
{
return
CartResponseUtil
.
success
(
this
.
getCollageLock
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
()).
getValue
());
try
{
String
collageLockKey
=
this
.
genCollageLockKey
(
collageOrderDto
.
getPartnerId
(),
collageOrderDto
.
getStoreId
(),
collageOrderDto
.
getCreateCollageUserId
());
return
CartResponseUtil
.
success
(
this
.
getCollageLock
(
collageLockKey
).
getValue
());
}
catch
(
Exception
e
)
{
ErrorLog
.
printErrorLog
(
"获取拼单订单锁状态异常"
,
"CollageOrderBaseServiceImpl/isLockedCollageOrder"
,
this
.
collageOrderRequest
(
collageOrderDto
),
e
);
return
CartResponseUtil
.
success
(
false
);
}
}
@Override
...
...
@@ -209,28 +248,43 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/**
* Redis获取拼单订单信息
* @param redisKey
* @param collageBaseHashKey
* @return
*/
private
CollageOrder
getCollageBaseHash
(
String
collageBaseHashKey
)
throws
Exception
{
return
collageOrderSdkAdapter
.
toCollageOrder
(
redisTemplate
.
boundHashOps
(
collageBaseHashKey
).
entries
());
}
/**
* 获取拼单订单剩余过期时间
* @param collageBaseHashKey
* @return
*/
private
CollageOrder
getCollageBaseHash
(
String
redisKey
)
{
return
collageOrderSdkAdapter
.
toCollageOrder
(
redisTemplate
.
boundHashOps
(
redisKey
).
entries
()
);
private
Long
getCollageBashHashExpireSeconds
(
String
collageBaseHashKey
)
throws
Exception
{
return
redisTemplate
.
boundHashOps
(
collageBaseHashKey
).
getExpire
(
);
}
/**
* Redis写入拼单订单信息
* @param
redis
Key
* @param
collageBaseHash
Key
* @param collageOrder
*/
private
void
putCollageBaseHash
(
String
redisKey
,
CollageOrder
collageOrder
)
{
redisTemplate
.
boundHashOps
(
redis
Key
).
putAll
(
this
.
collageOrderSdkAdapter
.
toRedisMap
(
collageOrder
));
redisTemplate
.
boundHashOps
(
redis
Key
).
expire
(
1L
,
TimeUnit
.
HOURS
);
private
void
putCollageBaseHash
(
String
collageBaseHashKey
,
CollageOrder
collageOrder
)
throws
Exception
{
redisTemplate
.
boundHashOps
(
collageBaseHash
Key
).
putAll
(
this
.
collageOrderSdkAdapter
.
toRedisMap
(
collageOrder
));
redisTemplate
.
boundHashOps
(
collageBaseHash
Key
).
expire
(
1L
,
TimeUnit
.
HOURS
);
}
/**
* Redis删除拼单订单信息以及相关购物车信息
* @param collageOrder
*/
private
void
deleteCollageBaseHash
(
CollageOrder
collageOrder
)
{
private
void
deleteCollageBaseHash
(
CollageOrder
collageOrder
)
throws
Exception
{
// 删除商品门店拼单客户列表中该拼单订单下参与人
String
collageStoreMemberKey
=
this
.
genCollageMemerHashKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
());
Set
<
String
>
collageMember
=
this
.
collageCartBaseService
.
getCollageMember
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
());
this
.
deleteCollageStoreMember
(
collageStoreMemberKey
,
collageMember
.
toArray
());
// 删除拼单订单相关缓存
Set
<
String
>
redisKeySet
=
new
HashSet
<>();
redisKeySet
.
add
(
this
.
genCollageBaseHashKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
()));
redisKeySet
.
add
(
this
.
genCollageMemberHashKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
()));
...
...
@@ -238,35 +292,56 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
redisKeySet
.
add
(
this
.
genCollageCarVerKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
()));
redisKeySet
.
add
(
this
.
genCollageLockKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
()));
redisKeySet
.
add
(
this
.
genCollageMemberStateHashKey
(
collageOrder
.
getPartnerId
(),
collageOrder
.
getStoreId
(),
collageOrder
.
getCreateCollageUserId
()));
redisTemplate
.
delete
(
redisKeySet
);
}
/**
* 拼单订单锁设定
* @param partnerId
* @param storeId
* @param userId
* @param collageLockKey
* @param status
*/
private
void
setCollageLock
(
String
partnerId
,
String
storeId
,
String
userId
,
CollageLockStatus
status
)
{
String
collageLockKey
=
genCollageLockKey
(
partnerId
,
storeId
,
userId
);
private
void
setCollageLock
(
String
collageLockKey
,
CollageLockStatus
status
)
throws
Exception
{
redisTemplate
.
boundValueOps
(
collageLockKey
).
set
(
status
.
getValue
(),
1L
,
TimeUnit
.
HOURS
);
}
/**
* 获取拼单的锁定状态
* @param partnerId
* @param storeId
* @param userId
* @param collageLockKey
* @return
*/
private
CollageLockStatus
getCollageLock
(
String
partnerId
,
String
storeId
,
String
userId
)
{
String
collageLockKey
=
genCollageLockKey
(
partnerId
,
storeId
,
userId
);
private
CollageLockStatus
getCollageLock
(
String
collageLockKey
)
throws
Exception
{
return
CollageLockStatus
.
getByValue
(
redisTemplate
.
boundValueOps
(
collageLockKey
).
get
());
}
/**
* 商户门店拼单参与用户名单设置
* @param collageStoreMemberKey
* @param userId
*/
private
void
putCollageStoreMember
(
String
collageStoreMemberKey
,
String
userId
,
Long
expireTime
)
throws
Exception
{
redisTemplate
.
boundHashOps
(
collageStoreMemberKey
).
put
(
userId
,
Optional
.
ofNullable
(
DateTimeUtils
.
currentTimeMillis
(
expireTime
)).
orElseGet
(()
->
DateTimeUtils
.
currentTimeMillis
(
60
*
60L
)));
}
/**
* 商户门店拼单参与用户名单删除拼单参与人
* @param collageStoreMemberKey
* @param userIds
*/
private
void
deleteCollageStoreMember
(
String
collageStoreMemberKey
,
Object
[]
userIds
)
throws
Exception
{
if
(
userIds
.
length
==
0
)
return
;
redisTemplate
.
boundHashOps
(
collageStoreMemberKey
).
delete
(
userIds
);
}
/**
* 获取当前商户门店下全部拼单参与用户列表
* @param collageStoreMemberKey
* @return
*/
private
Map
<
String
,
Long
>
getCollageStoreMember
(
String
collageStoreMemberKey
)
throws
Exception
{
return
Optional
.
ofNullable
(
redisTemplate
.
boundHashOps
(
collageStoreMemberKey
).
entries
()).
orElseGet
(()
->
new
HashMap
());
}
/**
* 构建拼单购物车缓存key
* @param partnerId
* @param storeId
...
...
@@ -332,4 +407,17 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
return
MessageFormat
.
format
(
RedisKeyConstant
.
COLLAGE_CART_VER_KEY
,
partnerId
,
storeId
,
userId
);
}
/**
* 拼单订单请求参数构造
* @param collageOrderDto
* @return
*/
private
Map
<
String
,
String
>
collageOrderRequest
(
CollageOrderDto
collageOrderDto
)
{
Map
<
String
,
String
>
request
=
new
HashMap
<>();
request
.
put
(
"partnerId"
,
collageOrderDto
.
getPartnerId
());
request
.
put
(
"storeId"
,
collageOrderDto
.
getStoreId
());
request
.
put
(
"createCollageUserId"
,
collageOrderDto
.
getCreateCollageUserId
());
request
.
put
(
"currentUserId"
,
collageOrderDto
.
getCurrentUserId
());
return
request
;
}
}
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/util/DateTimeUtils.java
View file @
f4e45717
...
...
@@ -245,4 +245,19 @@ public class DateTimeUtils {
return
getCurrentLocalDate
().
plus
(
2
,
ChronoUnit
.
DECADES
).
format
(
DATE_FORMATTER
);
}
/**
* 获取当前系统时间毫秒数
* @return
*/
public
static
Long
currentTimeMillis
()
{
return
currentTimeMillis
(
0L
);
}
/**
* 获取当前系统时间毫秒数加偏移量(秒)
* @return
*/
public
static
Long
currentTimeMillis
(
Long
offset
)
{
return
System
.
currentTimeMillis
()
+
offset
*
1000
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/controller/CollageOrderController.java
View file @
f4e45717
...
...
@@ -40,14 +40,14 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
public
class
CollageOrderController
{
@Autowired
private
CollageOrderServiceImpl
collageOrderService
l
;
private
CollageOrderServiceImpl
collageOrderService
;
@ApiOperation
(
value
=
"查询拼单订单"
,
notes
=
"根据商户ID、门店ID、拼单邀请人用户ID或者当前登录用户sessionId查询拼单订单信息"
)
@ApiImplicitParam
(
value
=
"请求"
,
required
=
true
,
dataType
=
"CollageOrderRequestVo"
,
name
=
"CollageOrderRequestVo"
)
@ApiAnnotation
(
logMessage
=
"getOrder"
)
@PostMapping
(
value
=
"/getOrder"
)
public
BaseResponse
queryCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
queryCollageOrder
(
request
);
return
collageOrderService
.
queryCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"创建拼单订单"
,
notes
=
"根据商户ID、门店ID、当前登录用户sessionId创建拼单订单信息"
)
...
...
@@ -55,7 +55,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"createOrder"
)
@PostMapping
(
value
=
"/createOrder"
)
public
BaseResponse
createOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
createCollageOrder
(
request
);
return
collageOrderService
.
createCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"取消拼单订单"
,
notes
=
"根据商户ID、门店ID、当前登录用户sessionId取消拼单订单,并删除相关拼单信息"
)
...
...
@@ -63,7 +63,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"cancelOrder"
)
@PostMapping
(
value
=
"/cancelOrder"
)
public
BaseResponse
cancelCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
cancelCollageOrder
(
request
);
return
collageOrderService
.
cancelCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"锁定拼单订单"
,
notes
=
"根据商户ID、门店ID、当前登录用户sessionId锁定拼单订单"
)
...
...
@@ -71,7 +71,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"lockOrder"
)
@PostMapping
(
value
=
"/lockOrder"
)
public
BaseResponse
lockCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
lockCollageOrder
(
request
);
return
collageOrderService
.
lockCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"解锁拼单订单"
,
notes
=
"根据商户ID、门店ID、当前登录用户sessionId解锁拼单订单"
)
...
...
@@ -79,7 +79,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"unlockOrder"
)
@PostMapping
(
value
=
"/unlockOrder"
)
public
BaseResponse
unlockCollageOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
unlockCollageOrder
(
request
);
return
collageOrderService
.
unlockCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"加入拼单订单"
,
notes
=
"加入拼单订单"
)
...
...
@@ -87,7 +87,7 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"addOrder"
)
@PostMapping
(
value
=
"/addOrder"
)
public
BaseResponse
addOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
addCollageOrder
(
request
);
return
collageOrderService
.
addCollageOrder
(
request
);
}
@ApiOperation
(
value
=
"退出拼单订单"
,
notes
=
"退出拼单订单"
)
...
...
@@ -95,6 +95,6 @@ public class CollageOrderController {
@ApiAnnotation
(
logMessage
=
"outOfOrder"
)
@PostMapping
(
value
=
"/outOfOrder"
)
public
BaseResponse
outOfOrder
(
@Validated
@LogParams
@RequestBody
CollageOrderRequestVo
request
)
{
return
collageOrderService
l
.
outOfOrder
(
request
);
return
collageOrderService
.
outOfOrder
(
request
);
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CollageOrderServiceImpl.java
View file @
f4e45717
...
...
@@ -84,6 +84,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto
collageOrderDto
=
this
.
collageOrderAdapter
.
convert2CollageOrderDto
(
request
);
// 根据sessionId查询对应登录用户信息
collageOrderDto
.
setCreateCollageUserId
(
this
.
getUserIdBySessionId
(
request
.
getSessionId
()));
collageOrderDto
.
setCurrentUserId
(
collageOrderDto
.
getCreateCollageUserId
());
// 创建拼单订单基础缓存信息
BaseResponse
<
CollageOrder
>
createCollageOrderResponse
=
this
.
collageOrderBaseService
.
createCollageOrder
(
collageOrderDto
);
...
...
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