Commit 769d224c by 缪晖

拼单参与人架构状态变更接口

parent 97b0cc6b
package com.freemud.sdk.api.assortment.shoppingcart.constant;
public enum CollageMemberStateType {
READY(true, "加购完毕"),
SHOPPING(false, "正在选购");
private Boolean value;
private String desc;
CollageMemberStateType(Boolean value, String desc) {
this.value = value;
this.desc = desc;
}
public static CollageMemberStateType getByValue(Object value) {
try {
return Boolean.parseBoolean(String.valueOf(value)) ? CollageMemberStateType.READY : CollageMemberStateType.SHOPPING;
} catch (ClassCastException e) {
return CollageMemberStateType.SHOPPING;
}
}
public Boolean getValue() {
return value;
}
public void setValue(Boolean value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -66,6 +66,20 @@ public interface CollageOrderBaseService {
BaseResponse<List<CollageMemberState>> getCollageMemberState(CollageOrderDto collageOrderDto);
/**
* 修改用户加购状态 加购完毕
* @param collageOrderDto
* @return
*/
BaseResponse readyCollageMemberState(CollageOrderDto collageOrderDto);
/**
* 修改用户加购状态 继续选购
* @param collageOrderDto
* @return
*/
BaseResponse shoppingCollageMemberState(CollageOrderDto collageOrderDto);
/**
* 设置用户的点餐位信息
* @param collageOrderDto
* @return
......
......@@ -4,6 +4,7 @@ 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.CollageMemberStateType;
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.domain.CollageMemberState;
......@@ -195,6 +196,34 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
}
@Override
public BaseResponse readyCollageMemberState(CollageOrderDto collageOrderDto) {
try {
String collageMemberStateKey = this.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
CollageMemberState collageMemberState = this.getCollageMemberState(collageMemberStateKey, collageOrderDto.getCurrentUserId());
collageMemberState.setState(CollageMemberStateType.READY.getValue());
this.setCollageMemberState(collageMemberStateKey, collageMemberState);
return CartResponseUtil.success();
} catch (Exception e) {
ErrorLog.printErrorLog("修改拼单用户加购状态为加购完毕异常", "CollageOrderBaseServiceImpl/readyCollageMemberState", this.collageOrderRequest(collageOrderDto), e);
return CartResponseUtil.error("修改拼单用户加购状态为加购完毕异常");
}
}
@Override
public BaseResponse shoppingCollageMemberState(CollageOrderDto collageOrderDto) {
try {
String collageMemberStateKey = this.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
CollageMemberState collageMemberState = this.getCollageMemberState(collageMemberStateKey, collageOrderDto.getCurrentUserId());
collageMemberState.setState(CollageMemberStateType.SHOPPING.getValue());
this.setCollageMemberState(collageMemberStateKey, collageMemberState);
return CartResponseUtil.success();
} catch (Exception e) {
ErrorLog.printErrorLog("修改拼单用户加购状态为继续选购异常", "CollageOrderBaseServiceImpl/shoppingCollageMemberState", this.collageOrderRequest(collageOrderDto), e);
return CartResponseUtil.success("修改拼单用户加购状态为继续选购异常");
}
}
@Override
public BaseResponse setCollageMember(CollageOrderDto collageOrderDto){
String key = genCollageMemberHashKey(collageOrderDto.getPartnerId(),collageOrderDto.getStoreId(),collageOrderDto.getCreateCollageUserId());
redisTemplate.boundHashOps(key).put(collageOrderDto.getCurrentUserId(),new ArrayList<>());
......@@ -404,6 +433,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/**
* 拼单创建加购人状态初始化
* 拼单发起人始终为加购完毕状态
* @param collageMemberStateHashKey
* @param collageOrderDto
*/
......@@ -412,13 +442,27 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
collageMemberState.setUserId(collageOrderDto.getCurrentUserId());
collageMemberState.setNickName(collageOrderDto.getNickName());
collageMemberState.setPhotoUrl(collageOrderDto.getPhotoUrl());
collageMemberState.setState(false);
collageMemberState.setState(CollageMemberStateType.READY.getValue());
redisTemplate.boundHashOps(collageMemberStateHashKey).put(collageOrderDto.getCurrentUserId(), collageMemberState);
redisTemplate.boundHashOps(collageMemberStateHashKey).expire(1, TimeUnit.HOURS);
}
/**
* 获取加购人状态信息
* 拼单参与人加购状态
* @param collageMemberStateHashKey
* @param collageOrderDto
*/
public void addCollageMemberState(String collageMemberStateHashKey, CollageOrderDto collageOrderDto) {
CollageMemberState collageMemberState = new CollageMemberState();
collageMemberState.setUserId(collageOrderDto.getCurrentUserId());
collageMemberState.setNickName(collageOrderDto.getNickName());
collageMemberState.setPhotoUrl(collageOrderDto.getPhotoUrl());
collageMemberState.setState(CollageMemberStateType.SHOPPING.getValue());
redisTemplate.boundHashOps(collageMemberStateHashKey).put(collageOrderDto.getCurrentUserId(), collageMemberState);
}
/**
* 获取拼单下全部加购人状态信息
* @param collageMemberStateHashKey
* @return
*/
......@@ -427,6 +471,25 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
}
/**
* 获取加购人状态信息
* @param collageMemberStateHashKey
* @param userId
* @return
*/
public CollageMemberState getCollageMemberState(String collageMemberStateHashKey, String userId) {
return (CollageMemberState) redisTemplate.boundHashOps(collageMemberStateHashKey).get(userId);
}
/**
* 设置或更新加购人状态信息
* @param collageMemberStateHashKey
* @param collageMemberState
*/
public void setCollageMemberState(String collageMemberStateHashKey, CollageMemberState collageMemberState) {
redisTemplate.boundHashOps(collageMemberStateHashKey).put(collageMemberState.getUserId(), collageMemberState);
}
/**
* 构建拼单购物车缓存key
* @param partnerId
* @param storeId
......
......@@ -90,6 +90,22 @@ public class CollageOrderController {
return collageOrderService.unlockCollageOrder(request);
}
@ApiOperation(value = "拼单参与人加购完毕", notes = "根据商户ID、门店ID、拼单发起人userId、当前登录用户sessionId修改加购状态为加购完毕")
@ApiImplicitParam(value = "请求", required = true, dataType = "CollageOrderRequestVo", name = "CollageOrderRequestVo")
@ApiAnnotation(logMessage = "readyMemberState")
@PostMapping(value = "/readyMemberState")
public BaseResponse readyMemberState(@Validated @LogParams @RequestBody CollageOrderRequestVo request) {
return collageOrderService.readyCollageMemberState(request);
}
@ApiOperation(value = "拼单参与人继续加购", notes = "根据商户ID、门店ID、拼单发起人userId、当前登录用户sessionId修改加购状态为继续加购")
@ApiImplicitParam(value = "请求", required = true, dataType = "CollageOrderRequestVo", name = "CollageOrderRequestVo")
@ApiAnnotation(logMessage = "shoppingMemberState")
@PostMapping(value = "/shoppingMemberState")
public BaseResponse shoppingMemberState(@Validated @LogParams @RequestBody CollageOrderRequestVo request) {
return collageOrderService.shoppingCollageMemberState(request);
}
@ApiOperation(value = "加入拼单订单", notes = "加入拼单订单")
@ApiImplicitParam(value = "请求", required = true, dataType = "CollageOrderRequestVo", name = "CollageOrderRequestVo")
@ApiAnnotation(logMessage = "addOrder")
......
......@@ -31,6 +31,11 @@ public class CollageOrderResponseVo {
private Boolean locked;
/**
* 正在选购的拼单成员人数
*/
private Integer shoppingMemberNum;
/**
* 拼单参与人信息
*/
private List<CollageMemberState> collageMemberStateList;
......
......@@ -59,6 +59,20 @@ public interface CollageOrderService {
BaseResponse unlockCollageOrder(CollageOrderRequestVo request);
/**
* 拼单参与人加购完毕
* @param request
* @return
*/
BaseResponse readyCollageMemberState(CollageOrderRequestVo request);
/**
* 拼单参与人继续加购
* @param request
* @return
*/
BaseResponse shoppingCollageMemberState(CollageOrderRequestVo request);
/**
* 加入拼单订单
* @param request
* @return
......
......@@ -12,6 +12,8 @@ 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.constant.CollageMemberStateType;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState;
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;
......@@ -22,6 +24,7 @@ import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -70,8 +73,10 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 订单锁定状态
collageOrderResponseVo.setLocked(this.collageOrderBaseService.isLockedCollageOrder(collageOrderDto).getResult());
// 订单参与人列表信息 参与人昵称头像等信息放入加购人状态锁redis对象中 userId : MemberState
collageOrderResponseVo.setCollageMemberStateList(this.collageOrderBaseService.getCollageMemberState(collageOrderDto).getResult());
List<CollageMemberState> collageMemberStateList = this.collageOrderBaseService.getCollageMemberState(collageOrderDto).getResult();
collageOrderResponseVo.setCollageMemberStateList(collageMemberStateList);
// 未加购完毕人数统计
collageOrderResponseVo.setShoppingMemberNum(collageMemberStateList.stream().filter(member -> member.getState() == CollageMemberStateType.SHOPPING.getValue()).collect(Collectors.toList()).size());
return ResponseUtil.success(collageOrderResponseVo);
}
......@@ -159,16 +164,40 @@ public class CollageOrderServiceImpl implements CollageOrderService {
}
/**
* 拼单参与人加购完毕
* @param request
* @return
*/
@Override
public BaseResponse readyCollageMemberState(CollageOrderRequestVo request) {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
collageOrderDto.setCurrentUserId(this.getUserIdBySessionId(request.getSessionId()));
return this.collageOrderBaseService.readyCollageMemberState(collageOrderDto);
}
/**
* 拼单参与人继续加购
* @param request
* @return
*/
@Override
public BaseResponse shoppingCollageMemberState(CollageOrderRequestVo request) {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
collageOrderDto.setCurrentUserId(this.getUserIdBySessionId(request.getSessionId()));
return this.collageOrderBaseService.shoppingCollageMemberState(collageOrderDto);
}
/**
* 根据sessionId查询登录用户的userId
* @param sessionId
* @return
*/
private String getUserIdBySessionId(String sessionId) {
return this.shoppingCartCollageService.getCustomerInfoVo(sessionId).getMemberId();
return this.getUserInfo(sessionId).getMemberId();
}
/**
* 根据sessionId查询登录用户的userId
* 根据sessionId查询登录用户信息
* @param sessionId
* @return
*/
......@@ -235,7 +264,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 设置参加拼团人员信息
String collageMemberStateHashKey = collageOrderBaseService.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
collageOrderBaseService.initCollageMemberState(collageMemberStateHashKey, collageOrderDto);
collageOrderBaseService.addCollageMemberState(collageMemberStateHashKey, collageOrderDto);
// 设置用户在该店铺的拼单结束时间
collageOrderBaseService.setCollageMemberAddTime(collageOrderDto);
......
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