Commit cd22e516 by 刘鹏飞

Merge remote-tracking branch 'remotes/origin/feature/2.0.1-collageOrder-刘鹏飞' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	order-application-service/pom.xml
parents d4f0eb84 c691b31e
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId> <artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.6.RELEASE</version> <version>2.0.3-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
......
...@@ -7,4 +7,5 @@ ...@@ -7,4 +7,5 @@
| 1.1.4-SNAPSHOT| 券码接口修改为channel_codes | 梁崇福 | 2020-06-08 | | 1.1.4-SNAPSHOT| 券码接口修改为channel_codes | 梁崇福 | 2020-06-08 |
| 1.1.5-SNAPSHOT| 增加统计分类编号:classificationId,classificationName | | 2020-06-12 | | 1.1.5-SNAPSHOT| 增加统计分类编号:classificationId,classificationName | | 2020-06-12 |
| 2.0.0-SNAPSHOT| 商品加料 | 李小二 | 2020-08-17 | | 2.0.0-SNAPSHOT| 商品加料 | 李小二 | 2020-08-17 |
| 2.0.1-SNAPSHOT| 拼单 | miaohhui | 2020-08-17 | | 2.0.1-SNAPSHOT| 拼单 | miaohhui | 2020-08-17 |
\ No newline at end of file | 2.0.3-SNAPSHOT| 拼单 | 刘鹏飞 | 2020-11-20 |
\ No newline at end of file
...@@ -127,4 +127,11 @@ public interface CollageOrderBaseService { ...@@ -127,4 +127,11 @@ public interface CollageOrderBaseService {
* 清除用户在店铺下的拼单时间 * 清除用户在店铺下的拼单时间
*/ */
BaseResponse cleanCollageMemberAddTime(CollageOrderDto collageOrderDto); BaseResponse cleanCollageMemberAddTime(CollageOrderDto collageOrderDto);
/**
* 修改用户加购状态 加购完毕
* @param collageOrderDto
* @return
*/
BaseResponse getOneCollageMemberState(CollageOrderDto collageOrderDto);
} }
...@@ -219,7 +219,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -219,7 +219,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
return CartResponseUtil.success(); return CartResponseUtil.success();
} catch (Exception e) { } catch (Exception e) {
ErrorLog.printErrorLog("修改拼单用户加购状态为继续选购异常", "CollageOrderBaseServiceImpl/shoppingCollageMemberState", this.collageOrderRequest(collageOrderDto), e); ErrorLog.printErrorLog("修改拼单用户加购状态为继续选购异常", "CollageOrderBaseServiceImpl/shoppingCollageMemberState", this.collageOrderRequest(collageOrderDto), e);
return CartResponseUtil.success("修改拼单用户加购状态为继续选购异常"); return CartResponseUtil.error("修改拼单用户加购状态为继续选购异常");
} }
} }
...@@ -287,6 +287,17 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -287,6 +287,17 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService {
return CartResponseUtil.success(); return CartResponseUtil.success();
} }
@Override
public BaseResponse<CollageMemberState> getOneCollageMemberState(CollageOrderDto collageOrderDto) {
try {
String collageMemberStateKey = this.genCollageMemberStateHashKey(collageOrderDto.getPartnerId(), collageOrderDto.getStoreId(), collageOrderDto.getCreateCollageUserId());
return CartResponseUtil.success(this.getCollageMemberState(collageMemberStateKey,collageOrderDto.getCurrentUserId()));
} catch (Exception e) {
ErrorLog.printErrorLog("获取拼单用户状态异常", "CollageOrderBaseServiceImpl/getOneCollageMemberState", this.collageOrderRequest(collageOrderDto), e);
return CartResponseUtil.error("获取拼单用户状态异常");
}
}
/** /**
* 构建门店下拼单人员hashKey * 构建门店下拼单人员hashKey
* @param partnerId * @param partnerId
...@@ -442,7 +453,7 @@ public class CollageOrderBaseServiceImpl implements CollageOrderBaseService { ...@@ -442,7 +453,7 @@ 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(CollageMemberStateType.READY.getValue()); collageMemberState.setState(CollageMemberStateType.SHOPPING.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);
} }
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId> <artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.6.RELEASE</version> <version>2.0.3-SNAPSHOT</version>
</dependency> </dependency>
<!-- 再来一单查询订单信息 --> <!-- 再来一单查询订单信息 -->
<dependency> <dependency>
......
...@@ -106,4 +106,14 @@ public class ShoppingCartCollageController { ...@@ -106,4 +106,14 @@ public class ShoppingCartCollageController {
public BaseResponse queryCarVer(@Validated @LogParams @RequestBody CollageShoppingCartVerRequestVo request) { public BaseResponse queryCarVer(@Validated @LogParams @RequestBody CollageShoppingCartVerRequestVo request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartCollageServiceImpl.class).queryCarVer(request); return SDKCommonBaseContextWare.getBean(ShoppingCartCollageServiceImpl.class).queryCarVer(request);
} }
/**
* 查询购车信息无配送费
* SVC卡支付check,check购物车金额加配送费小于储值卡金额
*/
@ApiAnnotation(logMessage = "listCartGoodsCheck")
@PostMapping(value = "/listCartGoodsCheck")
public BaseResponse listCartGoodsCheck(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartCollageServiceImpl.class).getGoodsListCheck(request);
}
} }
...@@ -34,4 +34,28 @@ public class ShoppingCartCollageGoodsResponseVo extends ShoppingCartGoodsBaseRes ...@@ -34,4 +34,28 @@ public class ShoppingCartCollageGoodsResponseVo extends ShoppingCartGoodsBaseRes
*/ */
private String photoUrl; private String photoUrl;
/**
* 选好了状态
*/
private Boolean states;
/**
* 包装费
*/
private Long packPrice;
/**
* 商品总数
*/
private Integer productsCount;
/**
* 原总价
*/
private Long originalTotalAmount;
/**
* 现总价
*/
private Long totalAmount;
} }
...@@ -41,6 +41,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -41,6 +41,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
*/ */
private String createCollageUserId; private String createCollageUserId;
/**
* 拼单场景使用
* 0个人购物车1整个购物车
*/
private Integer type;
@NotEmpty(message = "appId不能为空") @NotEmpty(message = "appId不能为空")
private String appId; private String appId;
/** /**
......
...@@ -162,6 +162,7 @@ public enum ResponseResult { ...@@ -162,6 +162,7 @@ public enum ResponseResult {
COLLAGE_CREATE_NOT_OUT_OF("49009", "拼单发起人不能退出拼单,请取消"), COLLAGE_CREATE_NOT_OUT_OF("49009", "拼单发起人不能退出拼单,请取消"),
COLLAGE_MEMBER_NOT_ADD("49010", "用户未参加拼单,请确认"), COLLAGE_MEMBER_NOT_ADD("49010", "用户未参加拼单,请确认"),
COLLAGE_MEMBER_NOT_CREATE("49011", "只有拼单发起者才能移除拼单人员,请确认"), COLLAGE_MEMBER_NOT_CREATE("49011", "只有拼单发起者才能移除拼单人员,请确认"),
COLLAGE_STATES_CHOOSE("49012", "获取用户选购状态失败"),
/** /**
* 微信卡券 * 微信卡券
......
...@@ -24,7 +24,11 @@ import com.alibaba.fastjson.JSON; ...@@ -24,7 +24,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.card.sdk.log.ErrorLog; import com.freemud.card.sdk.log.ErrorLog;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
...@@ -41,7 +45,9 @@ import org.springframework.beans.BeanUtils; ...@@ -41,7 +45,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
...@@ -95,7 +101,8 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -95,7 +101,8 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
@Autowired @Autowired
private CollageOrderBaseServiceImpl collageOrderBaseService; private CollageOrderBaseServiceImpl collageOrderBaseService;
@Autowired
private PaymentNewService paymentNewService;
@Override @Override
...@@ -144,8 +151,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -144,8 +151,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
// 获取商品详细信息 // 获取商品详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId),addShoppingCartGoodsRequestVo.getMenuType(), this.shoppingCartBaseService); List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId),addShoppingCartGoodsRequestVo.getMenuType(), this.shoppingCartBaseService);
// 购物车版本加锁
dolock(partnerId, storeId, crateUserId,addShoppingCartGoodsRequestVo.getCarVer(),true);
List<CartGoods> allCartGoodsList = null; List<CartGoods> allCartGoodsList = null;
String productName = null; String productName = null;
...@@ -179,12 +184,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -179,12 +184,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} catch (Exception e) { } catch (Exception e) {
ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "updateGoodsQty:" + e.getMessage(), e); ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "updateGoodsQty:" + e.getMessage(), e);
return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改"); return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改");
}finally {
// 购物车版本解锁
// 版本锁的粒度控制在获取购物车、刷新购物车、刷新车人员缓存行
// 当这些操作结束后,购物的更新操作,已经结束,其他的流程是针对已经添加到redis中的购物车做查询操作
// 所以只有上述的流程才加锁控制
doUnlock(partnerId, storeId, crateUserId);
} }
// 配送费 // 配送费
...@@ -207,7 +206,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -207,7 +206,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName); this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName);
// 根据人员分类购物车 // 根据人员分类购物车
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId); ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,currentUserId);
return ResponseUtil.success(shoppingCartCollageResponseVo); return ResponseUtil.success(shoppingCartCollageResponseVo);
} }
...@@ -217,7 +216,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -217,7 +216,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
* @param shoppingCartGoodsResponseVo * @param shoppingCartGoodsResponseVo
* @return * @return
*/ */
public ShoppingCartCollageResponseVo splitByUser(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,String createUserId,String partnerId,String storeId){ public ShoppingCartCollageResponseVo splitByUser(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,String createUserId,String partnerId,String storeId,String currentUserId){
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = new ShoppingCartCollageResponseVo(); ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = new ShoppingCartCollageResponseVo();
...@@ -233,16 +232,47 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -233,16 +232,47 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
.build(); .build();
List<CollageMemberState> collageMemberState = collageOrderBaseService.getCollageMemberState(collageOrderDto).getResult(); List<CollageMemberState> collageMemberState = collageOrderBaseService.getCollageMemberState(collageOrderDto).getResult();
if(collageMemberState == null || collageMemberState.isEmpty()){ if(collageMemberState == null || collageMemberState.isEmpty()){
ApiLog.info("splitByUser 参单人员为空,partnerId:{},storeId:{},createUserId:{},currentUserId:{}",partnerId,storeId,createUserId,currentUserId);
return null; return null;
} }
Map<String,List<CartGoods>> userGoods = cartGoods.stream().collect(Collectors.groupingBy(CartGoods::getUserId)); if(StringUtils.isNotEmpty(currentUserId)){
collageMemberState = collageMemberState.stream().filter(cms -> cms.getUserId().equals(currentUserId)).collect(Collectors.toList());
}
Map<String,List<CartGoods>> userGoods = new HashMap<>();
if(cartGoods != null && !cartGoods.isEmpty()){
userGoods = cartGoods.stream().collect(Collectors.groupingBy(CartGoods::getUserId));
}
List<ShoppingCartCollageGoodsResponseVo> userProducts = new ArrayList<>(); List<ShoppingCartCollageGoodsResponseVo> userProducts = new ArrayList<>();
for(CollageMemberState cmbs:collageMemberState){ for(CollageMemberState cmbs:collageMemberState){
ShoppingCartCollageGoodsResponseVo shoppingCartCollageGoodsResponseVo = new ShoppingCartCollageGoodsResponseVo(); ShoppingCartCollageGoodsResponseVo shoppingCartCollageGoodsResponseVo = new ShoppingCartCollageGoodsResponseVo();
shoppingCartCollageGoodsResponseVo.setUserName(cmbs.getNickName()); shoppingCartCollageGoodsResponseVo.setUserName(cmbs.getNickName());
shoppingCartCollageGoodsResponseVo.setPhotoUrl(cmbs.getPhotoUrl()); shoppingCartCollageGoodsResponseVo.setPhotoUrl(cmbs.getPhotoUrl());
shoppingCartCollageGoodsResponseVo.setProducts(userGoods.get(cmbs.getUserId())); // 包装费
Long packPrice = 0L;
// 商品数量
Integer productsCount = 0;
// 商品原价总价
Long totalAmount = 0L;
List<CartGoods> products = userGoods.get(cmbs.getUserId());
if(products != null && !products.isEmpty()){
for(CartGoods cg :products){
packPrice = packPrice + (cg.getPackPrice() == null ? 0 : cg.getPackPrice());
productsCount = productsCount + (cg.getQty() == null ? 0 : cg.getQty());
totalAmount = totalAmount + (cg.getOriginalAmount() == null ? 0 : cg.getOriginalAmount());
}
}
// 只有总的包装费不为0、null时才计算个人包装费
if(shoppingCartGoodsResponseVo.getNewPackAmount() != null && shoppingCartGoodsResponseVo.getNewPackAmount().longValue() != 0){
shoppingCartCollageGoodsResponseVo.setPackPrice(packPrice);
}
shoppingCartCollageGoodsResponseVo.setProductsCount(productsCount);
shoppingCartCollageGoodsResponseVo.setTotalAmount(totalAmount);
shoppingCartCollageGoodsResponseVo.setOriginalTotalAmount(totalAmount);
shoppingCartCollageGoodsResponseVo.setProducts(products);
shoppingCartCollageGoodsResponseVo.setStates(cmbs.getState());
userProducts.add(shoppingCartCollageGoodsResponseVo); userProducts.add(shoppingCartCollageGoodsResponseVo);
} }
...@@ -283,8 +313,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -283,8 +313,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
throw new ServiceException(ResponseResult.COLLAGE_GOOD_NOT_ONESELF); throw new ServiceException(ResponseResult.COLLAGE_GOOD_NOT_ONESELF);
} }
// 购物车版本加锁
dolock(partnerId, storeId, crateUserId,updateShoppingCartGoodsQtyRequestVo.getCarVer(),true);
List<CartGoods> cartGoodsList = null; List<CartGoods> cartGoodsList = null;
try { try {
...@@ -322,12 +350,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -322,12 +350,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} catch (Exception e) { } catch (Exception e) {
ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "shoppingCartCollageServiceImpl updateGoodsQty:" + e.getMessage(), e); ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "shoppingCartCollageServiceImpl updateGoodsQty:" + e.getMessage(), e);
return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改"); return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改");
}finally {
// 购物车版本解锁
// 版本锁的粒度控制在检查购物车、刷新购物车、刷新车人员缓存行
// 当这些操作结束后,购物的更新操作,已经结束,其他的流程是针对已经添加到redis中的购物车做查询操作
// 所以只有上述的流程才加锁控制
doUnlock(partnerId, storeId, crateUserId);
} }
...@@ -351,7 +373,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -351,7 +373,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
shoppingCartGoodsResponseVo.setCarVer(collageCartBaseService.incrementCartVersion(partnerId, storeId, crateUserId)); shoppingCartGoodsResponseVo.setCarVer(collageCartBaseService.incrementCartVersion(partnerId, storeId, crateUserId));
// 根据人员分类购物车 // 根据人员分类购物车
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId); ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,currentUserId);
return ResponseUtil.success(shoppingCartCollageResponseVo); return ResponseUtil.success(shoppingCartCollageResponseVo);
} }
...@@ -458,15 +480,39 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -458,15 +480,39 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Integer cartVersion = collageCartBaseService.getCartVersion(collageCartVerKey); Integer cartVersion = collageCartBaseService.getCartVersion(collageCartVerKey);
shoppingCartGoodsResponseVo.setCarVer(cartVersion); shoppingCartGoodsResponseVo.setCarVer(cartVersion);
// 根据人员分类购物车 ShoppingCartCollageResponseVo shoppingCartCollageResponseVo;
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId); if(shoppingCartInfoRequestVo.getType() != null && shoppingCartInfoRequestVo.getType().intValue() == 1){
// 根据人员分类购物车
shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,null);
}else{
// 根据人员分类购物车
shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,currentUserId);
}
return ResponseUtil.success(shoppingCartCollageResponseVo); return ResponseUtil.success(shoppingCartCollageResponseVo);
} }
@Override @Override
public BaseResponse getGoodsListCheck(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public BaseResponse getGoodsListCheck(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
return null; if (StringUtils.isBlank(shoppingCartInfoRequestVo.getCardCode())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
}
//打包带走外卖
if (StringUtils.isNotBlank(shoppingCartInfoRequestVo.getCardCode()) && shoppingCartInfoRequestVo.getOrderType() == 2
&& StringUtils.isBlank(shoppingCartInfoRequestVo.getReceiveId())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
}
BaseResponse<ShoppingCartCollageResponseVo> goodsList = getGoodsList(shoppingCartInfoRequestVo);
if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) {
return goodsList;
}
String partnerId = shoppingCartInfoRequestVo.getPartnerId();
String storeId = shoppingCartInfoRequestVo.getShopId();
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = goodsList.getResult();
//ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult();
//SVC卡支付
SVCCardPay(shoppingCartInfoRequestVo.getCardCode(), shoppingCartInfoRequestVo.getReceiveId(), partnerId, storeId, shoppingCartCollageResponseVo);
return ResponseUtil.success(shoppingCartCollageResponseVo);
} }
@Override @Override
...@@ -813,11 +859,18 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -813,11 +859,18 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
CollageOrderDto collageOrderDto = CollageOrderDto.builder() CollageOrderDto collageOrderDto = CollageOrderDto.builder()
.sessionId("") .sessionId("")
.createCollageUserId(crateUserId) .createCollageUserId(crateUserId)
.currentUserId(currentUserId)
.partnerId(partnerId) .partnerId(partnerId)
.storeId(storeId) .storeId(storeId)
.build(); .build();
Boolean flag = collageOrderBaseService.isInCollageStoreMemberList(collageOrderDto);
if(flag){ BaseResponse<CollageMemberState> response = collageOrderBaseService.getOneCollageMemberState(collageOrderDto);
if(response == null || response.getResult() == null){
throw new ServiceException(ResponseResult.COLLAGE_STATES_CHOOSE);
}
CollageMemberState collageMemberState = collageOrderBaseService.getOneCollageMemberState(collageOrderDto).getResult();
if(collageMemberState.getState()){
throw new ServiceException(ResponseResult.COLLAGE_ALREADY_CHOOSE); throw new ServiceException(ResponseResult.COLLAGE_ALREADY_CHOOSE);
} }
...@@ -1012,8 +1065,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1012,8 +1065,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
throw new ServiceException(ResponseResult.COLLAGE_ALREADY_CHOOSE); throw new ServiceException(ResponseResult.COLLAGE_ALREADY_CHOOSE);
} }
// 购物车版本加锁
dolock(partnerId, storeId, crateUserId,shoppingCartCollageClearRequestVo.getCarVer(),true);
List<CartGoods> cartGoodsList = new ArrayList<>(); List<CartGoods> cartGoodsList = new ArrayList<>();
try { try {
...@@ -1048,15 +1099,8 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1048,15 +1099,8 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} catch (Exception e) { } catch (Exception e) {
ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "shoppingCartCollageServiceImpl updateGoodsQty:" + e.getMessage(), e); ErrorLog.errorConvertJson(SDKCommonBaseContextWare.getAppName(), LogThreadLocal.getTrackingNo(), getClass(), "shoppingCartCollageServiceImpl updateGoodsQty:" + e.getMessage(), e);
return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改"); return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改");
}finally {
// 购物车版本解锁
// 版本锁的粒度控制在检查购物车、刷新购物车、刷新车人员缓存行
// 当这些操作结束后,购物的更新操作,已经结束,其他的流程是针对已经添加到redis中的购物车做查询操作
// 所以只有上述的流程才加锁控制
doUnlock(partnerId, storeId, crateUserId);
} }
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult
...@@ -1075,7 +1119,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1075,7 +1119,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
// 设置购物车版本号 // 设置购物车版本号
shoppingCartGoodsResponseVo.setCarVer(collageCartBaseService.incrementCartVersion(partnerId, storeId, crateUserId)); shoppingCartGoodsResponseVo.setCarVer(collageCartBaseService.incrementCartVersion(partnerId, storeId, crateUserId));
// 根据人员分类购物车 // 根据人员分类购物车
ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId); ShoppingCartCollageResponseVo shoppingCartCollageResponseVo = splitByUser(shoppingCartGoodsResponseVo,crateUserId,partnerId,storeId,currentUserId);
return ResponseUtil.success(shoppingCartCollageResponseVo); return ResponseUtil.success(shoppingCartCollageResponseVo);
} }
...@@ -1119,4 +1163,43 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1119,4 +1163,43 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
return ResponseUtil.success(cartVersion); return ResponseUtil.success(cartVersion);
} }
/**
* 储值卡支付余额校验
* 校验订单商品金额与外卖配送费
*/
private void SVCCardPay(String cardCode, String receiveId, String partnerId, String storeId,
ShoppingCartCollageResponseVo shoppingCartGoodsResponseVo) {
if (StringUtils.isBlank(cardCode)) {
return;
}
Integer orderAmount = shoppingCartGoodsResponseVo.getTotalAmount().intValue();
String trackingNo = LogThreadLocal.getTrackingNo();
SVCCardAmountRequest request = new SVCCardAmountRequest();
request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo);
if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
//获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount;
}
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
}
BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
} }
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