Commit e8e6498f by chongfu.liang

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

# Conflicts:
#	order-management/pom.xml
parents 696d12c9 afd4a4d4
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.18-SNAPSHOT</version>
<version>2.0.19-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.4.38-SNAPSHOT</version>
<version>1.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -1924,6 +1924,8 @@ public class OrderSdkAdapter {
newOrderAccountType=OldOrderAccountType.TOTAL_DISCOUNT.getCode();
case 220:
newOrderAccountType=OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
case 99:
newOrderAccountType=OldOrderAccountType.FREIGHT_COUPON.getCode();
default:
break;
}
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderType
* @Package cn.freemud.enums
* @Description: 订单状态
* @author: liming.guo
* @date: 2018/5/21 14:43
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.sdk.api.assortment.order.enums;
public enum RefundStatus {
APPLY_REFUND(1, "申请退款"),
AGREE_REFUND(2, "同意退款"),
ALREADY_REFUND(3, "已退货"),
COMPLETE_REFUND(4, "退款完成"),
REFUSE_REFUND(5, "拒绝退款");
private Integer code;
private String desc;
RefundStatus(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static RefundStatus getByCode(Integer code) {
for (RefundStatus status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return null;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -95,6 +95,7 @@ public enum ResponseResult {
ORDER_CREATE_FORMID_ISNULL("45018", "0元购formId不能为空"),
ORDER_GET_PAY_EB_CODE_ERROR("45019", "没有配置支付payEbCode"),
ORDER_WXAPP_NOT_ENABLE_COLLECT_GOODS("45020","小程序未开通到店自取"),
ORDER_PARTNER_REFUND_COUNT_ERR("45021","商户退款数量查询失败"),
/**
* 优惠券活动
......
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
......@@ -24,6 +25,12 @@ public class OrderRefundRequest extends BaseConfig {
*/
private Integer orderStatus;
// 申请金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额"
private Long reqAmount = null;
// 实际金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额"
private Long actualAmount = null;
/**
* 退款备注
*/
......@@ -33,4 +40,16 @@ public class OrderRefundRequest extends BaseConfig {
//操作人
private String operator;
/**
* 若为null,默认只做【创建】,售后单状态为【待处理】
若为2,默认做【创建】+【审核通过】,售后单状态为【退货中】
若为5,默认做【创建】+【同意并退货完成】,售后单状态【已退货】
若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
*
*/
private Integer createEvent;
private AfterSalesType afterSalesType;
private Integer orderClient;
}
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountRequest
* @Package com.freemud.sdk.api.assortment.order.request.order
* @Description:
* @author: pengfei.liu
* @date: 2020/10/26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class QueryStoreRefundCountRequest extends BaseConfig {
/**
* 商户编号
*/
private String partnerId;
/**
* 开始时间戳(单位:秒)
*/
private Long startTimestamp;
/**
* 结束时间戳(单位:秒)
*/
private Long endTimestamp;
/**
* 门店id
*/
List<String> storeIds;
}
package com.freemud.sdk.api.assortment.order.response.order;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountResponse
* @Package com.freemud.sdk.api.assortment.order.response.order
* @Description:
* @author: pegnfei.liu
* @date: 2020/10/27
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class QueryPartnerRefundCountResponse {
private String errcode;
private String errmsg;
private PartnerRefundCount data;
@NoArgsConstructor
@Data
public static class PartnerRefundCount {
/**
* 商户编号
*/
private String partnerId;
/**
* 门店退款数量
*/
List<StoreRefundCount> storeRefundCount;
}
@NoArgsConstructor
@Data
public static class StoreRefundCount {
/**
* 门店编号
*/
private String storeId;
/**
* 退款订单数量
*/
private Long count;
}
}
......@@ -108,6 +108,11 @@ public interface OrderCenterSdkService {
BaseOrderResponse orderReject(CancelOrderRequest cancelOrderRequest);
/**
* 订单POS拒单 POS
*/
BaseOrderResponse mcCafeOrderReject(CancelOrderRequest cancelOrderRequest, QueryOrdersResponse.DataBean.OrderBean orderBean);
/**
* 订单配送中 POS
*/
BaseOrderResponse orderSend(BaseQueryOrderRequest baseQueryOrderRequest);
......@@ -339,4 +344,11 @@ public interface OrderCenterSdkService {
*/
BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo);
/**
* 查询商户每个门店未退款的订单数量<br/>
* @param request
* @return
*/
QueryPartnerRefundCountResponse queryRefundCount(QueryStoreRefundCountRequest request);
}
......@@ -18,6 +18,7 @@ import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderProductRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.OrderSpecialExtraAttrRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
......@@ -191,14 +192,20 @@ public class DeliveryAdapter {
String attr = "";
for (OrderSpecialExtraAttrRequest special : extInfo.getSpecialAttrs()) {
if(special.getAttributeName().indexOf("冰") >= 0) {
attr += special.getAttributeName()+",";
attr = special.getAttributeName();
break;
}
}
if(attr.length() > 0) {
attr = attr.substring(0, attr.length()-1);
productName += "("+attr+")";
}
}
if(CollectionUtils.isNotEmpty(productList.getMaterialProduct())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean material : productList.getMaterialProduct()) {
productName += "/"+material.getSpecificationName();
}
}
deliveryProductInfo.setProductName(productName);
deliveryProductInfo.setProductNumber(productList.getNumber());
deliveryProductInfo.setProductPrice(productList.getSalePrice().intValue());
......@@ -221,14 +228,20 @@ public class DeliveryAdapter {
String attr = "";
for (OrderSpecialExtraAttrRequest special : extInfoCombo.getSpecialAttrs()) {
if(special.getAttributeName().indexOf("冰") >= 0) {
attr += special.getAttributeName()+",";
attr = special.getAttributeName();
break;
}
}
if(attr.length() > 0) {
attr = attr.substring(0, attr.length()-1);
productNameCombo += "("+attr+")";
}
}
if(CollectionUtils.isNotEmpty(comboProduct.getMaterialProduct())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean material : comboProduct.getMaterialProduct()) {
productNameCombo += "/"+material.getSpecificationName();
}
}
deliveryComboProductInfo.setProductName(productNameCombo);
deliveryComboProductInfo.setProductNumber(comboProduct.getNumber()/productList.getNumber());
deliveryComboProductInfo.setProductPrice(comboProduct.getSalePrice().intValue());
......
......@@ -34,6 +34,7 @@ import cn.freemud.enums.OrderSourceType;
import cn.freemud.enums.OrderType;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.QueryOrderStatus;
import cn.freemud.enums.RefundStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
......@@ -113,6 +114,8 @@ public class OrderAdapter {
@Value("${mccafe.partner.id}")
private String mcCafePartnerId;
@Value("${mcCafe.refund.interval}")
private String mccafeRefundInterval;
@Value("${saas.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl;
......@@ -1209,7 +1212,36 @@ public class OrderAdapter {
responseVo.setModifiedTime(DateUtil.convert2String(new Date(ordersBean.getGmtModified()), "yyyy-MM-dd HH:mm:ss"));
}
if (ordersBean.getHasRefund() != null && ordersBean.getHasRefund() && CollectionUtils.isNotEmpty(ordersBean.getRefundList())) {
if (CollectionUtils.isNotEmpty(ordersBean.getRefundList())) {
if(mcCafePartnerId.equals(ordersBean.getCompanyId())) {
responseVo.setRefundIntervalTime(Long.valueOf(mccafeRefundInterval));
QueryOrdersResponse.DataBean.OrderBean.RefundBean latestRefundBean = ordersBean.getRefundList().get(0);
for(int i=0;i<ordersBean.getRefundList().size();i++) {
QueryOrdersResponse.DataBean.OrderBean.RefundBean refundBean = ordersBean.getRefundList().get(i);
if (RefundStatus.COMPLETE_REFUND.getCode().equals(refundBean.getStatus())
|| RefundStatus.APPLY_REFUND.getCode().equals(refundBean.getStatus())) {
responseVo.setRid(refundBean.getRid());
responseVo.setRefundStatus(refundBean.getStatus());
responseVo.setRefundStatusDesc(Optional.ofNullable(RefundStatus.getByCode(refundBean.getStatus()))
.map(RefundStatus::getDesc).orElse(""));
responseVo.setRefundReason(refundBean.getReason());
String refundCreateTime = DateUtil.convert2String(new Date(Long.parseLong(refundBean.getCreateTime())),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
responseVo.setRefundCreateTime(refundCreateTime);
break;
} else {
if(new Date(Long.valueOf(refundBean.getCreateTime())).after(new Date(Long.valueOf(latestRefundBean.getCreateTime())))) {
latestRefundBean = refundBean;
}
}
}
if(StringUtils.isBlank(responseVo.getRid())) {
if(new Date().getTime() - Long.parseLong(latestRefundBean.getCreateTime()) > Long.valueOf(mccafeRefundInterval)) {
responseVo.setAfterRefundInterval(true);
}
}
} else {
QueryOrdersResponse.DataBean.OrderBean.RefundBean refundBean = ordersBean.getRefundList().get(0);
responseVo.setRid(refundBean.getRid());
responseVo.setRefundStatus(refundBean.getStatus());
......@@ -1219,6 +1251,14 @@ public class OrderAdapter {
String refundCreateTime = DateUtil.convert2String(new Date(Long.parseLong(refundBean.getCreateTime())),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
responseVo.setRefundCreateTime(refundCreateTime);
}
} else {
responseVo.setAfterRefundInterval(true);
}
//如果是已取消、拒单、已完成的订单,则设置不能申请取消订单
if(OrderStatus.REFUSE.getCode().equals(ordersBean.getStatus())
|| OrderStatus.CALCEL.getCode().equals(ordersBean.getStatus())
|| OrderStatus.COMPLETE.getCode().equals(ordersBean.getStatus())) {
responseVo.setAfterRefundInterval(false);
}
//商品信息转换
convent2ProductVos(ordersBean.getProductList(), responseVo);
......@@ -1238,6 +1278,7 @@ public class OrderAdapter {
Long promotionAmount = 0L;
Long deliveryAmount = 0L;
Long packageAmount = 0L;
Long originalDeliveryAmount = 0L;
//限时特价优惠金额
Long discountLimitAmount = 0L;
Long couponAmount = 0L;
......@@ -1264,6 +1305,7 @@ public class OrderAdapter {
if (OrderAccountType.DELIVERY_AMOUNT.getCode().equals(accountBean.getType())) {
//deliveryAmount = accountBean.getPrice();
deliveryAmount = null != accountBean.getActualCostAmount() ? accountBean.getActualCostAmount() : accountBean.getPrice();
originalDeliveryAmount = accountBean.getPrice();
}
if (OrderAccountType.PACK_AMOUNT.getCode().equals(accountBean.getType())) {
packageAmount = accountBean.getPrice();
......@@ -1286,9 +1328,13 @@ public class OrderAdapter {
customerScorePrompt = decimalFormat.format(customerScoreAmount / 100.0);
// customerScorePrompt = "积分抵扣-¥" + customerScoreAmountStr;
}
if (Integer.valueOf(99).equals(accountBean.getType())) {
responseVo.setFreightCouponName(accountBean.getName());
}
}
}
responseVo.setDeliveryAmount(deliveryAmount);
responseVo.setOriginalDeliveryAmount(originalDeliveryAmount);
responseVo.setPackageAmount(packageAmount);
responseVo.setDiscountLimitAmount(discountLimitAmount);
responseVo.setFullDiscountAmount(fullDiscountAmount);
......@@ -2013,7 +2059,8 @@ public class OrderAdapter {
discountTotalAmount = discountTotalAmount + productDiscount.getDiscountAmount()*productDiscount.getDiscountQty();
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
hasProductCoupon = true;
if("啡常月享卡".equals(productDiscount.getDiscountDesc())) {
Integer extendType = StringUtils.isBlank(productDiscount.getAddInfo())?null:JSON.parseObject(productDiscount.getAddInfo()).getInteger("extendType");
if(null != extendType && (4 == extendType || 5 == extendType)) {
productVo.setCouponName(productDiscount.getDiscountDesc());
} else {
productVo.setName(productDiscount.getDiscountDesc());
......@@ -2263,16 +2310,17 @@ public class OrderAdapter {
}
});
createOrderProductDemoDto.setComboProduct(comboProducts);
} else if(CollectionUtils.isNotEmpty(cartGoodsDetailDto.getMaterialList())) {
//加料商品
createOrderProductDemoDto.setProductType(ProductType.MATERIALPRODUCT_UPPRICE.getCode());
List<CreateOrderProductRequest> materialProducts = new ArrayList<>();
cartGoodsDetailDto.getMaterialList().forEach(product -> {
materialProducts.add(convent2MCCafeOrderProductDemo(product, ProductType.LITTLE_MATERIAL_PRODUCT.getCode()));
});
createOrderProductDemoDto.setMaterialProduct(materialProducts);
}
}
if(CollectionUtils.isNotEmpty(cartGoodsDetailDto.getMaterialList())) {
//加料商品
createOrderProductDemoDto.setProductType(ProductType.MATERIALPRODUCT_UPPRICE.getCode());
List<CreateOrderProductRequest> materialProducts = new ArrayList<>();
cartGoodsDetailDto.getMaterialList().forEach(product -> {
materialProducts.add(convent2MCCafeOrderProductDemo(product, ProductType.LITTLE_MATERIAL_PRODUCT.getCode()));
});
createOrderProductDemoDto.setMaterialProduct(materialProducts);
}
return createOrderProductDemoDto;
}
......
......@@ -449,6 +449,13 @@ public class QueryOrdersResponseDto {
*/
private Integer status;
private String remark;
//商家退单审核 备注
private String decisionReason;
//创建时间
private String createTime;
}
@NoArgsConstructor
......
......@@ -42,6 +42,8 @@ public class ProductVo {
* 商品spu名称
*/
private String spuName;
private String couponName;
/**
* 商品的规格信息加属性信息
*/
......
......@@ -99,6 +99,14 @@ public class QueryOrderResponseVo {
*/
private Long deliveryAmount;
/**
* 配送费原价
*/
private Long originalDeliveryAmount;
/**
* 运费券名称
*/
private String freightCouponName;
/**
* 限时折扣优惠金额
*/
private Long discountLimitAmount;
......@@ -261,6 +269,14 @@ public class QueryOrderResponseVo {
* 订单是否可申请退款 可申请退款条件 :1 .支付未接单 2. 已接单,制作完成,配送中 ,用户可申请退款
*/
private Boolean enableRefund;
/**
* 订单是否可再次申请退款 必须经过规定的间隔时间才可以再次申请
*/
private Boolean afterRefundInterval = false;
/**
* 订单是否可再次申请退款 必须经过规定的间隔时间才可以再次申请
*/
private Long refundIntervalTime = 0l;
private List<ProductVo> products;
......
......@@ -131,6 +131,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Value("${mcCafe.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl;
@Value("${mcCafe.refund.interval}")
private String mccafeRefundInterval;
@Value("${program.backorders_change_order_status_consumer_queue}")
private String backOrdersChangeOrderStatusConsumerQueue;
@Value("${program.backorders_notify_activity_exchange}")
......@@ -1069,13 +1071,22 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
if (enableRefundCodes.contains(orderBean.getStatus()) && PayStatus.HAVE_PAID.getCode().equals(orderBean.getPayStatus())) {
if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
OrderBean.RefundBean refundBean = orderBean.getRefundList().get(0);
if (RefundStatus.APPLY_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "商家正在处理中,请稍后……");
}
if (RefundStatus.REFUSE_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "您的申请已被商家拒绝,请联系门店沟通。");
for(int i=0;i<orderBean.getRefundList().size();i++) {
OrderBean.RefundBean refundBean = orderBean.getRefundList().get(i);
if (RefundStatus.COMPLETE_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已退款完成,无法再次退款");
}
if (RefundStatus.APPLY_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "商家正在处理中,请稍后……");
}
if(new Date().getTime() - Long.valueOf(refundBean.getCreateTime()) < Long.valueOf(mccafeRefundInterval)) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "退款请求太频繁,请稍后再试");
}
}
// if (RefundStatus.REFUSE_REFUND.getCode().equals(refundBean.getStatus())) {
// return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "您的申请已被商家拒绝,请联系门店沟通。");
// }
}
// List<AssortmentOpenPlatformPartnerWxappConfig> partnerWxappConfigs = cacheOpenPlatformPartnerWxappConfigManager.cacheSelectDefaultPage(userInfo.getWxAppId(), "2");
......@@ -1114,23 +1125,23 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
} else if(OldOrderType.TAKE_OUT.getCode().equals(orderBean.getOrderType()) && CancelDeliveryResponseDto.hasCollectMsg.equals(deliveryBaseResponse.getErrmsg())) {
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
cancelOrderRequest.setStoreId(orderBean.getShopId());
cancelOrderRequest.setOrderId(orderBean.getOid());
cancelOrderRequest.setOrderClient(orderAdapter.getNewOrderClient(orderBean.getSource()));
//传入的售后单类型为:2:售中用户取消 8:售后申请
cancelOrderRequest.setAfterSalesType(AfterSalesType.USER_CANCEL);
cancelOrderRequest.setReason(orderRefundVo.getReason());
cancelOrderRequest.setReqRemark(orderRefundVo.getRemarks());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee);
BaseOrderResponse baseResponseDto = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(baseResponseDto.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), baseResponseDto.getErrmsg());
OrderRefundRequest orderRefundRequest = new OrderRefundRequest();
orderRefundRequest.setPartnerId(orderBean.getCompanyId());
orderRefundRequest.setStoreId(orderBean.getShopId());
orderRefundRequest.setOrderId(orderBean.getOid());
orderRefundRequest.setOrderClient(OrderClientType.SAAS.getIndex());
orderRefundRequest.setAfterSalesType(AfterSalesType.USER_CANCEL);
orderRefundRequest.setReason(orderRefundVo.getReason());
orderRefundRequest.setRemark(orderRefundVo.getRemarks());
orderRefundRequest.setOperator(orderBean.getUserName());
orderRefundRequest.setOrderStatus(orderBean.getStatus());
orderRefundRequest.setActualAmount(orderBean.getAmount());
orderRefundRequest.setReqAmount(orderBean.getAmount());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderRefund(orderRefundRequest);
if (baseOrderResponse == null || baseOrderResponse.getData() == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "创建售后单失败");
}
// if (orderBean.getAmount() > 0) {
// sendPosMessage(partnerId, orderBean.getShopId());
......
......@@ -15,34 +15,13 @@ import java.util.List;
public interface CouponClientService {
CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeCouponRequest);
CouponRedeemResponse redeemBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
List<CouponRedeemResponse> redeemBatch(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
CouponRedeemResponse cancelRedeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
McdNetBatchQueryResponse batchQuery(MCCafeCouponRequest mcCafeCouponRequest);
CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponBaseResponse lock(MCCafeCouponLockRequest mcCafeCouponLockRequest);
CouponBaseResponse lockBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
List<CouponBaseResponse> lockBatch(QueryOrdersResponseDto.DataBean.OrderBean orderBean);
CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest);
/**
* 移除卡包
* @param orderBean
* @return
*/
BaseResponse callbackNotify(QueryOrdersResponseDto.DataBean.OrderBean orderBean) ;
}
......@@ -8,6 +8,7 @@ import cn.freemud.management.entities.dto.response.pay.RefundConfig;
import cn.freemud.management.enums.OrderRefundEnum;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
......@@ -17,6 +18,8 @@ import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import org.apache.commons.collections4.CollectionUtils;
......@@ -256,9 +259,13 @@ public class OrderVerifyHandle {
if (ObjectUtils.equals(OrderStatus.CANCEL.getCode(), orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED);
}
if(CollectionUtils.isNotEmpty(orderBean.getRefundList())
&& orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() != 1) {
return ResponseUtil.error(ResponseResult.ORDER_REFUND_NOT_APPLY);
for (QueryOrdersResponse.DataBean.OrderBean.RefundBean refundBean : orderBean.getRefundList()) {
if(RefundStatus.APPLY_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.success();
}
if(RefundStatus.COMPLETE_REFUND.getCode().equals(refundBean.getStatus())) {
return ResponseUtil.error(ResponseResult.AGREE_REFUND_ORDER_FAIL.getCode(), "订单已经退款完成,不能重复申请");
}
}
return ResponseUtil.success();
}
......
......@@ -75,6 +75,34 @@ public class PaymentHandle {
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
}
/**
* 麦咖啡退款
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse mcCafeRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
OrderRefundRequest orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, new BigDecimal(orderBean.getAmount()));
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
}
BaseResponse<OrderRefundResponse> orderRefundResponse;
try {
orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, "");
}catch (Exception ex){
ErrorLog.errorConvertJson(this.getClass(), "refundError", ex);
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (orderRefundResponse==null){
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage());
}
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
}
/**
* 获取退款金额
......
......@@ -7,11 +7,17 @@ import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesCreateEvent;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.AfterSalesOperateReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.enums.RefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
......@@ -147,6 +153,23 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡拒单
*
* @param request
* @param orderBean
* @return
*/
public BaseResponse mcCafeOrderReject(OrderManagerRequest request, PayRefundResponse refundResponse, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//作废订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.mcCafeOrderReject(cancelOrderRequest, orderBean);
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.AFFIRM_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 同意退款
*
* @param request
......@@ -169,6 +192,58 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡同意退款
*
* @param request
* @param refundResponse
* @param orderBean
* @return
*/
public BaseResponse mcCafeRefundAgree(OrderManagerRequest request, PayRefundResponse refundResponse, QueryOrdersResponse.DataBean.OrderBean orderBean) {
BaseQueryOrderRequest refundAgreeRequest = orderSdkAdapter.getRefundAgreeRequest(refundResponse.getRefundId(), request.getReason(), request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = null;
for(int i=0;i<orderBean.getRefundList().size();i++) {
if (RefundStatus.APPLY_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
refundAgreeRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid());
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest);
} else {
baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest);
}
break;
} else if (RefundStatus.COMPLETE_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
baseOrderResponse = new BaseOrderResponse();
baseOrderResponse.setErrcode(Integer.valueOf(ResponseResult.AGREE_REFUND_ORDER_FAIL.getCode()));
baseOrderResponse.setErrmsg("订单已经退款完成,不能重复申请");
break;
}
}
if(null == baseOrderResponse) {
OrderRefundRequest orderRefundRequest = new OrderRefundRequest();
orderRefundRequest.setPartnerId(refundAgreeRequest.getPartnerId());
orderRefundRequest.setStoreId(refundAgreeRequest.getShopId());
orderRefundRequest.setOrderId(refundAgreeRequest.getOrderId());
orderRefundRequest.setOrderClient(OrderClientType.SAAS.getIndex());
orderRefundRequest.setAfterSalesType(AfterSalesType.PARTNER_CANCEL);
orderRefundRequest.setReason(refundAgreeRequest.getReason());
orderRefundRequest.setOperator(refundAgreeRequest.getOperator());
orderRefundRequest.setOrderStatus(orderBean.getStatus());
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
orderRefundRequest.setCreateEvent(4);
} else {
orderRefundRequest.setCreateEvent(5);
}
baseOrderResponse = orderCenterSdkService.orderRefund(orderRefundRequest);
}
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.AGREE_REFUND_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 拒绝退款
* @param request
* @param orderBean
......@@ -184,6 +259,33 @@ public class SaasOrderHandle {
}
/**
* 麦咖啡拒绝退款
* @param request
* @param orderBean
* @return
*/
public BaseResponse mcCafeRefundReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean);
BaseOrderResponse baseOrderResponse = null;
for(int i=0;i<orderBean.getRefundList().size();i++) {
if (RefundStatus.APPLY_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid());
baseOrderResponse = orderCenterSdkService.orderRefundReject(rejectRefundRequest);
}
if (RefundStatus.COMPLETE_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
baseOrderResponse = new BaseOrderResponse();
baseOrderResponse.setErrcode(100);
baseOrderResponse.setErrmsg("success");
}
}
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.REJECT_REFUND_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 取消订单
*/
public BaseResponse orderCancel(OrderManagerRequest request, PayRefundResponse refundResponse,QueryOrdersResponse.DataBean.OrderBean orderBean) {
......
......@@ -123,29 +123,9 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
}else {
//支付退款
PayRefundResponse refundResponse = paymentHandle.refund(orderManagerRequest, orderBean);
//随单购月卡进行卡作废
if (CollectionUtils.isNotEmpty(orderBean.getOrderCostDetailList())){
OrderCostResp orderCostResp = orderBean.getOrderCostDetailList().stream().filter(t -> 10 == t.getCostType()).findFirst().orElse(null);
if (orderCostResp != null){
String note = orderCostResp.getNote();
if (StringUtils.isNotEmpty(note)) {
// 调用会员作废券接口
ForbiddenCardCodeRequest cardCodeRequest = new ForbiddenCardCodeRequest();
cardCodeRequest.setMemberId(orderBean.getUserId());
cardCodeRequest.setPartnerId(macCafePartnerId);
List<ForbiddenCardCodeRequest.CardInfo> list = new ArrayList<>();
ForbiddenCardCodeRequest.CardInfo cardInfo = new ForbiddenCardCodeRequest.CardInfo();
cardInfo.setCard_code(note);
cardInfo.setCard_id(macCafeCardId);
list.add(cardInfo);
cardCodeRequest.setCardInfo(list);
customerMcCafeClient.forbiddenCardCodeForQujia(cardCodeRequest);
}
}
}
PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(orderManagerRequest, orderBean);
//订单拒单
saasOrderHandle.orderReject(orderManagerRequest, refundResponse, orderBean);
saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean);
//冲正库存
stockHandle.revert(orderManagerRequest, orderBean);
// 券码解冻
......@@ -208,9 +188,9 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//支付退款
PayRefundResponse refund = paymentHandle.refund(request, orderBean);
PayRefundResponse refund = paymentHandle.mcCafeRefund(request, orderBean);
//订单拒单
saasOrderHandle.refundAgree(request,refund, orderBean);
saasOrderHandle.mcCafeRefundAgree(request,refund, orderBean);
//冲正库存
stockHandle.revert(request, orderBean);
return ResponseUtil.success();
......@@ -226,7 +206,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderRejectRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//拒绝退款
saasOrderHandle.refundReject(request,orderBean);
saasOrderHandle.mcCafeRefundReject(request,orderBean);
return ResponseUtil.success();
}
......@@ -237,7 +217,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//支付退款
PayRefundResponse refund = paymentHandle.refund(request, orderBean);
PayRefundResponse refund = paymentHandle.mcCafeRefund(request, orderBean);
//订单拒单
saasOrderHandle.orderCancel(request,refund, orderBean);
//冲正库存
......
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.4.38-SNAPSHOT</version>
<version>1.5.0-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -78,4 +78,9 @@ public class AfterSalesOrderResp {
private Integer weight;
//售后单阶段类型 1:售前 2:售中 3:售后
private Byte afterSalesStageType;
/**
* 门店ID
*/
private String storeId;
}
......@@ -133,6 +133,8 @@ public class ShoppingCartConvertAdapter {
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);
......
......@@ -840,14 +840,6 @@ public class ShoppingCartMCoffeeServiceImpl {
}else {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COMMON_GOODS.getGoodsType());
}
if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), orderItem.getProductType()) || ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), orderItem.getProductType())) {
// 获取套餐子商品列表
cartGoods.setProductComboList(new ArrayList<>());
cartGoods.setProductGroupList(new ArrayList<>());
String partnerProductId = orderItem.getProductId() + "_" + orderItem.getProductSeq();
List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
comboProducts.forEach(combo -> getComboxGoods(cartGoods, combo));
}
if(("早餐啡常搭".equals(orderItem.getProductName()) && "早餐啡常搭".equals(orderItem.getProductSpecName()))
|| ("啡常搭".equals(orderItem.getProductName()) && "啡常搭".equals(orderItem.getProductSpecName()))) {
cartGoods.setName(orderItem.getProductName());
......@@ -858,6 +850,24 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setSkuName(orderItem.getProductSpecName());
cartGoods.setSpuName(orderItem.getProductName());
}
if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), orderItem.getProductType())
|| ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), orderItem.getProductType())) {
// 获取套餐子商品列表
cartGoods.setProductComboList(new ArrayList<>());
cartGoods.setProductGroupList(new ArrayList<>());
String partnerProductId = orderItem.getProductId() + "_" + orderItem.getProductSeq();
List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
comboProducts.forEach(combo -> {
getComboxGoods(cartGoods, combo, orderItemList);
});
}
if (ObjectUtils.equals(88, orderItem.getProductType())) {
// 获取套餐子商品列表
cartGoods.setProductMaterialList(new ArrayList<>());
String partnerProductId = orderItem.getProductId() + "_" + orderItem.getProductSeq();
List<OrderItemResp> materialProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
materialProducts.forEach(material -> getMaterialGoods(cartGoods, material));
}
cartGoodsList.add(cartGoods);
}
......@@ -865,7 +875,7 @@ public class ShoppingCartMCoffeeServiceImpl {
}
private CartGoods.ComboxGoods getComboxGoods(CartGoods cartGoods, OrderItemResp orderItemResp) {
private CartGoods.ComboxGoods getComboxGoods(CartGoods cartGoods, OrderItemResp orderItemResp, List<OrderItemResp> orderItemList) {
CartGoods.ComboxGoods comboxGoods = new CartGoods.ComboxGoods();
comboxGoods.setSkuId(orderItemResp.getProductSpec());
comboxGoods.setGoodsId(orderItemResp.getProductId());
......@@ -896,10 +906,40 @@ public class ShoppingCartMCoffeeServiceImpl {
if (map.containsKey("isFixedProduct") && !(boolean) map.get("isFixedProduct")) {
cartGoods.getProductGroupList().add(comboxGoods);
}
if (ObjectUtils.equals(88, orderItemResp.getProductType())) {
comboxGoods.setProductMaterialList(new ArrayList<>());
String partnerProductId = orderItemResp.getProductId() + "_" + orderItemResp.getProductSeq();
List<OrderItemResp> materialProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
materialProducts.forEach(material -> getMaterialGoods(comboxGoods, material));
}
return comboxGoods;
}
private CartGoods.MaterialGoods getMaterialGoods(CartGoods cartGoods, OrderItemResp orderItemResp) {
CartGoods.MaterialGoods materialGoods = new CartGoods.MaterialGoods();
materialGoods.setSpuId(orderItemResp.getProductId());
materialGoods.setCustomerCode(orderItemResp.getThirdProductId());
materialGoods.setFinalPrice(orderItemResp.getSalePrice().longValue());
materialGoods.setOriginalPrice(orderItemResp.getProductPrice().longValue());
materialGoods.setSpuName(orderItemResp.getProductName());
cartGoods.getProductMaterialList().add(materialGoods);
return materialGoods;
}
private CartGoods.MaterialGoods getMaterialGoods(CartGoods.ComboxGoods comboGoods, OrderItemResp orderItemResp) {
CartGoods.MaterialGoods materialGoods = new CartGoods.MaterialGoods();
materialGoods.setSpuId(orderItemResp.getProductId());
materialGoods.setCustomerCode(orderItemResp.getThirdProductId());
materialGoods.setFinalPrice(orderItemResp.getSalePrice().longValue());
materialGoods.setOriginalPrice(orderItemResp.getProductPrice().longValue());
materialGoods.setSpuName(orderItemResp.getProductName());
comboGoods.getProductMaterialList().add(materialGoods);
return materialGoods;
}
private void packgeAdditional(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) {
ArrayList<ShoppingCartInfoRequestVo.SendGoods> senGoods = new ArrayList<>();
......@@ -1242,6 +1282,7 @@ public class ShoppingCartMCoffeeServiceImpl {
CartGoods.MaterialGoods materialGoods = new CartGoods.MaterialGoods();
materialGoods.setSpuId(materialRequestVo.getSpuId());
materialGoods.setGroupId(materialRequestVo.getGroupId());
materialGoods.setCustomerCode(materialRequestVo.getCustomerCode());
materialGoodsList.add(materialGoods);
}
cartGoods.setProductMaterialList(materialGoodsList);
......
......@@ -473,8 +473,9 @@ public class CalculationServiceImpl {
totalOriginalAmount += originalAmount;
totalAmount += amount;
totalPackgeAmount += packAmount;
cartGoods.setOriginalAmount(originalAmount);
cartGoods.setAmount(amount);
long materialPrice = getMaterialPrice(cartGoods);
cartGoods.setOriginalAmount(originalAmount + materialPrice);
cartGoods.setAmount(amount + materialPrice);
cartGoods.setPackPrice(packAmount);
}
shoppingCartGoodsResponseVo.setOriginalTotalAmount(calculationDiscount == null ? totalOriginalAmount : calculationDiscount.getOriginalTotalAmount());
......@@ -489,4 +490,17 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscount == null ? 0L :calculationDiscount.getDistributionFee());
}
private Long getMaterialPrice(CartGoods cartGoods){
Long materialPrice = 0L;
//单品、多规格加料
if(CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())){
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()){
materialPrice+= materialGoods.getFinalPrice() * cartGoods.getQty();
}
}
return materialPrice;
}
}
......@@ -69,9 +69,24 @@ public class SetMealCalculation {
long productComboAmount = cartGoods.getProductComboList().stream().mapToLong(t -> t.getFinalPrice() * t.getQty()).sum();
long productComboTotalAmount = productComboAmount * cartGoods.getQty();
cartGoods.setOriginalAmount(productGroupTotalAmount + productComboTotalAmount);
long materialPrice = 0l;
//套餐固定商品加料
if(CollectionUtils.isNotEmpty(cartGoods.getProductComboList())){
for (CartGoods.ComboxGoods comboxGoods : cartGoods.getProductComboList()){
Long comboxmaterialPrice = 0L;
if(CollectionUtils.isNotEmpty(comboxGoods.getProductMaterialList())){
for (CartGoods.MaterialGoods materialGoods : comboxGoods.getProductMaterialList()){
comboxmaterialPrice+= materialGoods.getFinalPrice() * cartGoods.getQty();
}
}
comboxGoods.setAmount(comboxGoods.getAmount()+comboxmaterialPrice);
materialPrice = materialPrice + comboxmaterialPrice;
}
}
cartGoods.setOriginalAmount(productGroupTotalAmount + productComboTotalAmount + materialPrice);
cartGoods.setOriginalPrice(productComboTotalAmount);
cartGoods.setAmount(productGroupTotalAmount + productComboTotalAmount);
cartGoods.setAmount(productGroupTotalAmount + productComboTotalAmount + materialPrice);
cartGoods.setFinalPrice(productComboTotalAmount);
// 套餐(固定商品)现价
......
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