Commit d1d12ff8 by 缪晖

【ID1010972】多人拼单 订单锁定解锁代码优化

parent 9be1aa42
......@@ -6,7 +6,7 @@ public enum CollageLockStatus {
LOCKED(true, "已锁定"),
RELEASE(false, "未锁定");
private boolean value;
private Boolean value;
private String desc;
......
......@@ -125,7 +125,7 @@ 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("操作失败");
return !this.getCollageLock(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId()).getValue() ? CartResponseUtil.success() : CartResponseUtil.error("操作失败");
}
/**
......
......@@ -15,7 +15,6 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CollageOrderRequestVo;
import cn.freemud.service.impl.CollageOrderServiceImpl;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.Api;
......@@ -30,6 +29,11 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 拼单订单没有持久化存储对象,仅在Redis中暂存标志位信息
* 购物车操作过程中需要检测拼单订单状态是否合法(锁定、订单超时等)
* 暂时将Redis操作的拼单订单接口放在购物车聚合及其SDK中
*/
@RestController
@RequestMapping(value = "/shoppingCart/collage", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "拼单订单 controller", tags = {"拼单订单管理接口"})
......@@ -67,7 +71,7 @@ public class CollageOrderController {
@ApiAnnotation(logMessage = "lockOrder")
@PostMapping(value = "/lockOrder")
public BaseResponse lockCollageOrder(@Validated @LogParams @RequestBody CollageOrderRequestVo request) {
return SDKCommonBaseContextWare.getBean(CollageOrderServiceImpl.class).lockCollageOrder(request);
return collageOrderServicel.lockCollageOrder(request);
}
@ApiOperation(value = "解锁拼单订单", notes = "根据商户ID、门店ID、当前登录用户sessionId解锁拼单订单")
......
......@@ -5,6 +5,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CollageOrderRequestVo;
import cn.freemud.entities.vo.CollageOrderResponseVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CollageOrderService;
import cn.freemud.utils.ResponseUtil;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageOrder;
......@@ -15,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Optional;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -53,17 +56,15 @@ public class CollageOrderServiceImpl implements CollageOrderService {
BaseResponse<CollageOrder> queryCollageOrderResponse = this.collageOrderBaseService.queryCollageOrder(collageOrderDto);
CollageOrder collageOrder = queryCollageOrderResponse.getResult();
if (ResponseResult.SUCCESS.getCode().equals(queryCollageOrderResponse.getCode()) && !ObjectUtils.isEmpty(collageOrder)) {
CollageOrderResponseVo collageOrderResponseVo = new CollageOrderResponseVo();
// 订单基础信息
collageOrderResponseVo.setOrder(collageOrder);
// SDK查询订单返回非成功code或返回结果订单信息为空时,返回前端异常信息
Optional.ofNullable(queryCollageOrderResponse).filter(resp -> (ResponseResult.SUCCESS.getCode().equals(resp.getCode()) && !ObjectUtils.isEmpty(collageOrder))).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_NOT_EXIST));
// TODO 订单参与人列表信息
CollageOrderResponseVo collageOrderResponseVo = new CollageOrderResponseVo();
// 订单基础信息
collageOrderResponseVo.setOrder(collageOrder);
// TODO 订单参与人列表信息
return ResponseUtil.success(collageOrderResponseVo);
} else {
return ResponseUtil.error(ResponseResult.COLLAGE_NOT_EXIST);
}
return ResponseUtil.success(collageOrderResponseVo);
}
/**
......@@ -80,14 +81,12 @@ public class CollageOrderServiceImpl implements CollageOrderService {
// 创建拼单订单基础缓存信息
BaseResponse<CollageOrder> createCollageOrderResponse = this.collageOrderBaseService.createCollageOrder(collageOrderDto);
if (ResponseResult.SUCCESS.getCode().equals(createCollageOrderResponse.getCode())) {
CollageOrderResponseVo collageOrderResponseVo = new CollageOrderResponseVo();
collageOrderResponseVo.setOrder(createCollageOrderResponse.getResult());
// SDK创建订单返回非成功code时,返回前端异常信息
Optional.ofNullable(createCollageOrderResponse).filter(resp -> ResponseResult.SUCCESS.getCode().equals(resp.getCode())).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_ALREADY_EXIST));
return ResponseUtil.success(collageOrderResponseVo);
} else {
return ResponseUtil.error(ResponseResult.COLLAGE_ALREADY_EXIST);
}
CollageOrderResponseVo collageOrderResponseVo = new CollageOrderResponseVo();
collageOrderResponseVo.setOrder(createCollageOrderResponse.getResult());
return ResponseUtil.success(collageOrderResponseVo);
}
/**
......@@ -100,6 +99,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
// 根据sessionId查询对应登录用户信息
collageOrderDto.setCreateCollageUserId(this.getUserIdBySessionId(request.getSessionId()));
this.checkCollageOrderOwner(collageOrderDto);
return this.collageOrderBaseService.cancelCollageOrder(collageOrderDto);
}
......@@ -113,6 +113,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
// 根据sessionId查询对应登录用户信息
collageOrderDto.setCreateCollageUserId(this.getUserIdBySessionId(request.getSessionId()));
this.checkCollageOrderOwner(collageOrderDto);
return this.collageOrderBaseService.lockCollageOrder(collageOrderDto);
}
......@@ -126,6 +127,7 @@ public class CollageOrderServiceImpl implements CollageOrderService {
CollageOrderDto collageOrderDto = this.collageOrderAdapter.convert2CollageOrderDto(request);
// 根据sessionId查询对应登录用户信息
collageOrderDto.setCreateCollageUserId(this.getUserIdBySessionId(request.getSessionId()));
this.checkCollageOrderOwner(collageOrderDto);
return this.collageOrderBaseService.unlockCollageOrder(collageOrderDto);
}
......@@ -137,4 +139,26 @@ public class CollageOrderServiceImpl implements CollageOrderService {
private String getUserIdBySessionId(String sessionId) {
return this.shoppingCartCollageService.getCustomerInfoVo(sessionId).getMemberId();
}
/**
* 查询当前拼单订单基础信息是否存在
* @param collageOrderDto
* @return
*/
private Boolean isCollageOrderExist(CollageOrderDto collageOrderDto) {
// 查询当前拼单订单基础信息是否存在
return ObjectUtils.isEmpty(this.collageOrderBaseService.queryCollageOrder(collageOrderDto).getResult()) ? false : true;
}
/**
* 拼单订单检查
* @param collageOrderDto
*/
private void checkCollageOrderOwner(CollageOrderDto collageOrderDto) {
CollageOrder collageOrder = this.collageOrderBaseService.queryCollageOrder(collageOrderDto).getResult();
// 拼单订单信息不存在时,返回错误提示
Optional.ofNullable(collageOrder).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_NOT_EXIST));
// 若当前操作人并非拼单邀请人时,返回错误提示 当前用户不是拼单发起人,无法操作
Optional.ofNullable(collageOrder).map(CollageOrder::getCreateCollageUserId).filter(userId -> userId.equals(collageOrderDto.getCreateCollageUserId())).orElseThrow(() -> new ServiceException(ResponseResult.COLLAGE_NOT_OWNER));
}
}
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