Commit 3df04818 by zhiheng.zhang

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

parents 1668930f 0a29b3a4
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.20-SNAPSHOT</version>
<version>2.2.25-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -128,4 +128,4 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
</project>
......@@ -153,4 +153,6 @@
| 2.1.8-RELEASE | 拼单 | 缪晖 | 2020-12-10 |
| 2.1.9-RELEASE | 去掉0元核销优惠券 | 李小二 | 2020-12-14 |
\ No newline at end of file
| 2.1.9-RELEASE | 去掉0元核销优惠券 | 李小二 | 2020-12-14 |
| 2.1.10-RELEASE | coco | 刘鹏飞 | 2020-12-17 |
| 2.1.11-RELEASE | 农工商添加设备号 | 梁崇福 | 2020-12-17 |
......@@ -1384,6 +1384,9 @@ public class OrderSdkAdapter {
case "GATHER_SPOT":
type=221;
break;
case "COCO_PRODUCT_CASH_COUPON":
type=36;
break;
default:
break;
}
......@@ -1937,7 +1940,7 @@ public class OrderSdkAdapter {
*
* @return
*/
private Integer getOldOrderAccountType(int newOrderAccountType) {
public Integer getOldOrderAccountType(int newOrderAccountType) {
// 新订单服务枚举 OrderSettlementType
switch (newOrderAccountType) {
case 1:
......@@ -1988,6 +1991,8 @@ public class OrderSdkAdapter {
newOrderAccountType=OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
case 99:
newOrderAccountType=OldOrderAccountType.FREIGHT_COUPON.getCode();
case 36:
newOrderAccountType=OldOrderAccountType.COCO_PRODUCT_CASH_COUPON.getCode();
default:
break;
}
......
......@@ -43,7 +43,8 @@ public enum OldOrderAccountType {
PRICE_DEDUCTION_COUPON(103, "抵价券", "PRICE_DEDUCTION_COUPON"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT"),
GATHER_SPOT(221, "集点活动","GATHER_SPOT"),
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT");
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券","COCO_PRODUCT_CASH_COUPON");
private Integer code;
private String desc;
......
......@@ -43,6 +43,7 @@ public enum QueryOrderAccountType {
MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT","会员价优惠"),
MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD","麦咖啡月卡"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单买月卡"),
COCO_PRODUCT_CASH_COUPON("COCO_PRODUCT_CASH_COUPON", "coco商品代金券"),
;
private String code;
......
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>2.0.15-SNAPSHOT</version>
<version>1.1.9.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -12,4 +12,5 @@
| 1.1.5.RELEASE| 商品加料  | | 2020-08-24 |
| 1.1.6.RELEASE| 新增商品券名称字段| 孙昱 | 2020-11-09 |
| 1.1.7.RELEASE| 标识套餐类型| 孙昱 | 2020-12-01 |
| 1.1.8.RELEASE| 拼单| 缪晖 | 2020-12-10 |
\ No newline at end of file
| 1.1.8.RELEASE| 拼单| 缪晖 | 2020-12-10 |
| 1.1.9.RELEASE| 清除代金券缓存| 缪晖 | 2020-12-17 |
\ No newline at end of file
......@@ -40,7 +40,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.20-SNAPSHOT</version>
<version>2.2.25-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -443,4 +443,4 @@
</repository>
</repositories>
</project>
\ No newline at end of file
</project>
......@@ -2579,6 +2579,14 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_221.getCode().equals(activityType)){
return OldOrderAccountType.GATHER_SPOT;
}
if (ActivityTypeEnum.TYPE_221.getCode().equals(activityType)){
return OldOrderAccountType.GATHER_SPOT;
}
// coco商品代金券
if (ActivityTypeEnum.TYPE_36.getCode().equals(activityType)){
return OldOrderAccountType.COCO_PRODUCT_CASH_COUPON;
}
return OldOrderAccountType.BUYM_SENDN;
}
......
......@@ -406,4 +406,15 @@ public class OrderController {
return orderservice.timeOutOrderRefund(timeOutOrderVo);
}
/**
* 用户开放平台,订单支付完成回调
* @param requestVo
* @return
*/
@ApiAnnotation(logMessage = "platform/paysuccess")
@PostMapping("/platform/paysuccess")
public BaseResponse platformPaysuccess(@Validated @LogParams @RequestBody PlatformPaySuccessRequest requestVo){
return orderservice.platformPaysuccess(requestVo);
}
}
......@@ -17,12 +17,35 @@ import lombok.Data;
*/
@Data
public class CouponCodeBaseDto {
/**
* 版本号
*/
private Integer ver;
// 71代表核销
/**
* 操作类型:71核销,0查询,3冲正
*/
private Integer reqtype;
/**
* 商户号
*/
private String partnerId;
/**
* 门店号
*/
private String store_id;
/**
* 线下pos编号, 除coco外,其他商户必填
*/
private String station_id;
/**
* 操作员编号,除coco外,其他商户必填
*/
private String operator_id;
// 组织机构ID,(String 类型的集合)
......
......@@ -18,11 +18,30 @@ import java.util.List;
*/
@Data
public class CouponCodeVerificationDto extends CouponCodeBaseDto {
/**
* 流水号
*/
private String trans_id;
/**
* 核销时间:yyyy-MM-dd
*/
private String business_date;
/**
* 渠道,例如:pickup,delivery
*/
private String channel;
/**
* 会员编号
*/
private String memberId;
/**
* 核销交易信息
*/
private List<CouponCodeVerificationTransDto> transactions;
}
......@@ -2,6 +2,8 @@ package cn.freemud.entities.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -16,8 +18,44 @@ import lombok.Data;
*/
@Data
public class CouponCodeVerificationProductDto {
private Integer seq ;
private String pID;
/**
* 核销数量
*/
private Integer consume_num ;
/**
* 商品编号
*/
private String pID;
/**
* BigDecimal, 暂未使用
*/
private BigDecimal redeem_price;
/**
* 商品序号或者行数
*/
private Integer seq ;
/**
* 商品名称
*/
private String productName ;
/**
* 线下原价,单位:分
*/
private Integer initPrice ;
/**
* 优惠后价格,单位:分
*/
private Integer nowPrice ;
/**
* 应收金额,单位:分
*/
private Integer payMoney ;
}
......@@ -19,8 +19,41 @@ import java.util.List;
*/
@Data
public class CouponCodeVerificationTransDto {
/**
* 券号
*/
private String code;
private String ebcode;
private Integer totalAmount;
//private String ebcode;
/**
* 实收金额单位:分
*/
private Integer pay_amount;
/**
* 商品信息
*/
private List<CouponCodeVerificationProductDto> products;
/**
* 总优惠金额单位:分
*/
private Integer totalAmount;
/**
* 订单号,coco核销使用
*/
private String orderNumber;
/**
* 应收金额,单位:分,coco核销使用
*/
private Integer amountRec;
/**
* 实收金额,单位:分
*/
private Integer amountPaid;
}
......@@ -13,6 +13,7 @@
package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -196,6 +197,8 @@ public class QueryOrdersResponseDto {
private List<ProductBean> productList;
private List<RefundBean> refundList;
private List<OrderSettlementResp> orderSettlementDetailList;
private AddDeliveryInfo addInfo;
private List<OrderCostResp> orderCostDetailList;
......
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class PlatformPaySuccessRequest {
@NotEmpty(message = "orderCode 不能为空")
private String orderCode;
@NotEmpty(message = "商户号 不能为空")
private String partnerId;
}
......@@ -55,7 +55,8 @@ public enum ActivityTypeEnum {
TYPE_DELIVERY(901, "配送费"),
TYPE_211(211, "套餐优惠"),
TYPE_221(221, "集点活动"),
TYPE_320(320, "会员价优惠");
TYPE_320(320, "会员价优惠"),
TYPE_36(36, "coco商品代金券");
private Integer code;
......
......@@ -26,7 +26,8 @@ public enum OrderAccountType {
BUYM_SENDN(24, "买M赠N"),
CUSTOMER_SUB(4, "积分扣减"),
CARD_ORIGINAL_AMOUNT(25, "会员卡原价"),
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额");
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券");;
private Integer code;
private String desc;
......
......@@ -146,4 +146,8 @@ public interface Orderservice {
BaseResponse queryOrderRider(OrderRiderRequestVo requestVo);
BaseResponse timeOutOrderRefund(TimeOutOrderVo timeOutOrderVo);
BaseResponse platformPaysuccess(PlatformPaySuccessRequest requestVo);
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderRelationFactory
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.coupon;
public interface CouponRelationFactory {
/**
* 获取优惠券核销参数构建实现类
* @param partnerId
* @return
*/
CouponRelationService getVerificationCouponService(String partnerId);
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderRelationService
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.coupon;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.enums.CouponReqType;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import java.util.List;
public interface CouponRelationService {
/**
* 获取优惠券核销参数构建实现类
* @param
*/
BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList,
QueryOrdersResponseDto.DataBean.OrderBean orderBean,
CouponReqType couponReqType);
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderRelationFactoryImpl
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.coupon.impl;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CounponRelationFactoryImpl implements CouponRelationFactory {
/**
* coco商户
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
/**
* coco的订单相关
*/
@Autowired
@Qualifier("cocoCouponRelationService")
CouponRelationService cocoCouponRelationService;
/**
* 平台的订单相关
*/
@Autowired
@Qualifier("platformCouponRelationService")
CouponRelationService platformCouponRelationService;
@Override
public CouponRelationService getVerificationCouponService(String partnerId) {
if(cocoPartnerId.contains(partnerId)){
return cocoCouponRelationService;
}else{
return platformCouponRelationService;
}
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PlatformOrderRelationServiceImpl
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.coupon.impl;
import cn.freemud.adapter.CouponAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.CouponCodeResponseDto;
import cn.freemud.entities.dto.CouponCodeVerificationDto;
import cn.freemud.entities.dto.CouponCodeVerificationProductDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.CouponReqType;
import cn.freemud.enums.OrderAccountType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.impl.StoreServiceImpl;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.CouponOfflineClient;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.google.common.base.Throwables;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("platformCouponRelationService")
public class PlatformCouponRelationServiceImpl implements CouponRelationService {
@Autowired
private CouponAdapter couponAdapter;
@Autowired
private CouponOfflineClient couponOfflineClient;
@Autowired
private EmailAlertService emailAlertService;
@Autowired
private StoreServiceImpl storeService;
@Override
public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) {
for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
List<CouponCodeVerificationProductDto> products = new ArrayList<>();
//商品券核销核销参数
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto();
couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
products.add(couponCodeVerificationProductDto);
}
}
}
}
Integer orderType = orderBean.getType();
ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType);
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(),couponReqType);
// 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
try {
//71.券核销
for (int i = 2; i >= 0; i--) {
LogUtil.info("核销券码开始==", JSON.toJSONString(couponCodeVerificationDto), null);
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
LogUtil.info("核销券码返回==", JSON.toJSONString(couponCodeVerificationDto), null);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
LogUtil.info("CouponReverseServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
break;
}
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
} catch (Exception ex) {
emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
}
return ResponseUtil.success();
}
}
......@@ -702,6 +702,9 @@ public class CheckMCCafeOrder {
//校验收货地址是否可配送
String receiveId = createOrderVo.getReceiveId();
String trackingNo = LogThreadLocal.getTrackingNo();
if(StringUtils.isBlank(receiveId)) {
throw new ServiceException(ResponseResult.ORDER_TAKE_OUT_ADDRESS_INVAILD, "收货地址不能为空");
}
QueryReceiveAddressRequest request = new QueryReceiveAddressRequest(receiveId, storeDeliveryInfoDto.getPartnerId());
BaseResponse<QueryReceiveAddressResponse> queryReceiveAddressResponse = memberCenterService.queryReceiveAddressById(request, trackingNo);
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
......
......@@ -9,6 +9,8 @@ import cn.freemud.entities.vo.ActivityCouponBean;
import cn.freemud.enums.*;
import cn.freemud.service.CouponActivityService;
import cn.freemud.service.StoreService;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.thirdparty.CouponClient;
import cn.freemud.service.thirdparty.CouponOfflineClient;
import cn.freemud.utils.LogUtil;
......@@ -29,6 +31,7 @@ import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
......@@ -41,6 +44,12 @@ import java.util.stream.Collectors;
@Service
public class CouponActivityServiceImpl implements CouponActivityService {
/**
* coco商户
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
@Autowired
private CouponAdapter couponAdapter;
@Autowired
......@@ -52,6 +61,9 @@ public class CouponActivityServiceImpl implements CouponActivityService {
@Autowired
private StoreServiceImpl storeService;
@Autowired
private CouponRelationFactory couponRelationFactory;
/**
* 核销优惠券
*
......@@ -63,67 +75,10 @@ public class CouponActivityServiceImpl implements CouponActivityService {
if (CollectionUtils.isEmpty(accountList) || CollectionUtils.isEmpty(orderBean.getProductList())) {
return ResponseUtil.success();
}
for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
List<CouponCodeVerificationProductDto> products = new ArrayList<>();
//商品券核销核销参数
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto();
couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
products.add(couponCodeVerificationProductDto);
}
}
}
}
Integer orderType = orderBean.getType();
ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType);
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(),couponReqType);
// 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
try {
//71.券核销
for (int i = 2; i >= 0; i--) {
LogUtil.info("核销券码开始==", JSON.toJSONString(couponCodeVerificationDto), null);
CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
LogUtil.info("核销券码返回==", JSON.toJSONString(couponCodeVerificationDto), null);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
LogUtil.info("CouponReverseServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
break;
}
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
} catch (Exception ex) {
emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
}
}
return ResponseUtil.success();
// 平台走老的逻辑,cooc定制参数
CouponRelationService couponRelationService = couponRelationFactory.getVerificationCouponService(orderBean.getCompanyId());
return couponRelationService.verificationCoupon(accountList,orderBean,couponReqType);
}
@Override
......
......@@ -41,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -99,7 +100,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private OrderCommonService orderCommonService;
@Autowired
private SellCouponOrderServiceImpl sellCouponOrderService;
@Value("${saas.autoRefund.client}")
private String autoRefundClient;
@Override
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createOrderVo.getSessionId());
......@@ -249,8 +251,9 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){
return orderAdapter.sendPaySuccessNoticeMessage();
}
Integer client = OrderSourceType.getClientByCode(orderBean.getSource());
//若是app订单超时回调了 订单已取消则做退款处理
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus()) && OrderSourceType.SAAS.getCode().equals(orderBean.getSource())) {
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus()) && Arrays.asList(autoRefundClient.split(",")).contains(client.toString())) {
orderService.timeOutRefund(orderBean);
return orderAdapter.sendPaySuccessNoticeMessage();
}
......
......@@ -57,6 +57,8 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.*;
......@@ -1279,6 +1281,25 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success();
}
@Override
public BaseResponse platformPaysuccess(PlatformPaySuccessRequest requestVo) {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVo.getOrderCode());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(queryOrderByIdResponse.getErrcode()) || queryOrderByIdResponse.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
// 扣减储值卡
// 扣减券
// 扣减积分
return ResponseUtil.success();
}
private String getRedpacketsPicture(String activityId) {
if (StringUtils.isNotBlank(activityId)) {
try {
......@@ -3702,22 +3723,29 @@ public class OrderServiceImpl implements Orderservice {
//调用支付退款
log.info("payment timeout callback for refund orderDto={}",JSON.toJSONString(orderBean));
Integer abState = 4;
if (abState.equals(orderBean.getAbnormalState())) {
String noPay = "8200404";
if (abState.equals(orderBean.getAbnormalState()) ) {
log.info("payment timeout callback for refund is exist");
return;
}
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null;
Long refundId = System.currentTimeMillis();
OrderExtInfoDto orderExtInfoDTO = gson.fromJson(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderExtInfoDTO==null || StringUtils.isBlank(orderExtInfoDTO.getFmId())) {
log.info("payment timeout callback for refund not create pre order");
return;
}
Integer state = PayRefundStatus.SUCCESS.getCode();
orderBean.setPayVoucher(orderExtInfoDTO.getFmId());
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
String desc = "支付未及时回调";
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid());
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
log.info("payment timeout callback for refund orderId={},request={},resp={}",orderBean.getOid(),JSON.toJSONString(orderPayRefundRequest),JSON.toJSONString(response));
if (response!=null && noPay.equals(response.getCode())) {
return;
}
if (response!=null || state.equals(response.getData().getRefundStatus())) {
sdkUpdateAbnormalState.setAbnormalDesc(desc+",退款成功");
} else {
......
......@@ -11,7 +11,8 @@ public enum OrderSource {
SAAS("saas", "saas点餐"),
ALIPAY("alipay", "支付宝"),
EBAI("ebwm", "饿百外卖"),
DPZHCT("dpzhct", "美团点评智慧餐厅");
DPZHCT("dpzhct", "美团点评智慧餐厅"),
KOUBEI("koubeiwaimai", "口碑外卖");
private String source;
private String sourceName;
......
......@@ -31,7 +31,7 @@ public class OrderBeanFactory {
}
if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source)
|| OrderSource.MTWM.getSource().equals(source) || OrderSource.ELEME.getSource().equals(source) || OrderSource.FMWD.getSource().equals(source) || OrderSource.EBAI.getSource().equals(source)
|| OrderSource.DPZHCT.getSource().equals(source)){
|| OrderSource.DPZHCT.getSource().equals(source) || OrderSource.KOUBEI.getSource().equals(source)){
return applicationContext.getBean(WaimaiOrderMangerServiceImpl.class);
}
return applicationContext.getBean(SaasOrderMangerServiceImpl.class);
......
......@@ -50,4 +50,4 @@
</dependencies>
</project>
\ No newline at end of file
</project>
......@@ -191,5 +191,10 @@ public class OrderExtInfoDto {
*/
private String stationId;
/**
* 线下订单储值卡支付金额
*/
private Integer svcAmount;
}
......@@ -45,7 +45,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>2.0.15-SNAPSHOT</version>
<version>1.1.9.RELEASE</version>
</dependency>
<!-- 再来一单查询订单信息 -->
<dependency>
......
......@@ -118,6 +118,23 @@ public class ShoppingCartMccafeAdapter {
return cartGoodsDetailDtos;
}
/**
* @param cartGoods
* @return
*/
public List<ShoppingCartGoodsDto.CartGoodsDetailDto> convertCartGoods2DetailGoodsList(CartGoods cartGoods, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList, Map<String, String> duplicateGoodsMap) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = new ArrayList<>();
if (StringUtils.isEmpty(cartGoods.getCouponCode()) && GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
return cartGoodsDetailDtos;
} else {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = convertCartGoods2DetailGoods(cartGoods, apportionGoodsList, duplicateGoodsMap);
if(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoodsDetailDto.setComboProducts(this.convertComboxGoods2DetailGoods(cartGoods,cartGoodsDetailDto.getTotalDiscountAmount()));
}
cartGoodsDetailDtos.add(cartGoodsDetailDto);
}
return cartGoodsDetailDtos;
}
/**
* @param cartGoods
......@@ -157,6 +174,7 @@ public class ShoppingCartMccafeAdapter {
} else if (cartGoods.isWeightType()) {
cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode());
}
//小料
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
......@@ -193,6 +211,65 @@ public class ShoppingCartMccafeAdapter {
return cartGoodsDetailDto;
}
public ShoppingCartGoodsDto.CartGoodsDetailDto convertComboProduct2DetailGoods(CartGoods.ComboxGoods cartGoods) {
// 设置基础信息
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
// cartGoodsDetailDto.setCartGoodsUid(cartGoods.getCartGoodsUid());
cartGoodsDetailDto.setTaxId(cartGoods.getTaxId());
cartGoodsDetailDto.setTax(cartGoods.getTax());
cartGoodsDetailDto.setSpuId(cartGoods.getSpuId());
cartGoodsDetailDto.setSpuName(cartGoods.getSpuName());
cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId());
cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(cartGoods.getSkuName()) ? cartGoods.getSpuName() : cartGoods.getSkuName());
cartGoodsDetailDto.setOriginalPrice(cartGoods.getOriginalPrice());
cartGoodsDetailDto.setSalePrice(cartGoods.getOriginalPrice());
cartGoodsDetailDto.setPicture(cartGoods.getPic());
cartGoodsDetailDto.setQty(cartGoods.getQty());
// cartGoodsDetailDto.setActivityType(cartGoods.getActivityType());
// cartGoodsDetailDto.setNodeId(cartGoods.getNodeId());
// cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName());
// cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode());
// cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit());
cartGoodsDetailDto.setProductCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setCustomerCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setWeight(cartGoods.getWeight());
cartGoodsDetailDto.setUnit(cartGoods.getUnit());
cartGoodsDetailDto.setActivityDiscountsDtos(new ArrayList<>());
cartGoodsDetailDto.setTotalDiscountAmount(0);
// cartGoodsDetailDto.setSpecialExtra(cartGoods.getSpecialExtra());
// cartGoodsDetailDto.setClassificationId(cartGoods.getClassificationId());
// cartGoodsDetailDto.setClassificationName(cartGoods.getClassificationName());
// if (GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
// cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
// } else if (cartGoods.isWeightType()) {
// cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode());
// }
//小料
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
List<ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods goods = new ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods();
goods.setSpuId(materialGoods.getSpuId());
goods.setSpuName(materialGoods.getSpuName());
goods.setOriginalPrice(materialGoods.getOriginalPrice());
goods.setSalePrice(materialGoods.getFinalPrice());
goods.setCustomerCode(materialGoods.getCustomerCode());
goods.setProductCode(materialGoods.getCustomerCode());
goods.setQty(cartGoods.getQty());
goods.setTotalDiscountAmount(0);
materialList.add(goods);
}
cartGoodsDetailDto.setMaterialList(materialList);
}
// 设置总优惠&售价
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtras = BeanUtil.convertBeans(cartGoods.getExtra(), ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra::new);
cartGoodsDetailDto.setExtraList(cartGoodsExtras);
return cartGoodsDetailDto;
}
/**
* 活动级别的促销均摊
* 获取当前商品的售后价格
......@@ -267,4 +344,4 @@ public class ShoppingCartMccafeAdapter {
}
cartGoodsDetailDto.setActivityDiscountsDtos(activityDiscountsDtoList);
}
}
\ No newline at end of file
}
......@@ -13,12 +13,11 @@
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.GetMemberInfoRequestDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.ShoppingCartToolsService;
import cn.freemud.service.impl.ShoppingCartMallServiceImpl;
import cn.freemud.service.impl.ShoppingCartMealServiceImpl;
import cn.freemud.service.impl.ShoppingCartNewServiceImpl;
......@@ -28,7 +27,6 @@ import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.Api;
......@@ -177,4 +175,14 @@ public class ShoppingCartController {
return SDKCommonBaseContextWare.getBean(ShoppingCartToolsServiceImpl.class).clear(request);
}
/**
* 线下订单查询接口
*/
@ApiAnnotation(logMessage = "/getMemberInfo")
@PostMapping(value = "/getMemberInfo")
public BaseResponse getMemberInfo(@LogParams @RequestBody GetMemberInfoRequestDto request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).getMemberInfo(request);
}
}
package cn.freemud.entities.dto;
import lombok.Data;
import java.util.List;
@Data
public class GetMemberInfoRequestDto {
private String partnerId;
private String mobile;
private String userId;
/**
* 实际支付金额(分)
*/
private Integer actualPayAmount;
/**
* 下单门店号
*/
private String storeId;
/**
* 门店名称
*/
private String storeName;
/**
* 订单原金额(分)
*/
private Integer originalAmount;
/**
* 下单渠道
*/
private Integer orderClient;
/**
* 订单类型
*/
private Integer orderType;
/**
* 支付渠道
*/
private String payChannel;
/**
* 支付渠道名称
*/
private String payChannelName;
/**
* pos编号
*/
private String posCode;
/**
* 操作人
*/
private String operator;
/**
* 是否赠送积分 0是1否
*/
private Integer needBonus;
/**
* 订单商品信息
*/
private List<OrderItemRequest> orderItemList;
@Data
public static class OrderItemRequest {
/**
* 商品序号
*/
private Integer productSeq;
/**
* 平台商品编号
*/
private String productId;
/**
* 商家商品编号
*/
private String thirdProductId;
/**
* 商品名称
*/
private String productName;
/**
* 商品单价(分)
*/
private Integer productPrice;
/**
* 数量
*/
private Integer productQuantity;
/**
* 优惠分摊金额(分)
*/
private Integer productSharePrice;
/**
* 商品单位
*/
private String productWeightUnit;
/**
* 商品重量(克)
*/
private Integer weight;
/**
* 商品规格名称(大杯)
*/
private String productSpecName;
/**
* 商品属性名称(三分糖)
*/
private String productProperty;
/**
* 商家商品分类编号
*/
private String thirdCateCode;
/**
* 是否算积分
*/
private String needBonus;
}
}
package cn.freemud.entities.dto;
import lombok.Data;
import java.util.List;
@Data
public class GetMemberInfoResponseVo {
private String userId;
private Score score;
private List<Coupon> coupons;
private List<Card> cards;
@Data
public static class Score {
/**
* 当前可用积分
*/
private Integer currentScore;
/**
* 积分抵扣金额,单位分
*/
private Integer reduceAmount;
/**
* 抵扣积分
*/
private Integer reduceScore;
}
@Data
public static class Coupon {
/**
* 券名称
*/
private String couponName;
/**
* 券CODE
*/
private String couponCode;
/**
* 券类型 0:商品 券 1:代金券 3 折扣券
*/
private Integer cuoponType;
/**
* 如:2019-10-1 至 2019-10-10 当天有效
*/
private String couponLimit;
/**
* 优惠金额,单位分
*/
private Integer discountAmount;
/**
* 状态:-1:未激活 0:可用(剔除过期) 1:已使用 2:部分使用 3:取消 6:已过期(根据生失效日期) 99:未知(目前暂不支持)
*/
private Integer status;
private List<Product> products;
}
@Data
public static class Product {
/**
* 商户商品编号
*/
private String pid;
/**
* 商品名称
*/
private String name;
/**
* 最大可取商品个数
*/
private Integer number;
/**
* 商品折扣价,以分为单位
*/
private Integer priceAct;
/**
* 原价,以分为单位
*/
private Integer priceOriginal;
/**
* 支付信息
*/
Payment payment;
}
@Data
public static class Payment {
/**
* 线上已付金额,以分为单位
*/
private Integer paid;
/**
* 线下需要收取的金额,以分为单位
*/
private Integer remaining;
}
@Data
public static class Card {
/**
* 实充余额,单位分
*/
private Integer amount;
/**
* 赠送余额,单位分
*/
private Integer vamount;
/**
* 卡规格ID
*/
private String applyId;
/**
* 卡号
*/
private String cardCode;
/**
* 卡名称
*/
private String cardName;
}
}
......@@ -18,9 +18,9 @@ import lombok.Builder;
import lombok.Data;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
import java.math.BigDecimal;
@Data
public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{
......
......@@ -18,9 +18,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -101,6 +99,10 @@ public interface ShoppingCartNewService {
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
default BaseResponse<GetMemberInfoResponseVo> getMemberInfo(GetMemberInfoRequestDto request){
return null;
};
/**
* 商品券校验券是否有效
*
......
......@@ -2,6 +2,7 @@ package cn.freemud.service.impl.mcoffee.calculation;
import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.adapter.ShoppingCartMccafeAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*;
......@@ -70,7 +71,6 @@ public class CalculationServiceImpl {
@Autowired
private ActivityAdapter activityAdapter;
@Autowired
private TimeSaleCalculation timeSaleCalculation;
@Autowired
......@@ -83,6 +83,8 @@ public class CalculationServiceImpl {
@Autowired
private MaterialCalculation materialCalculation;
@Autowired
private ShoppingCartMccafeAdapter shoppingCartMccafeAdapter;
@Autowired
private ShoppingCartConvertAdapter shoppingCartConvertAdapter;
@Autowired
private ItemServiceImpl itemService;
......@@ -208,7 +210,8 @@ public class CalculationServiceImpl {
});
for (int i = 0, len = cartGoodsList.size(); i < len; i++) {
CartGoods cartGoods = cartGoodsList.get(i);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartConvertAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
// List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartConvertAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartMccafeAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
cartGoodsDetailDtoList.addAll(cartGoodsDetailDtos);
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getDiscounts();
......
......@@ -92,15 +92,17 @@ public class SetMealCalculation {
}
}
Long amount = null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice()*cartGoods.getQty() + productGroupTotalAmount + materialPrice :
productGroupTotalAmount + productComboTotalAmount + materialPrice;
//如果是商品券商品,不重新计算套餐价格
if (StringUtils.isEmpty(cartGoods.getCouponCode())) {
Long amount = null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice() * cartGoods.getQty() + productGroupTotalAmount + materialPrice :
productGroupTotalAmount + productComboTotalAmount + materialPrice;
cartGoods.setAmount(amount);
}
Long comboOriginalPriceAmount = null != cartGoods.getOriginalAmount() ? cartGoods.getOriginalAmount() :
productComboTotalAmount;
cartGoods.setOriginalAmount(productGroupTotalAmount + comboOriginalPriceAmount + materialPrice);
cartGoods.setOriginalPrice(null != cartGoods.getOriginalPrice() ? cartGoods.getOriginalPrice() :
productComboTotalAmount);
cartGoods.setAmount(amount);
cartGoods.setFinalPrice(null != cartGoods.getFinalPrice() ? cartGoods.getFinalPrice() :
productComboTotalAmount);
......@@ -138,7 +140,7 @@ public class SetMealCalculation {
});
// 套餐优惠明细
for (CartGoods cartGoods : shoppingCartGoodsResponseVo.getProducts()) {
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType())) {
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType()) && StringUtils.isBlank(cartGoods.getCouponCode())) {
// discountAmount=(套餐原价-套餐售价)*数量
// productGroupDiscountAmount=可选商品现价总和
// discountAmount-productGroupDiscountAmount: 当前商品行套餐商品总优惠= 套餐原总价-套餐现总价-套餐可选商品的现总价
......
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