Commit 18f564a7 by 徐康

Merge remote-tracking branch 'origin/develop' into develop

parents 426b039f 2be37e53
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.12-SNAPSHOT</version> <version>2.0.13-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -80,4 +80,5 @@ ...@@ -80,4 +80,5 @@
| 2.0.8-SNAPSHOT| 加料商品 | 梁崇福 | 2020-07-27 | | 2.0.8-SNAPSHOT| 加料商品 | 梁崇福 | 2020-07-27 |
| 2.0.9-SNAPSHOT| 新增修改取餐码接口| 谌会阳 |2020-08-08 | 2.0.9-SNAPSHOT| 新增修改取餐码接口| 谌会阳 |2020-08-08
| 2.0.11-SNAPSHOT| 麦咖啡| 谌会阳 |2020-08-08 | 2.0.11-SNAPSHOT| 麦咖啡| 谌会阳 |2020-08-08
| 2.0.12-SNAPSHOT| OrderSourceType 调整 | 谌会阳 |2020-08-10 | 2.0.12-SNAPSHOT| OrderSourceType 调整 | 谌会阳 |2020-08-10
\ No newline at end of file | 2.0.13-SNAPSHOT| 加料商品 | 谌会阳 |2020-08-14
\ No newline at end of file
...@@ -2456,9 +2456,12 @@ public class OrderSdkAdapter { ...@@ -2456,9 +2456,12 @@ public class OrderSdkAdapter {
if (CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) { if (CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) {
// 父类商品productId=productId+seq // 父类商品productId=productId+seq
String partnerProductId = productRequest.getProductId() + "_" + index; String partnerProductId = productRequest.getProductId() + "_" + index;
productRequest.getMaterialProduct().stream().forEach( for (CreateOrderProductRequest material: productRequest.getMaterialProduct()){
material -> updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, material, partnerId, partnerProductId) index++;
); material.setOpid(index);
material.setSpecification(material.getProductId());
updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, material, partnerId, partnerProductId);
}
} }
} }
// 如果是套餐商品,需要转换当前商品行子集ComboProduct&GroupProduct(固定商品、可选商品) // 如果是套餐商品,需要转换当前商品行子集ComboProduct&GroupProduct(固定商品、可选商品)
......
...@@ -344,7 +344,10 @@ public class ShoppingCartAdapter { ...@@ -344,7 +344,10 @@ public class ShoppingCartAdapter {
if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) return; if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) return;
//加料信息为空 //加料信息为空
if (CollectionUtils.isEmpty(spuProduct.getAdditionalGroupList())) return; if (CollectionUtils.isEmpty(spuProduct.getAdditionalGroupList())) {
cartGoods.setProductMaterialList(new ArrayList<>());
return;
}
//提取加料信息 //提取加料信息
List<ProductBeanDTO.ProductGroupType.GroupDetailType> groupDetail = spuProduct.getAdditionalGroupList().get(0).getGroupDetail(); List<ProductBeanDTO.ProductGroupType.GroupDetailType> groupDetail = spuProduct.getAdditionalGroupList().get(0).getGroupDetail();
HashMap<String, ProductBeanDTO.ProductGroupType.GroupDetailType> materialHash = new HashMap<>(); HashMap<String, ProductBeanDTO.ProductGroupType.GroupDetailType> materialHash = new HashMap<>();
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.12-SNAPSHOT</version> <version>2.0.13-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -2853,7 +2853,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2853,7 +2853,7 @@ public class OrderServiceImpl implements Orderservice {
//调用配送服务进行催单 //调用配送服务进行催单
OrderRemindRequestDto dto =new OrderRemindRequestDto(); OrderRemindRequestDto dto =new OrderRemindRequestDto();
dto.setOrderKey(reminderVo.getOid()); dto.setOrderKey(reminderVo.getOid());
dto.setStoreId(userLoginInfoDto.getStoreId()); dto.setStoreId(orderBean.getShopId());
dto.setDeliveryChannel("CanDao"); dto.setDeliveryChannel("CanDao");
dto.setDisplayOrderId(orderBean.getDownstreamThirdOrderCode()); dto.setDisplayOrderId(orderBean.getDownstreamThirdOrderCode());
if (orderBean.getAddInfo() != null){ if (orderBean.getAddInfo() != null){
......
...@@ -166,6 +166,7 @@ public enum ResponseResult { ...@@ -166,6 +166,7 @@ public enum ResponseResult {
ORDER_REJECT_REFUND_STATUS_END("45081","订单未接单或者已取消,不能操作"), ORDER_REJECT_REFUND_STATUS_END("45081","订单未接单或者已取消,不能操作"),
REJECT_REFUND_ORDER_FAIL("45082", "拒绝退款失败"), REJECT_REFUND_ORDER_FAIL("45082", "拒绝退款失败"),
ORDER_DELIVERY_CALL_BACK_FAILED("45083", "配送回调失败,为找到对应操作类型"), ORDER_DELIVERY_CALL_BACK_FAILED("45083", "配送回调失败,为找到对应操作类型"),
ORDER_UPDATE_PICKUP_FAILED("45084", "更新取餐码失败"),
/** /**
* 支付 * 支付
*/ */
...@@ -208,6 +209,8 @@ public enum ResponseResult { ...@@ -208,6 +209,8 @@ public enum ResponseResult {
DELIVERY_QUERY_ERROR("50024","查询配送单失败"), DELIVERY_QUERY_ERROR("50024","查询配送单失败"),
DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"), DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"),
DELIVERY_CREATE_ORDER_ERROR("53013", "创建配送单失败"), DELIVERY_CREATE_ORDER_ERROR("53013", "创建配送单失败"),
DELIVERY_ASSEMBLY_ACK_ERROR("53014", "麦咖啡同步取餐码给配送失败"),
DELIVERY_ORDER_STOP_ERROR("53015", "配送单停单失败"),
/** /**
* 配送信息 * 配送信息
......
...@@ -12,6 +12,7 @@ import cn.freemud.management.intercept.OrderServiceException; ...@@ -12,6 +12,7 @@ import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient; import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
...@@ -19,6 +20,7 @@ import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrd ...@@ -19,6 +20,7 @@ import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrd
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType; import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
...@@ -61,6 +63,8 @@ public class DeliveryHandle { ...@@ -61,6 +63,8 @@ public class DeliveryHandle {
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
@Autowired @Autowired
private DeliveryMCCafeClient deliveryMCCafeClient; private DeliveryMCCafeClient deliveryMCCafeClient;
@Autowired
private EmailAlertService emailAlertService;
/** /**
...@@ -140,7 +144,8 @@ public class DeliveryHandle { ...@@ -140,7 +144,8 @@ public class DeliveryHandle {
deliveryOrderHaltedRequest.setStoreId(data.getShopId()); deliveryOrderHaltedRequest.setStoreId(data.getShopId());
DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest); DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) { if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) {
return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR); emailAlertService.sendEmailAlert("配送单停单失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(deliveryOrderHaltedRequest), JSONObject.toJSONString(deliveryResponse)));
return ResponseUtil.error(ResponseResult.DELIVERY_ORDER_STOP_ERROR);
} }
} }
return ResponseUtil.success(); return ResponseUtil.success();
......
...@@ -74,7 +74,10 @@ public class SaasOrderHandle { ...@@ -74,7 +74,10 @@ public class SaasOrderHandle {
relatingCodeReq.setOperator(request.getOperator()); relatingCodeReq.setOperator(request.getOperator());
relatingCodeReq.setPartnerId(request.getPartnerId()); relatingCodeReq.setPartnerId(request.getPartnerId());
relatingCodeReq.setPickUpGoodsNo(request.getPickUpGoodsNo()); relatingCodeReq.setPickUpGoodsNo(request.getPickUpGoodsNo());
orderCenterSdkService.updatePickUpGoodNo(relatingCodeReq, LogThreadLocal.getTrackingNo()); BaseOrderResponse baseOrderResponse = orderCenterSdkService.updatePickUpGoodNo(relatingCodeReq, LogThreadLocal.getTrackingNo());
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED);
}
return ResponseUtil.success(); return ResponseUtil.success();
} }
......
package cn.freemud.management.service.impl; package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderAssemblyackRequest; import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderAssemblyackRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
...@@ -10,6 +11,7 @@ import cn.freemud.management.service.OrderManagerService; ...@@ -10,6 +11,7 @@ import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*; import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient; import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.sdk.api.assortment.message.enums.OrderType; import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -59,7 +61,10 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -59,7 +61,10 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){ if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//更新取餐码 //更新取餐码
saasOrderHandle.updatePickUpGoodNo(request,orderBean); BaseResponse baseResponse = saasOrderHandle.updatePickUpGoodNo(request, orderBean);
if (!ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())){
return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED);
}
SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
DeliveryOrderAssemblyackRequest assemblyAckRequest =new DeliveryOrderAssemblyackRequest(); DeliveryOrderAssemblyackRequest assemblyAckRequest =new DeliveryOrderAssemblyackRequest();
...@@ -68,12 +73,13 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -68,12 +73,13 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
assemblyAckRequest.setAssemblyTimeUTC(dateFormat.format(new Date())); assemblyAckRequest.setAssemblyTimeUTC(dateFormat.format(new Date()));
assemblyAckRequest.setStoreId(orderBean.getShopId()); assemblyAckRequest.setStoreId(orderBean.getShopId());
//入机成功通知配送 //入机成功通知配送
deliveryMCCafeClient.assemblyAck(assemblyAckRequest); DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.assemblyAck(assemblyAckRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) {
return ResponseUtil.error(ResponseResult.DELIVERY_ASSEMBLY_ACK_ERROR);
}
} }
// 异步核销券码 // 异步核销券码
couponHandle.asyncVerificationCoupon(orderBean); couponHandle.asyncVerificationCoupon(orderBean);
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -86,7 +92,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -86,7 +92,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 订单接单 // 订单接单
BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = orderConfirm(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = orderConfirm(request, orderBean);
if (ResponseResult.SUCCESS.equals(orderManagerResponseBaseResponse.getCode())){ if (ResponseResult.SUCCESS.getCode().equals(orderManagerResponseBaseResponse.getCode())){
//通知配送服务停单 //通知配送服务停单
deliveryHandle.haltedDelivery(orderBean); deliveryHandle.haltedDelivery(orderBean);
} }
......
...@@ -181,7 +181,7 @@ public class GetMenuResponseDto { ...@@ -181,7 +181,7 @@ public class GetMenuResponseDto {
private List<SpecificationGroupBean> specificationGroupList; private List<SpecificationGroupBean> specificationGroupList;
//Sku 规格 如果 当前是sku 则有值 //Sku 规格 如果 当前是sku 则有值
private List<SkuProductBean.SkuSpecValue> skuSpecValues; private List<SkuProductBean.SkuSpecValue> skuSpecValues;
private List<ProductGroupType> additionalGroupList;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class SkuProductBean { public static class SkuProductBean {
...@@ -311,6 +311,105 @@ public class GetMenuResponseDto { ...@@ -311,6 +311,105 @@ public class GetMenuResponseDto {
private String type; private String type;
private String url; private String url;
} }
@NoArgsConstructor
@Data
public static class ProductGroupType {
//商品组ID
private String pgid;
//商户ID
private String linkId;
//商品组编号,跟groupId一样确认商品组唯一的字段
private String groupCode;
//扩展字段
private String options;
//商品组名")
private String name;
//商品组规则-是否必选
private Integer must;
//商品组规则-是否允许重复选
private Integer allowRepeat;
//商品组规则-选择的最小数量
private Integer minNumber;
//商品组规则-选择的最大数量
private Integer maxNumber;
//商品组备注
private String remark;
//商品组下子商品总数量
private Integer total;
/**
* 商品组详情
*/
private List<GroupDetailType> groupDetail;
@NoArgsConstructor
@Data
public static class GroupDetailType {
/**
* 商品ID
*/
private String productId;
/**
* 商品名称
*/
private String productName;
/**
* 第三方商品编码
*/
private String customerCode;
/**
* 标准售价
*/
private Integer productPrice;
/**
* 最终售价
*/
protected Integer productFinalPrice;
/**
* 最终售价
*/
protected Integer markUpPrice;
/**
* 商品默认图片
*/
private String picture;
/**
* 是否设置库存
*/
private Integer stockLimit;
/**
* 单位
*/
protected String unit;
/**
* 商品Code
*/
protected String productCode;
}
}
} }
} }
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.dto; package cn.freemud.entities.dto;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
...@@ -40,4 +41,96 @@ public class GetProductInfoDto { ...@@ -40,4 +41,96 @@ public class GetProductInfoDto {
* 门店商品渠道,不传则默认为default,仅对开放了门店商品渠道信息商户使用,请慎用该参数 * 门店商品渠道,不传则默认为default,仅对开放了门店商品渠道信息商户使用,请慎用该参数
*/ */
private String channel; private String channel;
/**
* 加料商品
*/
private List<ProductGroupType> additionalGroupList;
@NoArgsConstructor
@Data
public static class ProductGroupType {
//商品组ID
private String pgid;
//商户ID
private String linkId;
//商品组编号,跟groupId一样确认商品组唯一的字段
private String groupCode;
//扩展字段
private String options;
//商品组名")
private String name;
//商品组规则-是否必选
private Integer must;
//商品组规则-是否允许重复选
private Integer allowRepeat;
//商品组规则-选择的最小数量
private Integer minNumber;
//商品组规则-选择的最大数量
private Integer maxNumber;
//商品组备注
private String remark;
//商品组下子商品总数量
private Integer total;
/**
* 商品组详情
*/
private List<GroupDetailType> groupDetail;
@NoArgsConstructor
@Data
public static class GroupDetailType {
/**
* 商品ID
*/
private String productId;
/**
* 商品名称
*/
private String productName;
/**
* 第三方商品编码
*/
private String customerCode;
/**
* 标准售价
*/
private Integer productPrice;
/**
* 最终售价
*/
protected Integer productFinalPrice;
/**
* 最终售价
*/
protected Integer markUpPrice;
/**
* 是否设置库存
*/
private Integer stockLimit;
/**
* 商品Code
*/
protected String productCode;
}
}
} }
...@@ -45,4 +45,5 @@ public class GetProductsVo { ...@@ -45,4 +45,5 @@ public class GetProductsVo {
* 分类名称 * 分类名称
*/ */
private String categoryName; private String categoryName;
private List<String> materialSpuIds;
} }
\ No newline at end of file
...@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory; ...@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
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.lang.reflect.Array;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -172,6 +173,16 @@ public class ItemServiceImpl implements ItemService { ...@@ -172,6 +173,16 @@ public class ItemServiceImpl implements ItemService {
getProductsVo.setCustomerCode(productBean.getCustomerCode()); getProductsVo.setCustomerCode(productBean.getCustomerCode());
getProductsVo.setCategory(productBean.getCategory()); getProductsVo.setCategory(productBean.getCategory());
getProductsVo.setCategoryName(productBean.getCategoryName()); getProductsVo.setCategoryName(productBean.getCategoryName());
if (CollectionUtils.isNotEmpty(productBean.getAdditionalGroupList())) {
ArrayList<String> spuIds = new ArrayList<>();
List<ProductBean.ProductGroupType> additionalGroupList = productBean.getAdditionalGroupList();
for (ProductBean.ProductGroupType productGroupType : additionalGroupList) {
for (ProductBean.ProductGroupType.GroupDetailType groupDetailType : productGroupType.getGroupDetail()) {
spuIds.add(groupDetailType.getProductId());
}
}
getProductsVo.setMaterialSpuIds(spuIds);
}
resultMap.put(productBean.getPid(), getProductsVo); resultMap.put(productBean.getPid(), getProductsVo);
getProductsVo.setType(1); getProductsVo.setType(1);
// 规格ID 剔除单品 // 规格ID 剔除单品
......
...@@ -151,7 +151,7 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -151,7 +151,7 @@ public class MaterialPromotionService implements IPromotionService {
mApportion.put(pk, materialApportion); mApportion.put(pk, materialApportion);
continue; continue;
} }
MaterialApportion apportion = mApportion.get(material.getGoodsId()); MaterialApportion apportion = mApportion.get(pk);
apportion.setSalePrice(apportion.getSalePrice() + material.getNowPrice()); apportion.setSalePrice(apportion.getSalePrice() + material.getNowPrice());
apportion.setAmount(apportion.getAmount() + material.getNowPrice() * material.getGoodsQuantity()); apportion.setAmount(apportion.getAmount() + material.getNowPrice() * material.getGoodsQuantity());
apportion.setApportionAmount(apportion.getApportionAmount() + material.getApportionAmount() * material.getGoodsQuantity()); apportion.setApportionAmount(apportion.getApportionAmount() + material.getApportionAmount() * material.getGoodsQuantity());
......
...@@ -160,7 +160,7 @@ public class SetMealServiceImpl implements IPromotionService { ...@@ -160,7 +160,7 @@ public class SetMealServiceImpl implements IPromotionService {
return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : ""; return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : "";
} else { } else {
cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty()); cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty());
return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getActualGoodsNumber() + "份优惠 超出按照原价计算哦"; return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getDiscounts().get(0).getActualGoodsNumber() + "份优惠 超出按照原价计算哦";
} }
} }
} }
...@@ -257,7 +257,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -257,7 +257,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//查询多个商品库存信息 //查询多个商品库存信息
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty); queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
//this.checkMaterial(productBeanListSpuClass, cartGoods);
//ShoppingCartConvertAdapter.setClassification(cartGoods, productBeanListSpuClass); //ShoppingCartConvertAdapter.setClassification(cartGoods, productBeanListSpuClass);
String productName = null; String productName = null;
// 当添加的商品不是商品券时 // 当添加的商品不是商品券时
...@@ -404,13 +404,30 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -404,13 +404,30 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//查询商品信息 //查询商品信息
List<String> pids = new ArrayList<>(); List<String> pids = new ArrayList<>();
pids.add(cartGoods.getGoodsId()); pids.add(cartGoods.getGoodsId());
Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId,BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode()); Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId, BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode());
//if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) return;
//if (CollectionUtils.isEmpty(products.getAdditionalGroupList())) {
// throw new ServiceException(ResponseResult.SHOPPING_CART_VERSION_ERROR);
//}
GetProductsVo getProductsVo = products.get(cartGoods.getGoodsId()); GetProductsVo getProductsVo = products.get(cartGoods.getGoodsId());
// 商品没有库存限制 // 商品没有库存限制
if ((getProductsVo == null) || (getProductsVo.getStockLimit() != 1)) { if (getProductsVo == null) {
return; return;
} }
//Todo 增加小料商品是否变化
/*
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
if (CollectionUtils.isEmpty(getProductsVo.getMaterialSpuIds())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_VERSION_ERROR);
}
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
if (!getProductsVo.getMaterialSpuIds().contains(materialGoods.getSpuId())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_VERSION_ERROR);
}
}
}
*/
if (getProductsVo.getStockLimit() != 1) return;
ShoppingCartConvertAdapter.setClassification(cartGoods, getProductsVo); ShoppingCartConvertAdapter.setClassification(cartGoods, getProductsVo);
GetProductStockRequestDto requestDto = new GetProductStockRequestDto(); GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel(BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode()); requestDto.setChannel(BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode());
...@@ -1629,4 +1646,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1629,4 +1646,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo.setToastMsg(""); shoppingCartGoodsResponseVo.setToastMsg("");
} }
} }
public void checkMaterial(List<ProductBeanDTO> productBeanListSpuClass, CartGoods cartGoods) {
if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) return;
if (CollectionUtils.isEmpty(productBeanListSpuClass.get(0).getAdditionalGroupList())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_VERSION_ERROR);
}
}
} }
...@@ -944,7 +944,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -944,7 +944,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//购物车已存在商品券 //购物车已存在商品券
if (StringUtils.isNotBlank(cartGoods.getCouponCode())) { if (StringUtils.isNotBlank(cartGoods.getCouponCode())) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon(); ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
calculationDiscountCoupon.setCode(couponCode); calculationDiscountCoupon.setCode(cartGoods.getCouponCode());
coupons.add(calculationDiscountCoupon); coupons.add(calculationDiscountCoupon);
} }
} }
......
...@@ -234,7 +234,7 @@ public class CalculationServiceImpl { ...@@ -234,7 +234,7 @@ public class CalculationServiceImpl {
// couponPromotionVO.setOrderType(orderType); // couponPromotionVO.setOrderType(orderType);
// couponPromotionVO.setFlg(CouponFlag.YES.getCode()); // couponPromotionVO.setFlg(CouponFlag.YES.getCode());
//优惠券 //优惠券
couponDiscountCalculation.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto,premiumExchangeActivity,shoppingCartInfoRequestVo); couponDiscountCalculation.updateShoppingCartGoodsApportion(calculationDiscountResult, shoppingCartGoodsDto);
setMealCalculation.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto); setMealCalculation.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto);
......
...@@ -3,7 +3,7 @@ package cn.freemud.service.impl.mcoffee.calculation; ...@@ -3,7 +3,7 @@ package cn.freemud.service.impl.mcoffee.calculation;
import cn.freemud.adapter.CouponAdapter; import cn.freemud.adapter.CouponAdapter;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
...@@ -112,8 +112,28 @@ public class CouponDiscountCalculation { ...@@ -112,8 +112,28 @@ public class CouponDiscountCalculation {
/** /**
* 商品均摊 * 商品均摊
*/ */
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo){ public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto){
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getCouponDiscounts();
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
if(couponDiscount.getCouponCode().equals(cartGoods.getCouponCode())){
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(couponDiscount.getCouponCode());
activityDiscountsDto.setActivityName(couponDiscount.getCouponCode());
activityDiscountsDto.setActivityType(couponDiscount.getActivityType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscountAmount());
productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
}
}
}
}
} }
public void getCoupon(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo){ public void getCoupon(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo){
......
...@@ -42,7 +42,7 @@ public class MCoffeeAddGoodsRequestVo { ...@@ -42,7 +42,7 @@ public class MCoffeeAddGoodsRequestVo {
* 门店Id * 门店Id
* 商城没有门店id,如果需要门店id必传在业务中进行校验 * 商城没有门店id,如果需要门店id必传在业务中进行校验
*/ */
//@NotEmpty(message = "shopId不能为空") // @NotEmpty(message = "shopId不能为空")
private String shopId; private String shopId;
/** /**
...@@ -55,6 +55,7 @@ public class MCoffeeAddGoodsRequestVo { ...@@ -55,6 +55,7 @@ public class MCoffeeAddGoodsRequestVo {
*/ */
private String channelType; private String channelType;
@NotEmpty(message = "spuId不能为空")
private String spuId; private String spuId;
private String skuId; private String skuId;
......
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