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 { ...@@ -66,6 +66,20 @@ public interface CollageOrderBaseService {
BaseResponse<List<CollageMemberState>> getCollageMemberState(CollageOrderDto collageOrderDto); BaseResponse<List<CollageMemberState>> getCollageMemberState(CollageOrderDto collageOrderDto);
/** /**
* 修改用户加购状态 加购完毕
* @param collageOrderDto
* @return
*/
BaseResponse readyCollageMemberState(CollageOrderDto collageOrderDto);
/**
* 修改用户加购状态 继续选购
* @param collageOrderDto
* @return
*/
BaseResponse shoppingCollageMemberState(CollageOrderDto collageOrderDto);
/**
* 设置用户的点餐位信息 * 设置用户的点餐位信息
* @param collageOrderDto * @param collageOrderDto
* @return * @return
......
...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.sdk.api.assortment.shoppingcart.adapter.CollageOrderSdkAdapter; 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.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.CollageOrderConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState; import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState;
...@@ -195,6 +196,34 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -195,6 +196,34 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
} }
@Override @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){ public BaseResponse setCollageMember(CollageOrderDto collageOrderDto){
String key = genCollageMemberHashKey(collageOrderDto.getPartnerId(),collageOrderDto.getStoreId(),collageOrderDto.getCreateCollageUserId()); String key = genCollageMemberHashKey(collageOrderDto.getPartnerId(),collageOrderDto.getStoreId(),collageOrderDto.getCreateCollageUserId());
redisTemplate.boundHashOps(key).put(collageOrderDto.getCurrentUserId(),new ArrayList<>()); redisTemplate.boundHashOps(key).put(collageOrderDto.getCurrentUserId(),new ArrayList<>());
...@@ -404,6 +433,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -404,6 +433,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
/** /**
* 拼单创建加购人状态初始化 * 拼单创建加购人状态初始化
* 拼单发起人始终为加购完毕状态
* @param collageMemberStateHashKey * @param collageMemberStateHashKey
* @param collageOrderDto * @param collageOrderDto
*/ */
...@@ -412,13 +442,27 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -412,13 +442,27 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
collageMemberState.setUserId(collageOrderDto.getCurrentUserId()); collageMemberState.setUserId(collageOrderDto.getCurrentUserId());
collageMemberState.setNickName(collageOrderDto.getNickName()); collageMemberState.setNickName(collageOrderDto.getNickName());
collageMemberState.setPhotoUrl(collageOrderDto.getPhotoUrl()); collageMemberState.setPhotoUrl(collageOrderDto.getPhotoUrl());
collageMemberState.setState(false); collageMemberState.setState(CollageMemberStateType.READY.getValue());
redisTemplate.boundHashOps(collageMemberStateHashKey).put(collageOrderDto.getCurrentUserId(), collageMemberState); redisTemplate.boundHashOps(collageMemberStateHashKey).put(collageOrderDto.getCurrentUserId(), collageMemberState);
redisTemplate.boundHashOps(collageMemberStateHashKey).expire(1, TimeUnit.HOURS); 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 * @param collageMemberStateHashKey
* @return * @return
*/ */
...@@ -427,6 +471,25 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -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 * 构建拼单购物车缓存key
* @param partnerId * @param partnerId
* @param storeId * @param storeId
......
...@@ -90,6 +90,22 @@ public class CollageOrderController { ...@@ -90,6 +90,22 @@ public class CollageOrderController {
return collageOrderService.unlockCollageOrder(request); 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 = "加入拼单订单") @ApiOperation(value = "加入拼单订单", notes = "加入拼单订单")
@ApiImplicitParam(value = "请求", required = true, dataType = "CollageOrderRequestVo", name = "CollageOrderRequestVo") @ApiImplicitParam(value = "请求", required = true, dataType = "CollageOrderRequestVo", name = "CollageOrderRequestVo")
@ApiAnnotation(logMessage = "addOrder") @ApiAnnotation(logMessage = "addOrder")
......
...@@ -31,6 +31,11 @@ public class CollageOrderResponseVo { ...@@ -31,6 +31,11 @@ public class CollageOrderResponseVo {
private Boolean locked; private Boolean locked;
/** /**
* 正在选购的拼单成员人数
*/
private Integer shoppingMemberNum;
/**
* 拼单参与人信息 * 拼单参与人信息
*/ */
private List<CollageMemberState> collageMemberStateList; private List<CollageMemberState> collageMemberStateList;
......
...@@ -59,6 +59,20 @@ public interface CollageOrderService { ...@@ -59,6 +59,20 @@ public interface CollageOrderService {
BaseResponse unlockCollageOrder(CollageOrderRequestVo request); BaseResponse unlockCollageOrder(CollageOrderRequestVo request);
/** /**
* 拼单参与人加购完毕
* @param request
* @return
*/
BaseResponse readyCollageMemberState(CollageOrderRequestVo request);
/**
* 拼单参与人继续加购
* @param request
* @return
*/
BaseResponse shoppingCollageMemberState(CollageOrderRequestVo request);
/**
* 加入拼单订单 * 加入拼单订单
* @param request * @param request
* @return * @return
......
...@@ -12,6 +12,8 @@ import cn.freemud.service.CollageOrderService; ...@@ -12,6 +12,8 @@ import cn.freemud.service.CollageOrderService;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; 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.CollageOrder;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrderDto; import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrderDto;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.CollageOrderBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.CollageOrderBaseServiceImpl;
...@@ -22,6 +24,7 @@ import org.springframework.util.ObjectUtils; ...@@ -22,6 +24,7 @@ import org.springframework.util.ObjectUtils;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -70,8 +73,10 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -70,8 +73,10 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 订单锁定状态 // 订单锁定状态
collageOrderResponseVo.setLocked(this.collageOrderBaseService.isLockedCollageOrder(collageOrderDto).getResult()); collageOrderResponseVo.setLocked(this.collageOrderBaseService.isLockedCollageOrder(collageOrderDto).getResult());
// 订单参与人列表信息 参与人昵称头像等信息放入加购人状态锁redis对象中 userId : MemberState // 订单参与人列表信息 参与人昵称头像等信息放入加购人状态锁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); return ResponseUtil.success(collageOrderResponseVo);
} }
...@@ -159,16 +164,40 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -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 * 根据sessionId查询登录用户的userId
* @param sessionId * @param sessionId
* @return * @return
*/ */
private String getUserIdBySessionId(String sessionId) { private String getUserIdBySessionId(String sessionId) {
return this.shoppingCartCollageService.getCustomerInfoVo(sessionId).getMemberId(); return this.getUserInfo(sessionId).getMemberId();
} }
/** /**
* 根据sessionId查询登录用户的userId * 根据sessionId查询登录用户信息
* @param sessionId * @param sessionId
* @return * @return
*/ */
...@@ -235,7 +264,7 @@ public class CollageOrderServiceImpl implements CollageOrderService { ...@@ -235,7 +264,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 设置参加拼团人员信息 // 设置参加拼团人员信息
String collageMemberStateHashKey = collageOrderBaseService.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId()); String collageMemberStateHashKey = collageOrderBaseService.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
collageOrderBaseService.initCollageMemberState(collageMemberStateHashKey, collageOrderDto); collageOrderBaseService.addCollageMemberState(collageMemberStateHashKey, collageOrderDto);
// 设置用户在该店铺的拼单结束时间 // 设置用户在该店铺的拼单结束时间
collageOrderBaseService.setCollageMemberAddTime(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