Commit 0823f3e7 by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/2.0-换购券' into feature/促销算价基于最新master的分支

parents 4f0e1830 d786ff25
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.9-RELEASE</version>
<version>2.10.0-RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.3.14.RELEASE</version>
<version>1.3.15.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -72,4 +72,5 @@
| 2.0.6-RELEASE | ordercenter新增常量 | 张志恒 | 2020-08-04 |
| 2.0.7-RELEASE | 加料商品开发 | 梁崇福 | 2020-08-24 |
| 2.0.8-RELEASE | 订单渠道映射调整 | 李小二 | 2020-08-24 |
| 2.0.9-RELEASE | 麦咖啡 | 徐康 | 2020-09-07 |
\ No newline at end of file
| 2.0.9-RELEASE | 麦咖啡 | 徐康 | 2020-09-07 |
| 2.10.0-RELEASE | 停车场订单 | 张志恒 | 2020-09-28 |
\ No newline at end of file
......@@ -2972,6 +2972,10 @@ public class OrderSdkAdapter {
name ="审核未通过";
break;
}
case 8: {
name ="撤单";
break;
}
}
return name;
}
......
......@@ -42,7 +42,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>3.8.0.RELEASE</version>
<version>3.7.6-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -66,4 +66,4 @@
</dependencies>
</project>
\ No newline at end of file
</project>
......@@ -271,9 +271,12 @@ public class ShoppingCartAdapter {
ProductBeanDTO.SkuProductBean skuProduct = isSkuProduct ? spuProduct.getSkuList().stream().filter(p -> ObjectUtils.equals(cartGoods.getSkuId(), p.getSkuId())).findFirst().get() : null;
Map<String, String> attributes = getAttributesNew(cartGoods.getExtra());
cartGoods.setName(spuProduct.getName());
cartGoods.setSpuName(spuProduct.getName());
cartGoods.setSkuName(isSkuProduct ? skuProduct.getProductName() : spuProduct.getName());
if(!"早餐啡常搭".equals(cartGoods.getName()) && !"早餐啡常搭".equals(cartGoods.getSkuName()) && !"早餐啡常搭".equals(cartGoods.getSpuName())
&& !"啡常搭".equals(cartGoods.getName()) && !"啡常搭".equals(cartGoods.getSkuName()) && !"啡常搭".equals(cartGoods.getSpuName())) {
cartGoods.setName(spuProduct.getName());
cartGoods.setSpuName(spuProduct.getName());
cartGoods.setSkuName(isSkuProduct ? skuProduct.getProductName() : spuProduct.getName());
}
cartGoods.setSpecProductId(attributes.get(ATTRIBUTEID));
cartGoods.setPic(spuProduct.getPicture());
cartGoods.setPackPrice(isSkuProduct ? skuProduct.getPackPrice() : spuProduct.getPackPrice());
......
......@@ -17,7 +17,8 @@ public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"),
COUPON_GOODS(2, "商品券"),
SET_MEAL_GOODS(3,"套餐商品"),
HG_COUPON_GOODS(7, "换购券"),
SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
......
......@@ -33,6 +33,21 @@ public class ShoppingCartConstant {
public final static String ONE_TRADE_CAN_ONLY_USE_ONE_GOODS_COUPON = "一笔交易仅允许同时使用一张商品券";
public final static String ORDER_WAY_CHANGE = "切换点餐方式,商品库存和价格等可能会发生变化。";
/**
* 商品价格校验失败
*/
public static final int PRODUCT_PRICE_CHANGE = 102;
public static final String CART_PRODUCT_PRICE_CHANGE = "您选择的【$spuName】商品价格将发生变化;";
/**
* 商品不存在
*/
public static final int PRODUCT_NOTFOUND= 103;
public static final String CART_PRODUCT_NOT_FOUND = "您选择的【$spuName】商品不在当前门店菜单中;";
/**
* 商品状态校验失败
*/
public static final int PRODUCT_DOWN= 104;
public static final String CART_PRODUCT_INVALID_STATE = "您选择的【$spuName】商品已失效;";
}
......@@ -48,6 +48,8 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant.*;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -160,7 +162,7 @@ public interface ShoppingCartBaseService {
CartGoodsStates cartGoodsStates = new CartGoodsStates();
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())) {
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())) {
continue;
}
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
......@@ -194,7 +196,107 @@ public interface ShoppingCartBaseService {
}
}
default BaseResponse<CheckCartRequest> checkAllCartGoodsForMCoffee(CheckCartRequest checkCartRequest) {
ShoppingCartAdapter shoppingCartAdapter = SDKCommonBaseContextWare.getBean(ShoppingCartAdapter.class);
ProductService productService = SDKCommonBaseContextWare.getBean(ProductService.class);
try {
ValidateShopProductRequest validateShopProductRequest = shoppingCartAdapter.getValidateShopProductRequest(checkCartRequest);
com.freemud.application.sdk.api.base.BaseResponse<ValiadShopProductResponse> valiadResponse = productService.validateShopProductAboutReason(validateShopProductRequest);
if (valiadResponse == null || !CartResponseConstant.SUCCESS.getCode().equals(valiadResponse.getCode()) || valiadResponse.getData()==null) {
checkCartRequest.getCartGoodsList().clear();
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
return CartResponseUtil.error(valiadResponse.getMessage(),checkCartRequest);
}
ValiadShopProductResponse validateResult = valiadResponse.getData();
CartGoodsStates cartGoodsStates = new CartGoodsStates();
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
if (CollectionUtils.isNotEmpty(validateResult.getFailureList())){
List<String> invalidSpu = new ArrayList<>();
List<String> notFoundSpu = new ArrayList<>();
List<String> changePriceSpu = new ArrayList<>();
for (int i = 0; i < validateResult.getFailureList().size(); i++) {
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
ValiadShopProductResult validaProduct = validateResult.getFailureList().get(i);
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
if (cartGoods.getSkuId().equals(validaProduct.getSkuId())) {
String spuName = null == validaProduct.getProductType() ? cartGoods.getSpuName() : validaProduct.getProductType().getName();
if (PRODUCT_DOWN == validaProduct.getCode()) {
invalidSpu.add(spuName);
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
break;
}
if (PRODUCT_NOTFOUND == validaProduct.getCode()) {
notFoundSpu.add(spuName);
cartGoodsStates.setHasInvalidGoods(true);
cartGoods.setCartGoodsUid(null);
break;
}
if (PRODUCT_PRICE_CHANGE == validaProduct.getCode()) {
changePriceSpu.add(spuName);
List<ProductBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
}
}
}
}
String toastMsg = "";
if (CollectionUtils.isNotEmpty(invalidSpu)){
toastMsg = toastMsg.concat(CART_PRODUCT_INVALID_STATE.replace("$spuName",StringUtils.join(invalidSpu,",")));
}
if (CollectionUtils.isNotEmpty(notFoundSpu)){
toastMsg = toastMsg.concat(CART_PRODUCT_NOT_FOUND.replace("$spuName",StringUtils.join(notFoundSpu,",")));
}
if (CollectionUtils.isNotEmpty(changePriceSpu)){
toastMsg = toastMsg.concat(CART_PRODUCT_PRICE_CHANGE.replace("$spuName",StringUtils.join(changePriceSpu,",")));
}
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(toastMsg);
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.SHOPPING_CART_GOODS_CHANGE);
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
}
List<ProductBeanDTO> productList = validateResult.getSuccessList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())) {
continue;
}
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
}
//校验商品券是否有当前点餐方式
cartGoodsStates = updateSpqCartGoodsInfo(checkCartRequest.getCartGoodsList(), checkCartRequest.getOrderWay(), checkCartRequest.getPartnerId(), checkCartRequest.getTrackingNo(), cartGoodsStates
, checkCartRequest.getStoreId());
// 点餐方式改变商品券发生变动
if (cartGoodsStates != null && cartGoodsStates.isOrderWayFlag()) {
setToastMsgIfNotExist(checkCartRequest.getShoppingCartGoodsResponseVo(), ShoppingCartConstant.ORDER_WAY_CHANGE);
}
//若商品详情赋值有异常,直接移除购物车
if (checkCartRequest.getCartGoodsList().stream().anyMatch(cart -> StringUtils.isEmpty(cart.getCartGoodsUid()))) {
checkCartRequest.getCartGoodsList().removeIf(k -> StringUtils.isEmpty(k.getCartGoodsUid()));
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
}
// if (checkCartRequest.getCartGoodsList().stream().anyMatch(cart -> cart.getGoodsType().equals(GoodsTypeEnum.EXCEPTION_GOODS.getGoodsType()))) {
// checkCartRequest.getCartGoodsList().removeIf(k -> k.getGoodsType().equals(GoodsTypeEnum.EXCEPTION_GOODS.getGoodsType()));
// checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
// checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_MATERIAL_ERROR);
// }
return CartResponseUtil.success(checkCartRequest);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR);
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
return CartResponseUtil.error(e.getMessage(),checkCartRequest);
}
}
/**
* 更新购物车详细信息
......@@ -897,5 +999,4 @@ public interface ShoppingCartBaseService {
}
return null;
}
}
......@@ -113,7 +113,13 @@ public class DeliveryAdapter {
deliveryOrderRequestDto.setDepatchWeight(order.getWeight());
//deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark());
JSONObject json = JSON.parseObject(order.getExtInfo());
String needTableWare = json.getString("needTableware");
if("0".equals(needTableWare)) {
deliveryOrderRequestDto.setOrderRemark("无需餐具(刀、叉、勺),"+order.getRemark());
} else {
deliveryOrderRequestDto.setOrderRemark("需要餐具(刀、叉、勺),"+order.getRemark());
}
deliveryOrderRequestDto.setOrderTotalAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setPartnerId(order.getCompanyId());
......@@ -180,9 +186,9 @@ public class DeliveryAdapter {
deliveryProductInfo.setProductCode(productList.getProductId());
deliveryProductInfo.setProductName(productList.getProductName());
deliveryProductInfo.setProductNumber(productList.getNumber());
deliveryProductInfo.setProductPrice(productList.getPrice().intValue());
deliveryProductInfo.setProductPrice(productList.getSalePrice().intValue());
//餐道使用
deliveryProductInfo.setCumulatedTotal(productList.getNumber() * productList.getPrice().intValue());
deliveryProductInfo.setCumulatedTotal(productList.getNumber() * productList.getSalePrice().intValue());
OrderProductAddInfoDto orderProductAddInfoDto = JSON.parseObject(productList.getAddInfo(), OrderProductAddInfoDto.class);
deliveryProductInfo.setTaxId(StringUtils.isNotEmpty(orderProductAddInfoDto.getTaxId()) ? orderProductAddInfoDto.getTaxId() : "10");
deliveryProductInfo.setTaxRate(orderProductAddInfoDto.getTax() > 0 ? orderProductAddInfoDto.getTax() : 6);
......@@ -196,14 +202,15 @@ public class DeliveryAdapter {
deliveryComboProductInfo.setProductCode(comboProduct.getProductId());
deliveryComboProductInfo.setProductName(comboProduct.getProductName());
deliveryComboProductInfo.setProductNumber(comboProduct.getNumber());
deliveryComboProductInfo.setProductPrice(comboProduct.getPrice().intValue());
deliveryComboProductInfo.setProductPrice(comboProduct.getSalePrice().intValue());
//餐道使用
deliveryComboProductInfo.setCumulatedTotal(comboProduct.getNumber() * comboProduct.getPrice().intValue());
deliveryComboProductInfo.setCumulatedTotal(comboProduct.getNumber() * comboProduct.getSalePrice().intValue());
OrderProductAddInfoDto orderComboProductAddInfoDto = JSON.parseObject(comboProduct.getAddInfo(), OrderProductAddInfoDto.class);
deliveryComboProductInfo.setTaxId(StringUtils.isNotEmpty(orderComboProductAddInfoDto.getTaxId()) ? orderComboProductAddInfoDto.getTaxId() : "10");
deliveryComboProductInfo.setTaxRate(orderComboProductAddInfoDto.getTax() > 0 ? orderComboProductAddInfoDto.getTax() : 6);
deliveryComboProductInfo.setParentCode(Long.valueOf(comboProduct.getParentProductId().split("_")[0]));
deliveryComboProductInfo.setParentCode(Long.valueOf(comboProduct.getParentProductId().replace("_", "")));
deliveryProductInfo.setProductCode(deliveryComboProductInfo.getParentCode()+"");
productInfos.add(deliveryComboProductInfo);
});
......
......@@ -3188,14 +3188,20 @@ public class OrderAdapter {
Object value = redisCache.hashGet(hashKey, type);
JSONArray jsonArray = value != null ? JSONArray.parseArray(value.toString()) : new JSONArray();
if(null != jsonArray && jsonArray.size() >0){
for(int i=0;i<jsonArray.size();i++){
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
jsonObject.remove("@type");
}
}
return (value != null ? JSONObject.parseArray(jsonArray.toString(), AssortmentOpenPlatformPartnerWxappConfig.class) : new ArrayList());
return (value != null ? JSONObject.parseArray(jsonArray.toString(), AssortmentOpenPlatformPartnerWxappConfig.class) : new ArrayList());
} else {
return new ArrayList();
}
}
public DeleteOrderDto convent2DeleteOrderDto(String oId) {
DeleteOrderDto deleteOrderDto = new DeleteOrderDto();
deleteOrderDto.setOrderId(oId);
return deleteOrderDto;
}
}
......@@ -217,6 +217,15 @@ public class OrderController {
}
/**
* 取消支付删除订单
*/
@ApiAnnotation(logMessage = "deleteOrderById")
@PostMapping("/deleteOrderById")
public BaseResponse deleteOrderById(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
return orderservice.deleteOrderById(deleteOrderVo);
}
/**
* 用户申请退款
*/
@ApiAnnotation(logMessage = "refund")
......
......@@ -55,7 +55,7 @@ public interface Orderservice {
* @param oid 订单ID
* @return
*/
BaseResponse queryOrderById(Integer operation,String sessionId, String oid, String partnerId,String channel);
BaseResponse queryOrderById(Integer operation, String sessionId, String oid, String partnerId, String channel);
/**
* 支付取消删除订单
......@@ -63,6 +63,11 @@ public interface Orderservice {
BaseResponse deleteOrder(DeleteOrderVo deleteOrderVo);
/**
* 支付取消删除订单
*/
BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo);
/**
* 订单申请退款
*/
BaseResponse orderRefund(OrderRefundVo orderRefundVo);
......
......@@ -1477,6 +1477,44 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo) {
if (StringUtils.isBlank(deleteOrderVo.getOid())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(deleteOrderVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
String string = JSONObject.toJSONString(queryOrderByIdResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
QueryOrderByIdResponseDto responseDto = jsonObject.toJavaObject(QueryOrderByIdResponseDto.class);
if (!RESPONSE_SUCCESS_CODE.equals(responseDto.getErrcode()) || responseDto.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
OrderBean orderBean = responseDto.getData();
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
DeleteOrderDto deleteOrderDto = orderAdapter.convent2DeleteOrderDto(deleteOrderVo.getOid());
//
DeleteOrderRequest var1 = new DeleteOrderRequest();
var1.setOrderId(deleteOrderDto.getOrderId());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
var1.setOperator("未支付删除");
BaseOrderResponse baseOrderResponse = orderCenterSdkService.deleteOrder(var1);
if (!RESPONSE_SUCCESS_CODE.equals(baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR);
}
// TODO: 2019/9/10 删除订单通知
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
return ResponseUtil.success();
}
@Override
public BaseResponse orderRefund(OrderRefundVo orderRefundVo) {
if (StringUtils.isEmpty(orderRefundVo.getReason())) {
orderRefundVo.setReason("退款");
......@@ -1598,8 +1636,6 @@ public class OrderServiceImpl implements Orderservice {
sendApplyRefundSubscriptionNotice(orderBean, orderRefundVo);
//已接单可发起退款申请,查询门店有无云打印机,有则打印退款申请小票
printApplyRefundSmallTicket(orderBean, orderRefundVo);
//发送消息,冲正券
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(),orderBean.getPayStatus());
}
}
return ResponseUtil.success();
......
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.3.14.RELEASE</version>
<version>1.3.15.RELEASE</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -48,3 +48,4 @@
| 1.3.12.RELEASE | 加料商品 | 梁崇福 | 2020-08-24 |
| 1.3.13.RELEASE | 麦咖啡 | 徐康 | 2020-09-07 |
| 1.3.14.RELEASE | 修复查询订单时transId为null的问题 | 肖家炜 | 2020-09-08 |
| 1.3.15.RELEASE | 停车场订单撤单 | 张志恒 | 2020-09-28 |
......@@ -218,5 +218,12 @@ public class InterfaceAddressConstant {
*/
public static final String UPDATE_PICKUP_GOODNO = "/order/v2/updatePickUpGoodNo";
/**
* /parking/v2/revoke
* 撤单
*/
public static final String PARKING_V2_REVOKE = "/parking/v2/revoke";
}
......@@ -117,5 +117,7 @@ public class OrderConditionsReq {
//应用ID
private String appId;
//是否删除
private Integer isDeleted;
}
package com.freemud.application.sdk.api.ordercenter.request.carpark;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class ParkingOrderRevokeReq {
private String orderCode;
private String operator;
private String partnerId;
}
......@@ -11,6 +11,7 @@ import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderAffirmReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCancelReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderRevokeReq;
import com.freemud.application.sdk.api.ordercenter.request.create.BatchQueryByCodesReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateFatherSonOrderReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
......@@ -864,4 +865,15 @@ public class OrderSdkService {
return responseHandle(responseDTO);
}
/**
* /parking/v2/revoke
* 撤单
*/
public BaseResponse parkingOrderRevoke(ParkingOrderRevokeReq request, String trackingNo) {
OrderBaseResp<OrderResp> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, PARKING_V2_REVOKE,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp<OrderResp>>() {
});
return responseHandle(responseDTO);
}
}
......@@ -35,7 +35,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId>
<version>3.8.0.RELEASE</version>
<version>3.7.6-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -373,4 +373,4 @@
</plugins>
</build>
</project>
\ No newline at end of file
</project>
......@@ -112,6 +112,7 @@ public class ActivityCalculationDiscountRequestDto {
* 例如8折为80
*/
private Integer memberDiscount;
private String couponCode;
/**
* 加料
*/
......
package cn.freemud.entities.dto;
import cn.freemud.entities.vo.CartGoods;
import lombok.Data;
import java.util.List;
@Data
public class CheckSpqInfoResponseDto {
private String spuId;
......@@ -26,4 +29,7 @@ public class CheckSpqInfoResponseDto {
private String couponCode;
private Long price;
private String picture;
private String defaultSpecId;
private String defaultSpecName;
private List<CartGoods.CartGoodsExtra> extras;
}
......@@ -33,7 +33,7 @@ public class CartGoods {
*/
private String goodsId;
/**
* 1.正常商品,2.商品券,3.套餐商品
* 1.正常商品,2.商品券,3.套餐商品,4、换购券
*/
private Integer goodsType;
/**
......
......@@ -45,4 +45,7 @@ public class GetProductsVo {
* 分类名称
*/
private String categoryName;
private String defaultSpecId;
private String defaultSpecName;
private List<CartGoods.CartGoodsExtra> extra;
}
\ No newline at end of file
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryCartInfoRequestVo
* @Package cn.freemud.entities.vo
* @Description: 简单描述下这个类是做什么用的
* @author: yu.sun
* @date: 2020/9/11 10:35
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class QueryCartInfoRequestVo {
@ApiModelProperty(value = "用户Id",required = true)
@NotEmpty(message = "用户Id不可为空")
private String userId;
@ApiModelProperty(value = "商户Id",required = true)
@NotEmpty(message = "商户Id不可为空")
private String partnerId;
@ApiModelProperty(value = "门店id",required = true)
@NotEmpty(message = "门店id不可为空")
private String storeId;
@ApiModelProperty(value = "sessionId",required = true)
@NotEmpty(message = "用户sessionId不可为空")
private String sessionId;
@ApiModelProperty(value = "appId",required = true)
@NotEmpty(message = "appId不可为空")
private String appId;
@ApiModelProperty(value = "menuType",notes = "业务类型: 0 : 自提 1:外卖 2:微商城",required = true)
@NotEmpty(message ="业务类型不可为空")
private String menuType ;
@ApiModelProperty(value = "订单类型")
@NotNull(message = "订单类型不可为空")
private Integer orderType;
@ApiModelProperty(value = "收货地址id",notes = "svc卡支付外卖订单必传")
private String receiveId;
}
\ No newline at end of file
......@@ -17,10 +17,11 @@ public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"),
COUPON_GOODS(2, "商品券"),
HG_COUPON_GOODS(7, "换购券"),
SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"加价购商品"),
REDUCE_PRICE_GOODS(6, "加价购商品"),
MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType;
......
......@@ -87,7 +87,9 @@ public enum ResponseResult {
SHOPPING_CART_SEAT_EMPTY("44020", "键位为空"),
SHOPPING_CART_COUPON_USED("44021", "优惠券已加入餐盘"),
SHOPPING_CART_GOODS_COUPON_CAN_NOT_USE("44022", "已加入同样优惠券,第二张暂不可用"),
SHOPPING_CART_PRODUCT_CAN_NOT_USE("44023", "商品不可用"),
SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"),
SHOPPING_CART_HG_COUPON_NOT_EXIST("44027", "换购券不存在"),
/**
* 订单状态码
*/
......
......@@ -100,6 +100,8 @@ public interface CouponService {
*/
CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto);
CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId);
/**
* 领券
*
......
......@@ -102,7 +102,7 @@ public interface ShoppingCartNewService {
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
/**
* 校验券是否有效
* 商品券校验券是否有效
*
* @param partnerId
* @param storeId
......@@ -110,9 +110,13 @@ public interface ShoppingCartNewService {
* @param productIds
* @return
*/
default String validCoupon(String partnerId, String storeId, String spuId, List<Long> productIds,String menuType) {
default String validCoupon(String partnerId
, String storeId
, String spuId
, List<Long> productIds
, String menuType) {
String spuId2;
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()),menuType);
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()), menuType);
CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
if (checkSpqInfoResponseDto == null) {
......@@ -124,6 +128,35 @@ public interface ShoppingCartNewService {
}
/**
* 换购券
*
* @param partnerId
* @param storeId
* @param spuId
* @param productIds
* @param menuType
* @param goodsId
* @return
*/
default String validCoupon(String partnerId
, String storeId
, String spuId
, List<Long> productIds
, String menuType
, String goodsId) {
String spuId2;
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()), menuType);
CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, goodsId);
if (checkSpqInfoResponseDto == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_HG_COUPON_NOT_EXIST);
}
productIds.add(Long.parseLong(checkSpqInfoResponseDto.getSkuId()));
spuId2 = checkSpqInfoResponseDto.getSkuId();
return spuId2;
}
/**
* 添加商品券商品
*
* @param addShoppingCartGoodsRequestVo
......
......@@ -158,6 +158,35 @@ public class AssortmentSdkService {
return baseResponse.getResult();
}
/**
* 【麦咖啡】调用SDK校验购物车
*
* @param oldAllCartGoodsList
* @param partnerId
* @param storeId
* @param shoppingCartGoodsResponseVo
* @param orderType
*/
public CheckCartRequest checkShoppingCartSdkForMCoffee(List<CartGoods> oldAllCartGoodsList, String partnerId, String storeId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo
, Integer orderType, String tableNumber, String menuType ,ShoppingCartBaseService shoppingCartService) {
CheckCartRequest checkCartRequest = new CheckCartRequest();
checkCartRequest.setCartGoodsList(JSONArray.parseArray(JSONObject.toJSONString(oldAllCartGoodsList), com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.class));
checkCartRequest.setOrderWay(orderType);
checkCartRequest.setPartnerId(partnerId);
checkCartRequest.setShoppingCartGoodsResponseVo(JSONObject.parseObject(JSONObject.toJSONString(shoppingCartGoodsResponseVo), com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo.class));
checkCartRequest.setStoreId(storeId);
checkCartRequest.setTableNumber(tableNumber);
checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
checkCartRequest.setMenuType(BusinessTypeEnum.getByType(menuType).getCode());
BaseResponse<CheckCartRequest> baseResponse ;
baseResponse= shoppingCartService.checkAllCartGoodsForMCoffee(checkCartRequest);
if (baseResponse == null) {
return null;
}
return baseResponse.getResult();
}
/**
* 调用SDK获取商品详情
*
......
......@@ -10,14 +10,9 @@ import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CouponService;
import cn.freemud.service.IPromotionService;
import cn.freemud.service.UserService;
import com.alibaba.fastjson.JSONArray;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
......@@ -96,11 +91,26 @@ public class CouponPromotionService implements IPromotionService {
cartGoods.setQty(1);
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = calculationDiscountResult.getGoods()
.stream()
.filter(d -> cartGoods.getCartGoodsUid().equals(d.getCartGoodsUid()))
.findFirst()
.orElse(null);
if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount());
} else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice());
}
}
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice());
}
}
}
}
}
......@@ -144,7 +154,7 @@ public class CouponPromotionService implements IPromotionService {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(apportionDetails.getActivityCode());
activityDiscountsDto.setActivityName(apportionDetails.getActivityName());
activityDiscountsDto.setActivityType(apportionDetails.getActivityType());
activityDiscountsDto.setActivityType(this.convent2ActivityType(apportionDetails.getActivityType()));
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscountAmount());
return activityDiscountsDto;
}
......@@ -162,4 +172,12 @@ public class CouponPromotionService implements IPromotionService {
activityClassifyCouponBean.setUsableCoupons(Lists.newArrayList());
return activityClassifyCouponBean;
}
private Integer convent2ActivityType(Integer type) {
Integer Hg = 33;
if (type != null && Hg.equals(type)) {
type = 32;
}
return type;
}
}
......@@ -68,6 +68,7 @@ import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@Slf4j
......@@ -710,6 +711,90 @@ public class CouponServiceImpl implements CouponService {
return dto;
}
/**
* 换购券
*
* @param requestDto
* @param goodsId
* @return
*/
@Override
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto, String goodsId) {
log.info("checkSpqInfo****" + gson.toJson(requestDto));
String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode();
String storeId = requestDto.getStoreId();
//TODO 查询券详情券是否存在
GetMemberCouponRequestVo requestVo = new GetMemberCouponRequestVo();
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
GetCouponDetailResponseDto couponDetailResponseDto = couponService.getMemberCoupon(requestVo);
LogUtil.info("couponService.getMemberCoupon", gson.toJson(requestVo), gson.toJson(couponDetailResponseDto));
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
}
if (CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
}
boolean productValid = false;
GetCouponDetailResponseDto.Details couponActivityDetail = null;
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (productValid) break;
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (goodsId.equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponActivityDetail = detail;
break;
}
}
}
//检查商品是否有效
if (!productValid) {
return null;
}
//TODO 判断该券是否在这个门店下(一个券可以在多个门店下使用)
List<String> couPonstoreIds = Lists.newArrayList();
for (GetCouponDetailResponseDto.Details detail : couponDetailResponseDto.getDetails()) {
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (GetCouponDetailResponseDto.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
couPonstoreIds.add(activeRestrictionVO.getStoreIdPartner());
}
}
if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(storeId)) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = goodsId;
skuIds.add(skuId);
//TODO 通过skuid查询spuid
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId, requestDto.getMenuType());
GetProductsVo productsVo = productsVoMap.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null;
}
CheckSpqInfoResponseDto dto = new CheckSpqInfoResponseDto();
dto.setCouponCode(couponCode);
dto.setActiveCode(couponActivityDetail.getActive().getActiveCode());
dto.setCouponName(couponActivityDetail.getTitle());
dto.setActivityName(couponActivityDetail.getActive().getActiveName());
dto.setPrice(productsVo.getFinalPrice());
dto.setSpuId(productsVo.getSpuId());
dto.setSpuName(productsVo.getSkuName());
dto.setSkuId(productsVo.getSkuId());
dto.setSkuName(StringUtils.isNotBlank(productsVo.getSkuName()) ? productsVo.getSkuName() : productsVo.getSpuName());
dto.setPicture(productsVo.getSpuPicture());
dto.setDefaultSpecName(productsVo.getDefaultSpecName());
dto.setDefaultSpecId(productsVo.getDefaultSpecId());
dto.setExtras(productsVo.getExtra());
log.info("dto***" + dto);
return dto;
}
@Autowired
private ActivityClient activityClient;
......
......@@ -18,6 +18,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.GetProductsVo;
import cn.freemud.enums.ProductInfoType;
import cn.freemud.enums.ResponseResult;
......@@ -32,6 +33,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -201,7 +203,26 @@ public class ItemServiceImpl implements ItemService {
String picture = CollectionUtils.isNotEmpty(product.getProductPictureList())
? product.getProductPictureList().get(0).getUrl() : product.getPicture();
getProductsVo.setSpuPicture(picture);
getProductsVo.setStatus(product.getStatus());
//getProductsVo.setStatus(product.getStatus());
if (CollectionUtils.isNotEmpty(product.getProductAttributeGroupList())
&& CollectionUtils.isNotEmpty(product.getProductAttributeGroupList().get(0).getAttributeValues())) {
List<CartGoods.CartGoodsExtra> extras = new ArrayList<>();
List<String> specId = new ArrayList<>();
List<String> specName = new ArrayList<>();
for (ProductListDto.DataBean.ProductAttributeGroupListBean bean : product.getProductAttributeGroupList()) {
for (ProductListDto.DataBean.ProductAttributeGroupListBean.AttributeValueBean attr : bean.getAttributeValues()) {
CartGoods.CartGoodsExtra extra = new CartGoods.CartGoodsExtra();
extra.setAttributeId(attr.getAttributeId());
extra.setAttributeName(attr.getAttributeValue());
specName.add(attr.getAttributeValue());
specId.add(attr.getAttributeId());
break;
}
}
getProductsVo.setExtra(extras);
getProductsVo.setDefaultSpecName(StringUtils.join(specName, "/"));
getProductsVo.setDefaultSpecId(StringUtils.join(specId, "/"));
}
resultMap.put(skuProductBean.getSkuId(), getProductsVo);
}
});
......
......@@ -252,7 +252,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
productIds.add(Long.parseLong(goodsId));
} else {
//校验券是否有效
spuId2 = validCoupon(partnerId, storeId, spuId, productIds,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
if (StringUtils.isNotBlank(skuId)) {
spuId2 = validCoupon(partnerId, storeId, spuId, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(), skuId);
cartGoods.setGoodsId(spuId);
} else {
spuId2 = validCoupon(partnerId, storeId, spuId, productIds, BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
}
}
// 获取商品详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId
......@@ -279,7 +284,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} else {
// 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null
this.addProductGoods(addShoppingCartGoodsRequestVo, cartGoods, spuId2, userId, shoppingCartGoodsResponseVo,
spuId, allCartGoodsList, productBeanListSpuClass);
spuId, allCartGoodsList, productBeanListSpuClass, StringUtils.isNotBlank(skuId) ? true : false);
}
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
......@@ -894,13 +899,23 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
else {
// 商品券ID换取商品
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId,menuType);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId, menuType);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
} else {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
}
// 商品券不存在时,将商品券从购物车移除
if (checkSpqInfoResponseDto == null) {
cartGoodsList.remove(i);
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, null, null, this.shoppingCartBaseService);
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST);
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_HG_COUPON_NOT_EXIST);
} else {
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_NOT_EXIST);
}
}
validCouponMap.put(spqId, checkSpqInfoResponseDto);
cartGoods.setName(checkSpqInfoResponseDto.getCouponName());
......@@ -912,7 +927,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupons.add(coupon);
// 添加商品券代表的商品
String goodsId = StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId();
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, 1, checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid);
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, 1, checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid, cartGoods.getSpuId());
} else {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, 1, checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid);
}
}
}
// 当加价购商品不为空时
......@@ -932,8 +951,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
try {
System.out.println("start discount");
System.out.println(JSON.toJSONString(activityCalculationDiscountRequestDto));
activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto);
} catch (Exception ex) {
ErrorLog.printErrorLog("calculation_discount_error", "/calculation/discount", activityCalculationDiscountRequestDto, ex);
......@@ -980,6 +997,23 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
}
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList
, String goodsId
, Integer goodsQuantity
, Long originalPrice
, Integer memberDiscount
, String cartGoodsUid
, String couponCode) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoodsUid);
calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount);
calculationDiscountGoods.setCouponCode(couponCode);
this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
}
/**
* 促销增加
*
......@@ -1364,7 +1398,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/
private void addProductGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo
, CartGoods cartGoods, String spuId2, String userId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String spuId
, List<CartGoods> allCartGoodsList, List<ProductBeanDTO> productBeanListSpuClass) {
, List<CartGoods> allCartGoodsList, List<ProductBeanDTO> productBeanListSpuClass, boolean isHg) {
// 商品券商品list
List<CartGoods> tmpCartGoods = allCartGoodsList.parallelStream().filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList());
// 当已有商品券时,不得添加(暂时的限制)
......@@ -1374,7 +1408,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} else {
cartGoods.setCartGoodsUid(spuId);
// 设置商品类型为商品券
cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType());
if (isHg) {
cartGoods.setGoodsType(GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType());
} else {
cartGoods.setGoodsType(GoodsTypeEnum.COUPON_GOODS.getGoodsType());
}
// 商品券Id
String spqId = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
cartGoods.setSpuId(spqId);
......
......@@ -115,7 +115,13 @@ public class CalculationServiceImpl {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
for (CartGoods cartGoods : cartGoodsList) {
addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getCustomerCode(),cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(),cartGoods);
addCalculationDiscountGoods(calculationDiscountGoodsList,
StringUtils.isNotEmpty(cartGoods.getCustomerCode()) ? cartGoods.getCustomerCode() : "",
StringUtils.isNotEmpty(cartGoods.getGoodsId()) ? cartGoods.getGoodsId() : "",
null != cartGoods.getQty() ? cartGoods.getQty() : 0 ,
null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice() : 0,
null != cartGoods.getMemberDiscount() ? cartGoods.getMemberDiscount() : 0,
cartGoods);
}
// 当加价购商品不为空时
......@@ -401,9 +407,9 @@ public class CalculationServiceImpl {
long totalPackgeAmount = 0L;
for (CartGoods cartGoods : cartGoodsList) {
// 设置商品原价与商品现价的初始值
long originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
long amount = cartGoods.getOriginalPrice() * cartGoods.getQty();
long packAmount = cartGoods.getPackPrice() * cartGoods.getQty();
long originalAmount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() : 0;
long amount = null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() : 0;
long packAmount = null != cartGoods.getPackPrice() ? cartGoods.getPackPrice() : 0;
totalOriginalAmount += originalAmount;
totalAmount += amount;
totalPackgeAmount += packAmount;
......
......@@ -326,6 +326,53 @@ public class CouponDiscountCalculation {
}
public List<CouponAvailableReq> buildAvailableCoupons(QueryCartInfoRequestVo requestVo,List<CartGoods> cartGoods){
List<CouponAvailableReq> resList = new ArrayList<>();
CouponAvailableReq res = new CouponAvailableReq();
res.setProviderId(requestVo.getPartnerId());
res.setMerchantId(requestVo.getPartnerId());
res.setStoreId(requestVo.getStoreId());
// List<String> couponList = new ArrayList<>();
res.setChannelIdList(commonService.getOrgCodes(requestVo.getPartnerId(), requestVo.getStoreId()));
List<CouponProductVo> productList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(cartGoods)) {
cartGoods.forEach(cartGood -> {
// if (StringUtils.isNotEmpty(cartGood.getCouponCode())) {
// couponList.add(cartGood.getCouponCode());
// res.setCouponCodes(couponList);
// }
if (CollectionUtils.isNotEmpty(cartGood.getProductComboList())) {
cartGood.getProductComboList().forEach(comboxGoods -> {
CouponProductVo couponProductVo = new CouponProductVo();
couponProductVo.setAmount(Integer.valueOf(comboxGoods.getAmount().toString()));
couponProductVo.setKeyProductCode(comboxGoods.getCustomerCode());
couponProductVo.setQuantity(comboxGoods.getQty());
couponProductVo.setProductId(comboxGoods.getGoodsId());
couponProductVo.setCouponCode(cartGood.getCouponCode());
couponProductVo.setCategoryCode(null);
productList.add(couponProductVo);
});
}
if (CollectionUtils.isNotEmpty(cartGood.getProductGroupList())) {
cartGood.getProductGroupList().forEach(comboxGoods -> {
CouponProductVo couponProductVo = new CouponProductVo();
couponProductVo.setAmount(Integer.valueOf(comboxGoods.getAmount().toString()));
couponProductVo.setKeyProductCode(comboxGoods.getCustomerCode());
couponProductVo.setQuantity(comboxGoods.getQty());
couponProductVo.setProductId(comboxGoods.getGoodsId());
couponProductVo.setCouponCode(cartGood.getCouponCode());
couponProductVo.setCategoryCode(null);
productList.add(couponProductVo);
});
}
});
res.setProductList(productList);
Long totalAmount = createProductRequest(cartGoods, productList);
res.setTotalAmount(Integer.valueOf(totalAmount.toString()));
resList.add(res);
}
return resList;
}
// public String getAppSecret(String partnerId) {
......
......@@ -61,6 +61,7 @@ public class SetMealCalculation {
// cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoods.setPackPrice(cartGoods.getPackPrice() * cartGoods.getQty());
// 可选商品现总价
productGroupTotalAmount = 0l;
long productGroupAmount = cartGoods.getProductGroupList().stream().mapToLong(t -> t.getFinalPrice() * t.getQty()).sum();
productGroupTotalAmount += productGroupAmount * cartGoods.getQty();
......
......@@ -58,6 +58,7 @@ public class TimeSaleCalculation {
Map<String, Integer> numberMap = new HashMap<>();
List<Integer> discounts = Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(),ActivityTypeEnum.TYPE_23.getCode());
for (CartGoods cartGoods : cartGoodsList) {
cartGoods.setOriginalPrice( null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() : 0);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
if ((goods = goodsMap.get(cartGoods.getGoodsId())) == null) {
continue;
......
......@@ -22,6 +22,6 @@ public class CouponProductVo {
private String productId;
private Integer amount;
private Integer quantity;
private String couponCode;
private String categoryCode;
}
......@@ -112,4 +112,9 @@ public class MCoffeeAddGoodsRequestVo {
*/
private String couponCode;
/**
* 套餐名称
*/
private String groupName;
}
......@@ -174,11 +174,22 @@ public class CouponTest {
//1617,1617,88600017957134272219
String partnerId = "1864";
String memberId = "1617";
/*
String code = "88600039947518452055";
CheckSpqInfoRequestDto requestDto=new CheckSpqInfoRequestDto();
partnerId = "1864";
memberId = "1617";
code = "88600039947518452055";
*/
String code = "88607422333514819844";
partnerId = "2399";
memberId = "2399";
code = "88607422333514819844";
CheckSpqInfoRequestDto requestDto = new CheckSpqInfoRequestDto();
requestDto.setCouponCode(code);
requestDto.setPartnerId(partnerId);
requestDto.setStoreId("111");
requestDto.setStoreId("");
CheckSpqInfoResponseDto memberCoupon = couponService.checkSpqInfo(requestDto);
logger.info(JSONObject.toJSONString(memberCoupon));
}
......
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