Commit 26097f03 by 缪晖

拼单初始化TTL设置

parent ea26e3f0
...@@ -78,6 +78,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -78,6 +78,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override @Override
public BaseResponse<CollageOrder> createCollageOrder(CollageOrderDto collageOrderDto) { public BaseResponse<CollageOrder> createCollageOrder(CollageOrderDto collageOrderDto) {
try { try {
if (!this.isInCollageStoreMemberList(collageOrderDto)) {
// 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key // 通过商户ID、门店ID、用户ID组装拼单订单Redis缓存基本信息Key
String collageBaseHashKey = this.genCollageBaseHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId()); String collageBaseHashKey = this.genCollageBaseHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
...@@ -93,19 +94,23 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -93,19 +94,23 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
// 创建缓存数据 // 创建缓存数据
this.putCollageBaseHash(collageBaseHashKey, collageOrder); this.putCollageBaseHash(collageBaseHashKey, collageOrder);
// 将拼单发起人加入拼单餐位 // 将拼单发起人加入拼单餐位
this.collageCartBaseService.updateCollageCartGoodsUids(Collections.EMPTY_LIST, collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId(), collageOrderDto.getCurrentUserId()); String collageMemberHashKey = this.genCollageMemberHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
this.initCollageMember(collageMemberHashKey, collageOrderDto.getCurrentUserId());
// 设置拼单发起人加购状态
String collageMemberStateHashKey = this.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
this.initCollageMemberState(collageMemberStateHashKey, collageOrderDto.getCurrentUserId());
// 将拼单发起人加入门店拼单客户列表 // 将拼单发起人加入门店拼单客户列表
String collageStoreMemberKey = this.genCollageMemerHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId()); String collageStoreMemberKey = this.genCollageMemerHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId());
this.putCollageStoreMember(collageStoreMemberKey, collageOrderDto.getCreateCollageUserId(), this.getCollageBashHashExpireSeconds(collageBaseHashKey)); this.putCollageStoreMember(collageStoreMemberKey, collageOrderDto.getCreateCollageUserId(), this.getCollageBashHashExpireSeconds(collageBaseHashKey));
return CartResponseUtil.success(collageOrder); return CartResponseUtil.success(collageOrder);
} else { }
// 若拼单订单信息已存在,则返回错误提示【当前用户存在进行中的拼单订单】
return CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_ALREADY_EXIST);
} }
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("创建拼单订单异常", "CollageOrderBaseServiceImpl/createCollageOrder", this.collageOrderRequest(collageOrderDto), e); ErrorLog.printErrorLog("创建拼单订单异常", "CollageOrderBaseServiceImpl/createCollageOrder", this.collageOrderRequest(collageOrderDto), e);
return CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_ALREADY_EXIST);
} }
// 若拼单发起人正在参与其他拼单 或者 拼单订单信息已存在,则返回错误提示【当前用户存在进行中的拼单订单】
return CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_ALREADY_EXIST);
} }
/** /**
...@@ -133,8 +138,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -133,8 +138,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override @Override
public BaseResponse lockCollageOrder(CollageOrderDto collageOrderDto) { public BaseResponse lockCollageOrder(CollageOrderDto collageOrderDto) {
try { try {
String collageBashHashKey = this.genCollageBaseHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
String collageLockKey = this.genCollageLockKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId()); String collageLockKey = this.genCollageLockKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
this.setCollageLock(collageLockKey, CollageLockStatus.LOCKED); this.setCollageLock(collageLockKey, CollageLockStatus.LOCKED, this.getCollageBashHashExpireSeconds(collageBashHashKey));
return this.getCollageLock(collageLockKey).getValue() ? CartResponseUtil.success() : CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_FAILED); return this.getCollageLock(collageLockKey).getValue() ? CartResponseUtil.success() : CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_FAILED);
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("锁定拼单订单异常", "CollageOrderBaseServiceImpl/lockCollageOrder", this.collageOrderRequest(collageOrderDto), e); ErrorLog.printErrorLog("锁定拼单订单异常", "CollageOrderBaseServiceImpl/lockCollageOrder", this.collageOrderRequest(collageOrderDto), e);
...@@ -150,8 +156,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -150,8 +156,9 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
@Override @Override
public BaseResponse unlockCollageOrder(CollageOrderDto collageOrderDto) { public BaseResponse unlockCollageOrder(CollageOrderDto collageOrderDto) {
try { try {
String collageBashHashKey = this.genCollageBaseHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
String collageLockKey = this.genCollageLockKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId()); String collageLockKey = this.genCollageLockKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
this.setCollageLock(collageLockKey, CollageLockStatus.RELEASE); this.setCollageLock(collageLockKey, CollageLockStatus.RELEASE, this.getCollageBashHashExpireSeconds(collageBashHashKey));
return !this.getCollageLock(collageLockKey).getValue() ? CartResponseUtil.success() : CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_FAILED); return !this.getCollageLock(collageLockKey).getValue() ? CartResponseUtil.success() : CartResponseUtil.error(CollageOrderConstant.COLLAGE_ORDER_FAILED);
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("解锁拼单订单异常", "CollageOrderBaseServiceImpl/unlockCollageOrder", this.collageOrderRequest(collageOrderDto), e); ErrorLog.printErrorLog("解锁拼单订单异常", "CollageOrderBaseServiceImpl/unlockCollageOrder", this.collageOrderRequest(collageOrderDto), e);
...@@ -256,7 +263,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -256,7 +263,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
} }
/** /**
* 获取拼单订单剩余过期时间 * 获取拼单订单剩余过期时间(秒)
* @param collageBaseHashKey * @param collageBaseHashKey
* @return * @return
*/ */
...@@ -299,9 +306,10 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -299,9 +306,10 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
* 拼单订单锁设定 * 拼单订单锁设定
* @param collageLockKey * @param collageLockKey
* @param status * @param status
* @param expireTime seconds
*/ */
private void setCollageLock(String collageLockKey, CollageLockStatus status) throws Exception { private void setCollageLock(String collageLockKey, CollageLockStatus status, Long expireTime) throws Exception {
redisTemplate.boundValueOps(collageLockKey).set(status.getValue(), 1L, TimeUnit.HOURS); redisTemplate.boundValueOps(collageLockKey).set(status.getValue(), expireTime, TimeUnit.SECONDS);
} }
/** /**
...@@ -342,6 +350,45 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -342,6 +350,45 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
} }
/** /**
* 查询当前用户是否存在进行中的拼单
* @param collageOrderDto
* @return
*/
private boolean isInCollageStoreMemberList(CollageOrderDto collageOrderDto) {
try {
String collageStoreMemberKey = this.genCollageMemerHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId());
Map<String, Long> customerMap = this.getCollageStoreMember(collageStoreMemberKey);
// 当前登录用户ID存在且未超过过期时间
if (customerMap.keySet().contains(collageOrderDto.getCurrentUserId()) && DateTimeUtils.currentTimeMillis() < customerMap.get(collageOrderDto.getCurrentUserId())) {
return true;
}
} catch (Exception e) {
ErrorLog.printErrorLog("查询当前用户是否存在进行中的拼单异常", "CollageOrderBaseServiceImpl/isInCollageOrderCustomerList", this.collageOrderRequest(collageOrderDto), e);
}
return false;
}
/**
* 拼单创建加购人列表初始化
* @param collageMemberHashKey
* @param currentUserId
*/
private void initCollageMember(String collageMemberHashKey, String currentUserId) {
redisTemplate.boundHashOps(collageMemberHashKey).put(currentUserId, Collections.EMPTY_LIST);
redisTemplate.boundHashOps(collageMemberHashKey).expire(1, TimeUnit.HOURS);
}
/**
* 拼单创建加购人状态初始化
* @param collageMemberStateHashKey
* @param currentUserId
*/
private void initCollageMemberState(String collageMemberStateHashKey, String currentUserId) {
redisTemplate.boundHashOps(collageMemberStateHashKey).put(currentUserId, false);
redisTemplate.boundHashOps(collageMemberStateHashKey).expire(1, TimeUnit.HOURS);
}
/**
* 构建拼单购物车缓存key * 构建拼单购物车缓存key
* @param partnerId * @param partnerId
* @param storeId * @param storeId
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment