Commit 039fb6e3 by xiaoer.li@freemud.com

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

parents a77edd71 cbf43f52
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId> <artifactId>storecenter-sdk</artifactId>
<version>3.1.1.RELEASE</version> <version>3.2.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
......
...@@ -15,6 +15,10 @@ package cn.freemud.adapter; ...@@ -15,6 +15,10 @@ package cn.freemud.adapter;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeRequestDto; import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeRequestDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto; import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto; import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto;
...@@ -22,16 +26,19 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto; ...@@ -22,16 +26,19 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto;
import cn.freemud.entities.dto.promotion.CouponPromotionDto; import cn.freemud.entities.dto.promotion.CouponPromotionDto;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.*;
import cn.freemud.enums.ActivityShareType;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo; import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -42,6 +49,9 @@ import java.util.stream.Collectors; ...@@ -42,6 +49,9 @@ import java.util.stream.Collectors;
@Component @Component
public class CouponAdapter { public class CouponAdapter {
@Autowired
private OrderAdapter orderAdapter;
public CouponListDto convert2CouponListDto(String userId, String partnerId) { public CouponListDto convert2CouponListDto(String userId, String partnerId) {
CouponListDto couponListDto = new CouponListDto(); CouponListDto couponListDto = new CouponListDto();
couponListDto.setPartnerCode(partnerId); couponListDto.setPartnerCode(partnerId);
...@@ -557,4 +567,147 @@ public class CouponAdapter { ...@@ -557,4 +567,147 @@ public class CouponAdapter {
couponPromotionDto.setFlg(flg); couponPromotionDto.setFlg(flg);
return couponPromotionDto; return couponPromotionDto;
} }
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, CreateOrderAccountRequest accountBean) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(accountBean.getAccountType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = org.apache.commons.lang3.StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(productBean.getDiscountList())) {
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = productBean.getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
products.add(mcCafeProductRedeemVo);
}
}
}
}
MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
mcCafeCouponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
mcCafeCouponRequest.setStore_id(orderBean.getShopId());
mcCafeCouponRequest.setStation_id("-1");
mcCafeCouponRequest.setOperator_id("-1");
// 订单号
mcCafeCouponRequest.setTrans_id(orderBean.getOid());
mcCafeCouponRequest.setChannel(OrderClientType.ALIPAY.getIndex().toString().equals(orderBean.getOrderClient())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
List<MCCafeTransactionVo> transactions = new ArrayList<>();
MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo();
mcCafeTransactionVo.setCode(accountBean.getAccountId());
mcCafeTransactionVo.setTotalAmount(-accountBean.getPrice());
if (CollectionUtils.isNotEmpty(products)) {
mcCafeTransactionVo.setProducts(products);
}
transactions.add(mcCafeTransactionVo);
mcCafeCouponRequest.setTransactions(transactions);
mcCafeCouponRequest.setSign("skip");
mcCafeCouponRequest.setAppFlag("kgd.N");
mcCafeCouponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
return mcCafeCouponRequest;
}
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = org.apache.commons.lang3.StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(productBean.getDiscountList())) {
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = productBean.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;
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
products.add(mcCafeProductRedeemVo);
}
}
}
}
MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
mcCafeCouponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
mcCafeCouponRequest.setStore_id(orderBean.getShopId());
mcCafeCouponRequest.setStation_id("-1");
mcCafeCouponRequest.setOperator_id("-1");
// 订单号
mcCafeCouponRequest.setTrans_id(orderBean.getOid());
mcCafeCouponRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
List<MCCafeTransactionVo> transactions = new ArrayList<>();
MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo();
mcCafeTransactionVo.setCode(accountBean.getAccountId());
mcCafeTransactionVo.setTotalAmount(-accountBean.getPrice());
if (CollectionUtils.isNotEmpty(products)) {
mcCafeTransactionVo.setProducts(products);
}
transactions.add(mcCafeTransactionVo);
mcCafeCouponRequest.setTransactions(transactions);
mcCafeCouponRequest.setSign("skip");
mcCafeCouponRequest.setAppFlag("kgd.N");
mcCafeCouponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
return mcCafeCouponRequest;
}
public MCCafeCouponLockRequest convert2MCCafeCouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, CreateOrderAccountRequest accountBean) {
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponLockRequest.setReqType(CouponReqTypeEnum.UNLOCK.getCode());
mcCafeCouponLockRequest.setPartnerId(orderBean.getCompanyId());
mcCafeCouponLockRequest.setStoreId(orderBean.getShopId());
// 订单号
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
mcCafeCouponLockRequest.setStationId("-1");
mcCafeCouponLockRequest.setSign("skip");
return mcCafeCouponLockRequest;
}
public MCCafeCouponLockRequest convert2MCCafeCouponLockRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean) {
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponLockRequest.setReqType(CouponReqTypeEnum.UNLOCK.getCode());
mcCafeCouponLockRequest.setPartnerId(orderBean.getCompanyId());
mcCafeCouponLockRequest.setStoreId(orderBean.getShopId());
// 订单号
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
mcCafeCouponLockRequest.setStationId("-1");
mcCafeCouponLockRequest.setSign("skip");
return mcCafeCouponLockRequest;
}
} }
...@@ -13,7 +13,7 @@ import java.util.List; ...@@ -13,7 +13,7 @@ import java.util.List;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class MCCafeConponRequest { public class MCCafeCouponRequest {
/** /**
* 接口版本 * 接口版本
*/ */
......
...@@ -63,6 +63,7 @@ public enum ResponseResult { ...@@ -63,6 +63,7 @@ public enum ResponseResult {
STORE_DISCONTENT_DELIVERY_CUP("43016", "不满足起送杯数"), STORE_DISCONTENT_DELIVERY_CUP("43016", "不满足起送杯数"),
STORE_CLOSED_FOREVER("43017", "门店已关闭,请选择其他门店"), STORE_CLOSED_FOREVER("43017", "门店已关闭,请选择其他门店"),
STORE_CLOSED_THE_NIGHT("43018", "门店已打烊,请选择其他门店"), STORE_CLOSED_THE_NIGHT("43018", "门店已打烊,请选择其他门店"),
STORE_DELIVERY_HOUR_ERROR("43019", "门店外卖时间错误"),
/** /**
* 购物车状态码 * 购物车状态码
...@@ -148,6 +149,10 @@ public enum ResponseResult { ...@@ -148,6 +149,10 @@ public enum ResponseResult {
ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT("45060", "订单非待支付状态, 创建预支付失败"), ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT("45060", "订单非待支付状态, 创建预支付失败"),
ORDER_TAKEMEALTIME_INVALID("45061", "你的隔日预约时间有误,请重新刷新后选择!"), ORDER_TAKEMEALTIME_INVALID("45061", "你的隔日预约时间有误,请重新刷新后选择!"),
ORDER_CONVERT_ERROR("45062", "查询订单结果转换失败"), ORDER_CONVERT_ERROR("45062", "查询订单结果转换失败"),
ORDER_TAKE_MEAL_TIME_ERROR("450062", "你的到店取餐时间异常,请重新选择!"),
ORDER_MEALTIME_MISSING("450063", "你的取餐方式或取餐时间异常,请重新选择!"),
ORDER_TAKE_OUT_TIME_ERROR("450062", "你的外卖送达时间异常,请重新选择!"),
/** /**
* 支付 * 支付
*/ */
......
...@@ -17,7 +17,7 @@ import cn.freemud.base.util.DateUtil; ...@@ -17,7 +17,7 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.StoreConstant; import cn.freemud.constant.StoreConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.order.BusinessDate; import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
...@@ -74,10 +74,6 @@ import java.util.stream.Collectors; ...@@ -74,10 +74,6 @@ import java.util.stream.Collectors;
@Component @Component
public class CheckMCCafeOrder { public class CheckMCCafeOrder {
// 配送费逻辑是否使用旧的
@Value("${store.delivery.use.old}")
private boolean storeDeliveryUseOld;
@Autowired @Autowired
private StoreTableNumberManager storeTableNumberManager; private StoreTableNumberManager storeTableNumberManager;
@Autowired @Autowired
...@@ -123,8 +119,6 @@ public class CheckMCCafeOrder { ...@@ -123,8 +119,6 @@ public class CheckMCCafeOrder {
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN); throw new ServiceException(ResponseResult.NOT_LOGIN);
} }
//校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(),userLoginInfoDto.getMemberId(),createOrderVo.getCardCode());
createOrderVo.setUserId(userLoginInfoDto.getMemberId()); createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto; return userLoginInfoDto;
...@@ -207,12 +201,7 @@ public class CheckMCCafeOrder { ...@@ -207,12 +201,7 @@ public class CheckMCCafeOrder {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY); throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
} }
//获取门店配送信息 //获取门店配送信息
StoreDeliveryInfoDto storeDeliveryInfoDto = null; StoreDeliveryInfoDto storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo);
if (storeDeliveryUseOld) {
storeDeliveryInfoDto = getStoreDeliveryInfo(storeResponseDto, config, appId);
} else {
storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo);
}
//todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用 //todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用
//外卖起送条件(1:杯数,2:金额) //外卖起送条件(1:杯数,2:金额)
if (!Arrays.asList(1, 2).contains(storeDeliveryInfoDto.getDeliveryCondition())) { if (!Arrays.asList(1, 2).contains(storeDeliveryInfoDto.getDeliveryCondition())) {
...@@ -246,61 +235,75 @@ public class CheckMCCafeOrder { ...@@ -246,61 +235,75 @@ public class CheckMCCafeOrder {
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState())) { if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState())) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE); throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
} }
// 校验下单时间是否在营业时间内
checkOrderExpectTime(storeResponseDto, new Date());
// 外卖单选择立即送达的话,下单时间必须在店铺外卖时间内 // 外卖单选择立即送达的话,下单时间必须在店铺外卖时间内
if(createOrderVo.getOrderType().compareTo(CreateOrderType.TAKE_OUT.getCode()) == 0) { if(createOrderVo.getOrderType().compareTo(CreateOrderType.TAKE_OUT.getCode()) == 0) {
checkTakeOutTime(storeResponseDto, new Date(), new Date()); checkTakeOutTime(storeResponseDto, new Date());
} }
} }
//有预约时间的自提单 //有预约时间的自提单
else if(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) && StringUtils.isNotBlank(takeMealTime)) { else if(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) && StringUtils.isNotBlank(takeMealTime)) {
// 设置预约时间 // 设置预约时间
Date takeMealDateTime = getOrderExpectTime(takeMealFlag,takeMealTime,createOrderVo.getExpectTime(), Integer minute = 0;
CreateOrderType.getByCode(createOrderVo.getOrderType()),storeResponseDto.getServiceTime(),storeResponseDto); try {
minute = Integer.parseInt(takeMealTime);
} catch (Exception e) {
throw new ServiceException(ResponseResult.ORDER_TAKE_MEAL_TIME_ERROR);
}
if(null == minute || 0 == minute) {
throw new ServiceException(ResponseResult.ORDER_TAKE_MEAL_TIME_ERROR);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.MINUTE, minute);
Date takeMealDateTime = calendar.getTime();
if(takeMealDateTime != null){ if(takeMealDateTime != null){
//校验预约时间 //校验营业时间
checkOrderExpectTime(createOrderVo,storeResponseDto,takeMealDateTime); checkOrderExpectTime(storeResponseDto, takeMealDateTime);
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间 //重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
createOrderVo.setExpectTime(DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss")); createOrderVo.setExpectTime(DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss"));
} else {
throw new ServiceException(ResponseResult.ORDER_TAKE_MEAL_TIME_ERROR);
} }
} }
//有预约时间的外卖单 //有预约时间的外卖单
else if(CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) && StringUtils.isNotBlank(expectTime)) { else if(CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) && StringUtils.isNotBlank(expectTime)) {
Date takeMealDateTime = DateUtil.convert2Date(createOrderVo.getExpectTime(), "yyyy-MM-dd HH:mm:ss"); Date takeOutDateTime = DateUtil.convert2Date(createOrderVo.getExpectTime(), "yyyy-MM-dd HH:mm:ss");
if(takeOutDateTime != null) {
//校验营业时间
checkOrderExpectTime(storeResponseDto, takeOutDateTime);
//校验外卖时间
checkTakeOutTime(storeResponseDto, takeOutDateTime);
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
createOrderVo.setExpectTime(DateUtil.convert2String(takeOutDateTime, "yyyy-MM-dd HH:mm:ss"));
} else { } else {
throw new ServiceException(ResponseResult.PARAMETER_MISSING); throw new ServiceException(ResponseResult.ORDER_TAKE_OUT_TIME_ERROR);
}
} else {
throw new ServiceException(ResponseResult.ORDER_MEALTIME_MISSING);
} }
return pushOrderTime; return pushOrderTime;
} }
public void checkOrderExpectTime(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, Date takeMealDateTime) { public void checkOrderExpectTime(StoreResponse.BizVO storeResponseDto, Date takeMealDateTime) {
if (takeMealDateTime == null) { if (takeMealDateTime == null) {
return; return;
} }
//获取门店当天营业时间 //获取门店预约当天营业时间
Date todayEndDate = null; List<String> businessTimes = storeCenterService.getBusinessTimeByDate(com.freemud.application.sdk.api.util.DateUtil.convert2String
List<String> todayBusinessTimes = storeCenterService.getTodayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay()); (takeMealDateTime, com.freemud.application.sdk.api.util.DateUtil.FORMAT_yyyyMMdd_date), storeResponseDto.getBusinessHours());
if (CollectionUtils.isEmpty(todayBusinessTimes)) { if (CollectionUtils.isEmpty(businessTimes)) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR); throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
} }
BusinessDate businessDate = getStoreBusinessDate(todayBusinessTimes.get(todayBusinessTimes.size() - 1), true);
todayEndDate = businessDate.getEndDate();
//在当天营业时间内
boolean expectTimeInTodayBusinessTime = true;
Date date = new Date();
Date newDate = DateUtil.convert2Date(date, DateUtil.FORMAT_yyyyMMdd_date);
newDate = DateUtil.addDays(newDate, 1);
//隔天预约(在明日凌晨之后且在门店营业结束之后)
if (takeMealDateTime.after(todayEndDate) && takeMealDateTime.after(newDate)) {
expectTimeInTodayBusinessTime = false;
}
if (expectTimeInTodayBusinessTime) {
boolean inTodayBusinessTime = true; boolean inTodayBusinessTime = true;
for (String todayTime : todayBusinessTimes) { for (String businessTime : businessTimes) {
//每段营业时间校验 //每段营业时间校验
BusinessDate businessDate2 = getStoreBusinessDate(todayTime, true); BusinessDate businessDate = getStoreBusinessDate(businessTime, takeMealDateTime, 1);
if (takeMealDateTime.getTime() >= businessDate2.getStartDate().getTime() if (takeMealDateTime.getTime() >= businessDate.getStartDate().getTime()
&& takeMealDateTime.getTime() <= businessDate2.getEndDate().getTime()) { && takeMealDateTime.getTime() <= businessDate.getEndDate().getTime()) {
inTodayBusinessTime = false; inTodayBusinessTime = false;
break; break;
} }
...@@ -309,116 +312,42 @@ public class CheckMCCafeOrder { ...@@ -309,116 +312,42 @@ public class CheckMCCafeOrder {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD); throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
} }
} }
//隔天预约
if (!expectTimeInTodayBusinessTime) {
List<String> nextDayBusinessTimes = storeCenterService.getNextDayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay());
boolean inNextDayBusinessTime = true;
for (String nextDayTime : nextDayBusinessTimes) {
BusinessDate storeNextBusinessDate = getStoreBusinessDate(nextDayTime, false);
if (takeMealDateTime.getTime() >= storeNextBusinessDate.getStartDate().getTime()
&& takeMealDateTime.getTime() <= storeNextBusinessDate.getEndDate().getTime()) {
inNextDayBusinessTime = false;
break;
}
}
if (inNextDayBusinessTime) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVALID);
}
}
if (CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())) {
checkTakeOutTime(storeResponseDto, date, takeMealDateTime);
}
}
/** /**
* 检验订单是否在外卖时间内 * 检验订单是否在外卖时间内
* @param storeResponseDto 店铺信息 * @param storeResponseDto 店铺信息
* @param now 当前时间
* @param expectTime 预约单送达时间/即时单下单时间 * @param expectTime 预约单送达时间/即时单下单时间
*/ */
private void checkTakeOutTime(StoreResponse.BizVO storeResponseDto, Date now, Date expectTime) { private void checkTakeOutTime(StoreResponse.BizVO storeResponseDto, Date expectTime) {
String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",") //获取门店预约当天外卖时间
.replace("_", ","); List<String> deliveryTimes = storeCenterService.getBusinessTimeByDate(com.freemud.application.sdk.api.util.DateUtil.convert2String
String[] deliverys = deliveryStr.split(","); (expectTime, com.freemud.application.sdk.api.util.DateUtil.FORMAT_yyyyMMdd_date), storeResponseDto.getDeliveryHours());
Date deliveryStartDate = null; if (CollectionUtils.isEmpty(deliveryTimes)) {
Date deliveryEndDate = null;
if (deliverys.length == 2) {
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
String startDateTimeStr = yyyyMMdd.format(now) + " " + deliverys[0] + ":00";
String endDateTimeStr = yyyyMMdd.format(now) + " " + deliverys[1] + ":00";
try {
deliveryStartDate = hhmmss.parse(startDateTimeStr);
deliveryEndDate = hhmmss.parse(endDateTimeStr);
} catch (ParseException e) {
LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage());
}
}
if (deliveryStartDate == null || deliveryEndDate == null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
// 校验预约配送时间
if (expectTime.before(deliveryStartDate) || expectTime.after(deliveryEndDate)) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
}
public Date getOrderExpectTime(String takeMealFlag,String takeMealTimes,String expectTime,
CreateOrderType createOrderType,Integer serviceTime,StoreResponse.BizVO storeResponseDto){
Date takeMealDateTime = null;
//0=到店单我已到店、外卖单尽快送出
if (StringUtils.isNotBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
return takeMealDateTime;
}
if (StringUtils.isBlank(takeMealTimes) && StringUtils.isBlank(expectTime)) {
return takeMealDateTime;
}
//兼容门店隔日预约单格式修改,HH:mm变yyyy-MM-dd HH:mm,前端未升级,未按要求传
if (StringUtils.isNotBlank(takeMealTimes) && takeMealTimes.length() > 5) {
expectTime = takeMealTimes+":00";
}
Date date = new Date();
//takeMealTimes格式必须为HH:mm
if (StringUtils.isNotBlank(takeMealTimes) && takeMealTimes.length() <= 5) {
StringBuffer takeMealTime = new StringBuffer("");
takeMealTime = takeMealTime.append(DateUtil.convert2String(date, "yyyy-MM-dd"))
.append(" ").append(takeMealTimes).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
Date newDate = DateUtil.convert2Date(date,DateUtil.FORMAT_yyyyMMdd_date);
newDate = DateUtil.addDays(newDate,1);
//获取门店当天营业结束时间
Date todayEndDate =null;
List<String> todayBusinessTimes = storeCenterService.getTodayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay());
if(CollectionUtils.isEmpty(todayBusinessTimes)){
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR); throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
} }
BusinessDate businessDate = getStoreBusinessDate(todayBusinessTimes.get(todayBusinessTimes.size()-1),true); boolean inTodayBusinessTime = true;
todayEndDate = businessDate.getEndDate(); for (String deliveryTime : deliveryTimes) {
//每段营业时间校验
//隔天营业的预约时间处理 计算出预约时间在当前时间之前,预约时间加1天 newDate.before(todayEndDate)=隔天营业 BusinessDate deliveryDate = getStoreBusinessDate(deliveryTime, expectTime, 2);
if(takeMealDateTime != null && takeMealDateTime.before(date) && newDate.before(todayEndDate)){ if (expectTime.getTime() >= deliveryDate.getStartDate().getTime()
takeMealDateTime = DateUtil.addDays(takeMealDateTime,1); && expectTime.getTime() <= deliveryDate.getEndDate().getTime()) {
} inTodayBusinessTime = false;
} break;
if (StringUtils.isNotBlank(expectTime)) {
takeMealDateTime = DateUtil.convert2Date(expectTime, "yyyy-MM-dd HH:mm:ss");
} }
//当顾客指定送达时间小于当前时间,订单记录类型为即时单
if (takeMealDateTime != null && takeMealDateTime.before(date)) {
takeMealDateTime = null;
} }
//当顾客指定送达时间小于当前时间+提前预约时间时,订单记录类型为即时单 if (inTodayBusinessTime) {
if (CreateOrderType.TAKE_OUT.equals(createOrderType) && takeMealDateTime != null throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
&& serviceTime != null && takeMealDateTime.before(DateUtil.addMinutes(date,serviceTime))) {
takeMealDateTime = null;
} }
return takeMealDateTime;
} }
public BusinessDate getStoreBusinessDate(String businessHoursDay, boolean today){ /**
*
* @param businessHoursDay 营业时间段
* @param date 点餐时间
* @param dateType 时间类型 1营业时间 2外卖时间
* @return
*/
public BusinessDate getStoreBusinessDate(String businessHoursDay, Date date, Integer dateType){
BusinessDate businessDate = new BusinessDate(); BusinessDate businessDate = new BusinessDate();
//设置营业开始和结束时间 //设置营业开始和结束时间
String businessHourStr = businessHoursDay.replace("-", ",").replace("_", ","); String businessHourStr = businessHoursDay.replace("-", ",").replace("_", ",");
...@@ -426,28 +355,16 @@ public class CheckMCCafeOrder { ...@@ -426,28 +355,16 @@ public class CheckMCCafeOrder {
if (businessHours.length != 2) { if (businessHours.length != 2) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND); throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
} }
Date date = new Date();
if(!today){
date = DateUtil.addDays(date,1);
}
String startDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[0] + ":00"; String startDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[0] + ":00";
String endDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[1] + ":00"; String endDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[1] + ":00";
Date startDateTime ; Date startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
Date endDateTime ; Date endDateTime = DateUtil.convert2Date(endDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS); if(null == startDateTime || null == endDateTime) {
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(1 == dateType) {
try {
endDateTime = hhmmss.parse(endDateTimeStr);
} catch (ParseException e) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR); throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
} else {
throw new ServiceException(ResponseResult.STORE_DELIVERY_HOUR_ERROR);
} }
//隔天营业时间处理
if(startDateTime.after(endDateTime)){
endDateTime = DateUtil.addDays(endDateTime,1);
}
// 校验门店是否打烊,打烊了则不让操作
if (startDateTime == null || endDateTime == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
} }
businessDate.setStartDate(startDateTime); businessDate.setStartDate(startDateTime);
businessDate.setEndDate(endDateTime); businessDate.setEndDate(endDateTime);
...@@ -522,12 +439,6 @@ public class CheckMCCafeOrder { ...@@ -522,12 +439,6 @@ public class CheckMCCafeOrder {
public ShoppingCartGoodsDto getMCCafeShoppingCartGoodsDto(CreateOrderVo createOrderVo) { public ShoppingCartGoodsDto getMCCafeShoppingCartGoodsDto(CreateOrderVo createOrderVo) {
ShoppingCartInfoRequestVo.BuyMemberCard buyMemberCard = null;
if (createOrderVo.getBuyMemberCard() != null) {
buyMemberCard = new ShoppingCartInfoRequestVo.BuyMemberCard();
buyMemberCard.setPaidId(createOrderVo.getBuyMemberCard().getPaidId());
buyMemberCard.setRuleId(createOrderVo.getBuyMemberCard().getRuleId());
}
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = ShoppingCartInfoRequestVo.builder() ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = ShoppingCartInfoRequestVo.builder()
.partnerId(createOrderVo.getPartnerId()) .partnerId(createOrderVo.getPartnerId())
.shopId(createOrderVo.getShopId()) .shopId(createOrderVo.getShopId())
...@@ -538,7 +449,7 @@ public class CheckMCCafeOrder { ...@@ -538,7 +449,7 @@ public class CheckMCCafeOrder {
.flag(CouponFlag.NO.getCode()) .flag(CouponFlag.NO.getCode())
.receiveId(createOrderVo.getReceiveId()) .receiveId(createOrderVo.getReceiveId())
.useCustomerScore(createOrderVo.getUseCustomerScore()) .useCustomerScore(createOrderVo.getUseCustomerScore())
.buyMemberCard(buyMemberCard) .buyMemberCard(null)
.menuType(createOrderVo.getMenuType()) .menuType(createOrderVo.getMenuType())
.build(); .build();
// 如果使用优惠券或者商品券,校验 couponCode // 如果使用优惠券或者商品券,校验 couponCode
...@@ -568,7 +479,7 @@ public class CheckMCCafeOrder { ...@@ -568,7 +479,7 @@ public class CheckMCCafeOrder {
// } // }
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) { if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// 校验couponCode // 校验couponCode
CouponQueryResponse couponQueryResponse = couponClientService.query(MCCafeConponRequest.builder() CouponQueryResponse couponQueryResponse = couponClientService.query(MCCafeCouponRequest.builder()
.ver(Integer.valueOf(Version.VERSION_1)) .ver(Integer.valueOf(Version.VERSION_1))
.reqtype(CouponReqTypeEnum.QUERY.getCode()) .reqtype(CouponReqTypeEnum.QUERY.getCode())
.partnerId(Integer.parseInt(createOrderVo.getPartnerId())) .partnerId(Integer.parseInt(createOrderVo.getPartnerId()))
...@@ -594,7 +505,7 @@ public class CheckMCCafeOrder { ...@@ -594,7 +505,7 @@ public class CheckMCCafeOrder {
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo); requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验 //加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity()); requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
// cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto); // cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = shoppingCartClient.getMCCafeShoppingCartGoodsApportionNew(requestDto);
//暂时写死测试数据 //暂时写死测试数据
cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = JSON.parseObject( cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = JSON.parseObject(
"{\n" + "{\n" +
...@@ -652,56 +563,6 @@ public class CheckMCCafeOrder { ...@@ -652,56 +563,6 @@ public class CheckMCCafeOrder {
/** /**
* 获取门店配送信息 * 获取门店配送信息
*/ */
public StoreDeliveryInfoDto getStoreDeliveryInfo(StoreResponse.BizVO storeResponseDto,
AssortmentOpenPlatformIappWxappConfig openPlatformIappWxappConfig, String wxAppid) {
StoreDeliveryInfoDto storeDeliveryInfoDto = new StoreDeliveryInfoDto();
storeDeliveryInfoDto.setPartnerId(storeResponseDto.getPartnerId());
storeDeliveryInfoDto.setStoreId(storeResponseDto.getStoreCode());
storeDeliveryInfoDto.setStoreName(storeResponseDto.getStoreName());
// 查询外卖配送信息
AssortmentOpenPlatformPartnerStoreDeliveryConfig deliveryConfig = deliveryConfigManager.findByPartnerIdAndStoreCode(storeResponseDto.getPartnerId(),
storeResponseDto.getStoreCode());
if (deliveryConfig == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
}
// 判断门店是否启用外卖,只有当小程序开通外卖,且门店开通外卖,设置 外卖配送时间 才开启外卖功能
storeDeliveryInfoDto.setDeliveryLimitAmount(deliveryConfig == null ? 0 : deliveryConfig.getDeliveryLimitAmount());
storeDeliveryInfoDto.setDeliveryAmount(deliveryConfig == null ? 0 : deliveryConfig.getDeliveryAmount());
storeDeliveryInfoDto.setDefaultDeliveryRange(deliveryConfig == null ? 0L : deliveryConfig.getDefaultDeliveryRange());
storeDeliveryInfoDto.setAddRangeAmount(deliveryConfig == null ? 0L : deliveryConfig.getAddRangeAmount());
storeDeliveryInfoDto.setAddRangeCount(deliveryConfig == null ? 0L : deliveryConfig.getAddRangeCount());
storeDeliveryInfoDto.setPoint2DList(getDeliveryPoint2DList(storeResponseDto.getDistributionScope()));
storeDeliveryInfoDto.setDeliveryHoursDay(storeResponseDto.getDeliveryHoursDay());
storeDeliveryInfoDto.setLongitude(storeResponseDto.getLongitude());
storeDeliveryInfoDto.setLatitude(storeResponseDto.getLatitude());
storeDeliveryInfoDto.setScopeConfig(storeResponseDto.getScopeConfig());
if (StringUtils.isNotEmpty(storeResponseDto.getDeliveryRadius())) {
storeDeliveryInfoDto.setDeliveryRadius(Integer.valueOf(storeResponseDto.getDeliveryRadius()));
} else {
storeDeliveryInfoDto.setDeliveryRadius(0);
}
// 只有小程序设置了外卖,并且开通了第三方配送账户,才是第三方配送单
if (openPlatformIappWxappConfig == null) {
openPlatformIappWxappConfig = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(wxAppid);
}
if (openPlatformIappWxappConfig == null) {
storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0);
} else {
if (ObjectUtils.equals(openPlatformIappWxappConfig.getTakeType(), 1)) {
storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0);
} else {
storeDeliveryInfoDto.setDeliveryType("third");
storeDeliveryInfoDto.setPushOrderTime(0);
}
}
return storeDeliveryInfoDto;
}
/**
* 获取门店配送信息
*/
public StoreDeliveryInfoDto getNewStoreDeliveryInfo(StoreResponse.BizVO storeResponseDto, public StoreDeliveryInfoDto getNewStoreDeliveryInfo(StoreResponse.BizVO storeResponseDto,
AssortmentOpenPlatformIappWxappConfig openPlatformIappWxappConfig, String wxAppid, String trackingNo) { AssortmentOpenPlatformIappWxappConfig openPlatformIappWxappConfig, String wxAppid, String trackingNo) {
StoreDeliveryInfoDto storeDeliveryInfoDto = new StoreDeliveryInfoDto(); StoreDeliveryInfoDto storeDeliveryInfoDto = new StoreDeliveryInfoDto();
......
...@@ -17,7 +17,6 @@ import cn.freemud.amqp.Header; ...@@ -17,7 +17,6 @@ import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction; import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage; import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService; import cn.freemud.amqp.MQService;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
...@@ -53,6 +52,7 @@ import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPar ...@@ -53,6 +52,7 @@ import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPar
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.api.assortment.datamanager.meal.MealCacheManager; import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseResultEnum; import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
...@@ -69,21 +69,12 @@ import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewSe ...@@ -69,21 +69,12 @@ import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewSe
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient; import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
import com.freemud.sdk.api.assortment.message.enums.MessageEventType; import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest; import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService; import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import cn.freemud.enums.CouponReqTypeEnum; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.enums.MCCafeChannelEnum; import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse; import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
...@@ -112,6 +103,8 @@ import java.util.*; ...@@ -112,6 +103,8 @@ import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service @Service
@Slf4j @Slf4j
public class MCCafeOrderServiceImpl implements MCCafeOrderService { public class MCCafeOrderServiceImpl implements MCCafeOrderService {
...@@ -208,12 +201,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -208,12 +201,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Override @Override
public BaseResponse createMCCafeOrder(CreateOrderVo createOrderVo) { public BaseResponse createMCCafeOrder(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
// 查询用户信息、校验svc卡,余额购物车校验 // 查询用户信息,余额购物车校验
AssortmentCustomerInfoVo userLoginInfoDto = checkMCCafeOrder.checkOrderByMember(createOrderVo, trackingNo); AssortmentCustomerInfoVo userLoginInfoDto = checkMCCafeOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse.BizVO storeResponseDto = checkMCCafeOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数 // 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkMCCafeOrder.getMCCafeShoppingCartGoodsDto(createOrderVo); ShoppingCartGoodsDto shoppingCartGoodsDto = checkMCCafeOrder.getMCCafeShoppingCartGoodsDto(createOrderVo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse.BizVO storeResponseDto = checkMCCafeOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 // 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkMCCafeOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo); Integer pushOrderTime = checkMCCafeOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo); OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
...@@ -533,40 +526,18 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -533,40 +526,18 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
} else if(UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) { } else if(UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) {
orderClient = OrderClientType.APP; orderClient = OrderClientType.APP;
} }
long totalAmount = 0;
int cardAmount = 0; //麦咖啡只有普通订单
QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
QueryOrdersResponse.DataBean.OrderBean productBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
if (createOrderVo.getBuyMemberCard() != null && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getRuleId()) && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getPaidId())) {
//父子订单
int cardOriginalAmount = shoppingCartGoodsDto.getCardOriginalAmount() == null ? 0 : shoppingCartGoodsDto.getCardOriginalAmount();
int cardDiscountAmount = shoppingCartGoodsDto.getCardDiscountAmount() == null ? 0 : shoppingCartGoodsDto.getCardDiscountAmount();
cardAmount = cardOriginalAmount - cardDiscountAmount;
CreateFatherSonOrderResponse createFatherSonOrderResponse = createFatherSonOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, orderExtendedReq,appId);
if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createFatherSonOrderResponse.getErrcode())) {
return ResponseUtil.error(createFatherSonOrderResponse.getErrcode().toString(), createFatherSonOrderResponse.getErrmsg());
}
List<QueryOrdersResponse.DataBean.OrderBean> orderBeanList = createFatherSonOrderResponse.getOrderBeanList();
List<QueryOrdersResponse.DataBean.OrderBean> fatherBeanList = orderBeanList.stream().filter(orderBeanTemp -> orderBeanTemp.getIsParent()).collect(Collectors.toList());
List<QueryOrdersResponse.DataBean.OrderBean> productBeanList = orderBeanList.stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(fatherBeanList)) fatherBeanListOne = fatherBeanList.get(0);
if (CollectionUtils.isNotEmpty(productBeanList)) productBeanListOne = productBeanList.get(0);
//订单总金额 商品+会员卡
totalAmount = orderBeanList.stream().mapToLong(QueryOrdersResponse.DataBean.OrderBean::getAmount).count();
fatherBeanList.get(0).setShopId(storeResponseDto.getStoreCode());
fatherBeanList.get(0).setCompanyId(createOrderVo.getPartnerId());
} else {
//普通订单
CreateOrderResponse createOrderFlowResponse = createOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, orderExtendedReq, orderClient,appId); CreateOrderResponse createOrderFlowResponse = createOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, orderExtendedReq, orderClient,appId);
if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createOrderFlowResponse.getErrcode())) { if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createOrderFlowResponse.getErrcode())) {
return ResponseUtil.error(createOrderFlowResponse.getErrcode().toString(), createOrderFlowResponse.getErrmsg()); return ResponseUtil.error(createOrderFlowResponse.getErrcode().toString(), createOrderFlowResponse.getErrmsg());
} }
fatherBeanListOne = createOrderFlowResponse.getData(); QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = createOrderFlowResponse.getData();
productBeanListOne = createOrderFlowResponse.getData(); QueryOrdersResponse.DataBean.OrderBean productBeanListOne = createOrderFlowResponse.getData();
totalAmount = createOrderFlowResponse.getData().getAmount(); long totalAmount = createOrderFlowResponse.getData().getAmount();
}
response.setTotalAmount(totalAmount); response.setTotalAmount(totalAmount);
response.setCardAmount(cardAmount); response.setCardAmount(0);
response.setFatherOrderBean(fatherBeanListOne); response.setFatherOrderBean(fatherBeanListOne);
response.setProductOrderBean(productBeanListOne); response.setProductOrderBean(productBeanListOne);
return ResponseUtil.success(response); return ResponseUtil.success(response);
...@@ -651,21 +622,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -651,21 +622,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return mcCafeOrderCenterSdkService.createMCCafeOrderFlow(createOrderRequest); return mcCafeOrderCenterSdkService.createMCCafeOrderFlow(createOrderRequest);
} }
/**
* 创建父子订单
*/
public CreateFatherSonOrderResponse createFatherSonOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto,
ShoppingCartGoodsDto shoppingCartGoodsDto, OrderExtendedReq orderExtendedReq,
String appId) {
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,storeResponseDto,appId);
//查询第三方商品编号
createFatherSonOrderRequest = getProductCustomerCodeNew(createFatherSonOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createFatherSonOrderRequest.setMqMessageRequest(mqMessageRequest);
return mcCafeOrderCenterSdkService.createMCCafeFatherSonOrder(createFatherSonOrderRequest);
}
private OrderPayResponse getOrderPayResponse(PaymentRequest paymentRequest, QueryOrdersResponse.DataBean.OrderBean orderBean) { private OrderPayResponse getOrderPayResponse(PaymentRequest paymentRequest, QueryOrdersResponse.DataBean.OrderBean orderBean) {
OrderPayResponse orderPayResponse; OrderPayResponse orderPayResponse;
...@@ -695,7 +651,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -695,7 +651,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) { public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) {
try { try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId); UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
System.out.println(JSON.toJSONString(request));
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) { if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase)); log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
...@@ -890,18 +845,20 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -890,18 +845,20 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return sendPaySuccessNoticeMessage(); return sendPaySuccessNoticeMessage();
} }
//核销优惠券 // 如果是到店,则冻结优惠券
MCCafeConponRequest mcCafeConponRequest = convertOrderBean2CouponLockRequest(orderBean); // 如果是外卖,则核销优惠券
if(null != mcCafeConponRequest) { // 失败重试三次
CouponRedeemResponse couponRedeemResponse = couponClientService.redeem(mcCafeConponRequest); if(OldOrderType.TAKE_OUT.getCode().equals(orderBean.getType())) {
//失败则取消订单并解锁优惠券 List<CouponRedeemResponse> couponRedeemResponseList = couponClientService.redeemBatch(orderBean);
if(!RESPONSE_SUCCESS_CODE.equals(couponRedeemResponse.getStatusCode())) {
//异步冲正库存积分等 if (CollectionUtils.isNotEmpty(couponRedeemResponseList)){
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), // TODO 记录一下核销失败的券
AfterSalesType.SYSTEM_CANCEL, "支付核销优惠券失败", LogTreadLocal.getTrackingNo(), null); }
orderCenterSdkService.orderCancel(cancelOrderRequest); } else if(OldOrderType.COLLECT_GOODS.getCode().equals(orderBean.getType()) || OldOrderType.EAT_IN.getCode().equals(orderBean.getType())) {
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus()); List<CouponBaseResponse> couponBaseResponseList = couponClientService.lockBatch(orderBean);
throw new ServiceException(ResponseResult.COUPON_VERIFICATION_FAIL);
if (CollectionUtils.isNotEmpty(couponBaseResponseList)){
// TODO 记录一下冻结失败的券
} }
} }
...@@ -1021,100 +978,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1021,100 +978,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return list; return list;
} }
private MCCafeConponRequest convertOrderBean2CouponLockRequest(OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
Optional<OrderBean.AccountBean> accountRequest = orderBean.getAccountList().stream().filter(
account -> orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
return null;
}
OrderBean.AccountBean accountBean = accountRequest.get();
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(accountBean.getType())))) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
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<OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
products.add(mcCafeProductRedeemVo);
}
}
}
}
MCCafeConponRequest mcCafeConponRequest = new MCCafeConponRequest();
mcCafeConponRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeConponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
mcCafeConponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
mcCafeConponRequest.setStore_id(orderBean.getShopId());
mcCafeConponRequest.setStation_id("-1");
mcCafeConponRequest.setOperator_id("-1");
// 订单号
mcCafeConponRequest.setTrans_id(orderBean.getOid());
mcCafeConponRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
List<MCCafeTransactionVo> transactions = new ArrayList<>();
MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo();
mcCafeTransactionVo.setCode(accountBean.getAccountId());
mcCafeTransactionVo.setTotalAmount(-accountBean.getPrice());
if (CollectionUtils.isNotEmpty(products)) {
mcCafeTransactionVo.setProducts(products);
}
transactions.add(mcCafeTransactionVo);
mcCafeConponRequest.setTransactions(transactions);
mcCafeConponRequest.setSign("skip");
mcCafeConponRequest.setAppFlag("kgd.N");
mcCafeConponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
return mcCafeConponRequest;
}
private MCCafeCouponLockRequest convertOrderBean2CouponUnlockRequest(OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
Optional<OrderBean.AccountBean> accountRequest = orderBean.getAccountList().stream().filter(
account -> orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(orderAdapter.getOrderAccountType(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
return null;
}
OrderBean.AccountBean accountBean = accountRequest.get();
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponLockRequest.setReqType(CouponReqTypeEnum.UNLOCK.getCode());
mcCafeCouponLockRequest.setPartnerId(orderBean.getCompanyId());
mcCafeCouponLockRequest.setStoreId(orderBean.getShopId());
// 订单号
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
mcCafeCouponLockRequest.setStationId("-1");
mcCafeCouponLockRequest.setSign("skip");
return mcCafeCouponLockRequest;
}
/** /**
* 支付后通知确认返回信息 * 支付后通知确认返回信息
*/ */
......
...@@ -254,10 +254,6 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -254,10 +254,6 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){ if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){
return orderAdapter.sendPaySuccessNoticeMessage(); return orderAdapter.sendPaySuccessNoticeMessage();
} }
//买券虚拟订单
if(orderBean.getBizType() == 6) {
return sellCouponOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
}
/** /**
* 默认点餐处理 * 默认点餐处理
*/ */
......
...@@ -111,7 +111,6 @@ import com.freemud.sdk.api.assortment.order.request.order.*; ...@@ -111,7 +111,6 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse; import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo; import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto; import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto;
import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService; import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService;
...@@ -123,22 +122,16 @@ import com.google.common.collect.Lists; ...@@ -123,22 +122,16 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil; import tk.mybatis.mapper.util.StringUtil;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -1791,8 +1784,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1791,8 +1784,9 @@ public class OrderServiceImpl implements Orderservice {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean()); orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
} }
if (orderPayResponse == null) { if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient()); return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient(),
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
} }
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean()); createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo()); BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
...@@ -1869,12 +1863,12 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1869,12 +1863,12 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse; return orderPayResponse;
} }
private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient) { private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient, String msg) {
List<OrderClientType> notCancelOrderClientList = Lists.newArrayList(OrderClientType.APP); List<OrderClientType> notCancelOrderClientList = Lists.newArrayList(OrderClientType.APP);
if(!notCancelOrderClientList.contains(orderClient)) { if(!notCancelOrderClientList.contains(orderClient)) {
//失败冲正库存,冲正活动库存,取消订单 //失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "获取预支付失败", trackingNo, null); AfterSalesType.SYSTEM_CANCEL, StringUtils.defaultIfBlank(msg,"获取预支付失败"), trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest); orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更 // TODO: 2019/9/10 hubowen mq推送变更
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus()); backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
...@@ -1887,29 +1881,35 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1887,29 +1881,35 @@ public class OrderServiceImpl implements Orderservice {
} }
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) { public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) {
OrderPayResponse orderPayResponse;
try { try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId); UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) { if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase)); log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
return null; // 1.9.34 预支付失败需要把原因进行记录
} orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMessage());
} else {
putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid()); putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid());
OrderPayResponse orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData()); orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
return orderPayResponse; }
} catch (Exception e) { } catch (Exception e) {
LogUtil.error("getPreOrderPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest)); LogUtil.error("getPreOrderPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest));
//TODO 邮件告警 //TODO 邮件告警
return null; orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg("getPreOrderPay_error");
} }
return orderPayResponse;
} }
public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) { public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest(); CodePayRequest request = new CodePayRequest();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId(); String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
...@@ -1928,19 +1928,21 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1928,19 +1928,21 @@ public class OrderServiceImpl implements Orderservice {
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode()) if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) { || svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
return null; orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse;
} }
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) { if (amount + vamount < orderBean.getAmount()) {
return null; orderPayResponse.setMsg("svc卡余额不足");
return orderPayResponse;
} }
//svc卡支付 //svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) { if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
return null; // 1.9.34 预支付失败需要把原因进行记录
} orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
OrderPayResponse orderPayResponse = new OrderPayResponse(); } else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId()); orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
...@@ -1948,6 +1950,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1948,6 +1950,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
}
return orderPayResponse; return orderPayResponse;
} }
...@@ -2201,11 +2204,13 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2201,11 +2204,13 @@ public class OrderServiceImpl implements Orderservice {
QueryOrdersResponse.DataBean.OrderBean productOrderBean = operateDto.getProductOrderBean(); QueryOrdersResponse.DataBean.OrderBean productOrderBean = operateDto.getProductOrderBean();
//支付-- 包含商品券无需支付、唤起微信支付、储值卡支付直接支付、扫脸支付 //支付-- 包含商品券无需支付、唤起微信支付、储值卡支付直接支付、扫脸支付
OrderPayResponse orderPayResponse = pay(userLoginInfoDto,createOrderVo,totalAmount,cardAmount,fatherOrderBean); OrderPayResponse orderPayResponse = pay(userLoginInfoDto,createOrderVo,totalAmount,cardAmount,fatherOrderBean);
if (orderPayResponse == null) { // 默认支付成功必有非码订单号,不管成功与否,orderPayResponse都是不空的.此处是防御式处理
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
if(createOrderVo.getFaceCode() != null){ if(createOrderVo.getFaceCode() != null){
createOrderVo.setCardCode(createOrderVo.getFaceCode()); createOrderVo.setCardCode(createOrderVo.getFaceCode());
} }
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode(), null); return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode(), null,
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
} }
//更新订单extinfo信息 //更新订单extinfo信息
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, orderExtInfoDTO, productOrderBean, LogThreadLocal.getTrackingNo()); BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, orderExtInfoDTO, productOrderBean, LogThreadLocal.getTrackingNo());
...@@ -2360,6 +2365,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2360,6 +2365,7 @@ public class OrderServiceImpl implements Orderservice {
*/ */
public OrderPayResponse facePay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo) { public OrderPayResponse facePay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo) {
FacePayRequestDto request = new FacePayRequestDto(); FacePayRequestDto request = new FacePayRequestDto();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId(); String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
...@@ -2381,16 +2387,17 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2381,16 +2387,17 @@ public class OrderServiceImpl implements Orderservice {
LogUtil.error("facePay_error", null, null, e); LogUtil.error("facePay_error", null, null, e);
} }
if (responseDto == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseDto.getCode()) || responseDto.getData() == null) { if (responseDto == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseDto.getCode()) || responseDto.getData() == null) {
return null; // 1.9.34 预支付失败需要把原因进行记录
} orderPayResponse.setMsg(Objects.isNull(responseDto) ? "扫脸支付异常" : responseDto.getMessage());
} else {
FacePayResponseDto response = responseDto.getData(); FacePayResponseDto response = responseDto.getData();
OrderPayResponse orderPayResponse = new OrderPayResponse();
orderPayResponse.setFmId(response.getFmId()); orderPayResponse.setFmId(response.getFmId());
orderPayResponse.setPayTransId(response.getPayTransId()); orderPayResponse.setPayTransId(response.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
}
return orderPayResponse; return orderPayResponse;
} }
......
package cn.freemud.service.mccafe; package cn.freemud.service.mccafe;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
...@@ -14,15 +15,23 @@ public interface CouponClientService { ...@@ -14,15 +15,23 @@ public interface CouponClientService {
CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts); CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponRedeemResponse redeem(MCCafeConponRequest mcCafeConponRequest); CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeCouponRequest);
CouponRedeemResponse redeemBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts); 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); CouponRedeemResponse cancelRedeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts);
CouponQueryResponse query(MCCafeConponRequest mcCafeConponRequest); CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
CouponBaseResponse lock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts); 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); CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest);
} }
...@@ -14,10 +14,5 @@ public interface MCCafeOrderCenterSdkService { ...@@ -14,10 +14,5 @@ public interface MCCafeOrderCenterSdkService {
*/ */
CreateOrderResponse createMCCafeOrderFlow(CreateOrderRequest createOrderRequest); CreateOrderResponse createMCCafeOrderFlow(CreateOrderRequest createOrderRequest);
/**
* 创建麦咖啡父子订单
*/
CreateFatherSonOrderResponse createMCCafeFatherSonOrder(CreateFatherSonOrderRequest createFatherSonOrderRequest);
} }
package cn.freemud.service.mccafe.impl; package cn.freemud.service.mccafe.impl;
import cn.freemud.adapter.CouponAdapter;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo; import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo; import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import cn.freemud.enums.CouponReqTypeEnum; import cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.enums.MCCafeChannelEnum; import cn.freemud.enums.MCCafeChannelEnum;
import cn.freemud.enums.OrderAccountType;
import cn.freemud.service.mccafe.CouponClientService; import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.service.mccafe.thirdparty.CouponOfflineMCCafeClient; import cn.freemud.service.mccafe.thirdparty.CouponOfflineMCCafeClient;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
...@@ -18,6 +23,7 @@ import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequ ...@@ -18,6 +23,7 @@ import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequ
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -30,6 +36,12 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -30,6 +36,12 @@ public class CouponClientServiceImpl implements CouponClientService {
@Autowired @Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient; private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
@Autowired
private CouponAdapter couponAdapter;
@Autowired
private OrderAdapter orderAdapter;
@Override @Override
public CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) { public CouponRedeemResponse redeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (null == orderBean || CollectionUtils.isEmpty(accounts)) { if (null == orderBean || CollectionUtils.isEmpty(accounts)) {
...@@ -67,16 +79,16 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -67,16 +79,16 @@ public class CouponClientServiceImpl implements CouponClientService {
} }
} }
} }
MCCafeConponRequest mcCafeConponRequest = new MCCafeConponRequest(); MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
mcCafeConponRequest.setVer(Integer.valueOf(Version.VERSION_1)); mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeConponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode()); mcCafeCouponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
mcCafeConponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId())); mcCafeCouponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
mcCafeConponRequest.setStore_id(orderBean.getShopId()); mcCafeCouponRequest.setStore_id(orderBean.getShopId());
mcCafeConponRequest.setStation_id("-1"); mcCafeCouponRequest.setStation_id("-1");
mcCafeConponRequest.setOperator_id("-1"); mcCafeCouponRequest.setOperator_id("-1");
// 订单号 // 订单号
mcCafeConponRequest.setTrans_id(orderBean.getOid()); mcCafeCouponRequest.setTrans_id(orderBean.getOid());
mcCafeConponRequest.setChannel(OrderClientType.ALIPAY.getIndex().toString().equals(orderBean.getOrderClient())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName()); mcCafeCouponRequest.setChannel(OrderClientType.ALIPAY.getIndex().toString().equals(orderBean.getOrderClient())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
List<MCCafeTransactionVo> transactions = new ArrayList<>(); List<MCCafeTransactionVo> transactions = new ArrayList<>();
MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo(); MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo();
mcCafeTransactionVo.setCode(accountBean.getAccountId()); mcCafeTransactionVo.setCode(accountBean.getAccountId());
...@@ -85,34 +97,94 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -85,34 +97,94 @@ public class CouponClientServiceImpl implements CouponClientService {
mcCafeTransactionVo.setProducts(products); mcCafeTransactionVo.setProducts(products);
} }
transactions.add(mcCafeTransactionVo); transactions.add(mcCafeTransactionVo);
mcCafeConponRequest.setTransactions(transactions); mcCafeCouponRequest.setTransactions(transactions);
mcCafeConponRequest.setSign("skip"); mcCafeCouponRequest.setSign("skip");
mcCafeConponRequest.setAppFlag("kgd.N"); mcCafeCouponRequest.setAppFlag("kgd.N");
mcCafeConponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd)); mcCafeCouponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
return couponOfflineMCCafeClient.redeem(mcCafeConponRequest); return couponOfflineMCCafeClient.redeem(mcCafeCouponRequest);
} }
@Override @Override
public CouponRedeemResponse redeem(MCCafeConponRequest mcCafeConponRequest) { public CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeCouponRequest) {
return couponOfflineMCCafeClient.redeem(mcCafeConponRequest); return couponOfflineMCCafeClient.redeem(mcCafeCouponRequest);
} }
@Override @Override
public CouponRedeemResponse redeemBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) { public CouponRedeemResponse redeemBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (null == orderBean || CollectionUtils.isEmpty(accounts)) {
return null;
}
List<CreateOrderAccountRequest> accountList = accounts.stream().filter(
account -> (account.getAccountType().equals(QueryOrderAccountType.COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
List<MCCafeCouponRequest> list =
accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponRequest(orderBean, accountBean)).collect(Collectors.toList());
CouponRedeemResponse couponRedeemResponse = new CouponRedeemResponse();
redeem:
for (MCCafeCouponRequest request : list) {
retry:
for(int i=0;i<3;i++) {
couponRedeemResponse = redeem(request);
if(ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(couponRedeemResponse.getStatusCode())) {
continue redeem;
}
}
}
return couponRedeemResponse;
}
@Override
public List<CouponRedeemResponse> redeemBatch(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON))
&& account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
List<MCCafeCouponRequest> list =
accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponRequest(orderBean, accountBean)).collect(Collectors.toList());
List<CouponRedeemResponse> couponRedeemResponseList = new ArrayList<>();
redeem:
for (MCCafeCouponRequest request : list) {
CouponRedeemResponse couponRedeemResponse = null;
retry:
for(int i=0;i<3;i++) {
couponRedeemResponse = redeem(request);
if(ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(couponRedeemResponse.getStatusCode())) {
continue redeem;
}
}
couponRedeemResponseList.add(couponRedeemResponse);
}
return couponRedeemResponseList;
}
@Override @Override
public CouponRedeemResponse cancelRedeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) { public CouponRedeemResponse cancelRedeem(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
MCCafeConponRequest mcCafeConponRequest = new MCCafeConponRequest(); MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
return couponOfflineMCCafeClient.cancelRedeem(mcCafeConponRequest); return couponOfflineMCCafeClient.cancelRedeem(mcCafeCouponRequest);
} }
@Override @Override
public CouponQueryResponse query(MCCafeConponRequest mcCafeConponRequest) { public CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest) {
return couponOfflineMCCafeClient.query(mcCafeConponRequest); return couponOfflineMCCafeClient.query(mcCafeCouponRequest);
} }
@Override @Override
...@@ -148,6 +220,75 @@ public class CouponClientServiceImpl implements CouponClientService { ...@@ -148,6 +220,75 @@ public class CouponClientServiceImpl implements CouponClientService {
} }
@Override @Override
public CouponBaseResponse lock(MCCafeCouponLockRequest mcCafeCouponLockRequest) {
return null;
}
@Override
public CouponBaseResponse lockBatch(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (null == orderBean || CollectionUtils.isEmpty(accounts)) {
return null;
}
List<CreateOrderAccountRequest> accountList = accounts.stream().filter(
account -> (account.getAccountType().equals(QueryOrderAccountType.COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
List<MCCafeCouponLockRequest> list =
accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponLockRequest(orderBean, accountBean)).collect(Collectors.toList());
CouponBaseResponse baseResponse = new CouponBaseResponse();
lock:
for (MCCafeCouponLockRequest request : list) {
retry:
for(int i=0;i<3;i++) {
baseResponse = lock(request);
if(ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(baseResponse.getStatusCode())) {
continue lock;
}
}
}
return baseResponse;
}
@Override
public List<CouponBaseResponse> lockBatch(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
List<MCCafeCouponLockRequest> list =
accountList.stream().map(accountBean -> couponAdapter.convert2MCCafeCouponLockRequest(orderBean, accountBean)).collect(Collectors.toList());
List<CouponBaseResponse> baseResponseList = new ArrayList<>();
lock:
for (MCCafeCouponLockRequest request : list) {
CouponBaseResponse baseResponse = null;
retry:
for(int i=0;i<3;i++) {
baseResponse = lock(request);
if(ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(baseResponse.getStatusCode())) {
continue lock;
}
}
baseResponseList.add(baseResponse);
}
return baseResponseList;
}
@Override
public CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest) { public CouponBaseResponse unlock(MCCafeCouponLockRequest mcCafeCouponLockRequest) {
return couponOfflineMCCafeClient.unlock(mcCafeCouponLockRequest); return couponOfflineMCCafeClient.unlock(mcCafeCouponLockRequest);
} }
......
...@@ -119,27 +119,6 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ ...@@ -119,27 +119,6 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
return createOrderResponse; return createOrderResponse;
} }
@Override
public CreateFatherSonOrderResponse createMCCafeFatherSonOrder(CreateFatherSonOrderRequest createFatherSonOrderRequest) {
CreateFatherSonOrderReq request = orderSdkAdapter.convent2NEWCreateFatherSonOrderRequest(createFatherSonOrderRequest);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<List<OrderInfoReqs>> baseResponse = orderSdkService.createFatherSonOrder(request, createFatherSonOrderRequest.getTrackingNo());
if (!RESPONSE_SUCCESS_STR.equals(baseResponse.getCode()) || baseResponse.getResult() == null) {
return CreateFatherSonOrderResponse.error(baseResponse.getCode(), baseResponse.getMessage());
}
CreateFatherSonOrderResponse createFatherSonOrderResponse = orderSdkAdapter.convent2NEWFatherOrderInfoReqs(baseResponse);
List<QueryOrdersResponse.DataBean.OrderBean> productOrderInfo = createFatherSonOrderResponse.getOrderBeanList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(productOrderInfo)) {
return CreateFatherSonOrderResponse.error("500", "");
}
CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0);
BaseOrderResponse baseOrderResponse =updateMCCafeStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest(),createFatherSonOrderRequest.getMenuType());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return CreateFatherSonOrderResponse.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
}
return createFatherSonOrderResponse;
}
private BaseOrderResponse updateMCCafeStockAndScore(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest, private BaseOrderResponse updateMCCafeStockAndScore(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType) { List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType) {
//TODO 转换获取库存信息,扣减库存 //TODO 转换获取库存信息,扣减库存
...@@ -201,39 +180,39 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ ...@@ -201,39 +180,39 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
// } // }
// } // }
// 如果是自提,则冻结优惠券,失败提示下单失败并冲正库存积分等 // 如果是到店,则冻结优惠券,失败提示下单失败并冲正库存积分等
// 如果是外卖,则核销优惠券,失败提示下单失败并冲正库存积分等 // 如果是外卖,则核销优惠券,失败提示下单失败并冲正库存积分等
if(OldOrderType.TAKE_OUT.getCode().equals(orderBean.getType())) { // if(OldOrderType.TAKE_OUT.getCode().equals(orderBean.getType())) {
CouponRedeemResponse couponRedeemResponse = couponClientService.redeem(orderBean, accounts); // CouponRedeemResponse couponRedeemResponse = couponClientService.redeemBatch(orderBean, accounts);
//
if (couponRedeemResponse!=null){ // if (couponRedeemResponse!=null){
//
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponRedeemResponse.getStatusCode())) { // if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponRedeemResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存 // //TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), // CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "核销券码失败", "", null); // AfterSalesType.SYSTEM_CANCEL, "核销券码失败", "", null);
orderCenterSdkService.orderCancel(cancelOrderRequest); // orderCenterSdkService.orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 // //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange()); // backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(couponRedeemResponse.getStatusCode(), "核销券码失败"); // return BaseOrderResponse.getErrorBaseOrderResponse(couponRedeemResponse.getStatusCode(), "核销券码失败");
} // }
} // }
} else if(OldOrderType.COLLECT_GOODS.getCode().equals(orderBean.getType()) || OldOrderType.EAT_IN.getCode().equals(orderBean.getType())) { // } else if(OldOrderType.COLLECT_GOODS.getCode().equals(orderBean.getType()) || OldOrderType.EAT_IN.getCode().equals(orderBean.getType())) {
CouponBaseResponse couponBaseResponse = couponClientService.lock(orderBean, accounts); // CouponBaseResponse couponBaseResponse = couponClientService.lockBatch(orderBean, accounts);
//
if (couponBaseResponse!=null){ // if (couponBaseResponse!=null){
//
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponBaseResponse.getStatusCode())) { // if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponBaseResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存 // //TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), // CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "冻结券码失败", "", null); // AfterSalesType.SYSTEM_CANCEL, "冻结券码失败", "", null);
orderCenterSdkService.orderCancel(cancelOrderRequest); // orderCenterSdkService.orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 // //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange()); // backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(couponBaseResponse.getStatusCode(), "冻结券码失败"); // return BaseOrderResponse.getErrorBaseOrderResponse(couponBaseResponse.getStatusCode(), "冻结券码失败");
} // }
} // }
} // }
return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, ""); return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, "");
} }
......
...@@ -4,7 +4,7 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseR ...@@ -4,7 +4,7 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseR
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -14,13 +14,13 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -14,13 +14,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
public interface CouponOfflineMCCafeClient { public interface CouponOfflineMCCafeClient {
@PostMapping("/mccafe/redeem") @PostMapping("/mccafe/redeem")
CouponRedeemResponse redeem(MCCafeConponRequest mcCafeConponRequest); CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/cancelRedeem") @PostMapping("/mccafe/cancelRedeem")
CouponRedeemResponse cancelRedeem(MCCafeConponRequest mcCafeConponRequest); CouponRedeemResponse cancelRedeem(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/query") @PostMapping("/mccafe/query")
CouponQueryResponse query(MCCafeConponRequest mcCafeConponRequest); CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/lock") @PostMapping("/mccafe/lock")
CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest); CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
......
...@@ -73,4 +73,10 @@ public interface ShoppingCartClient { ...@@ -73,4 +73,10 @@ public interface ShoppingCartClient {
@PostMapping(value = "/getShoppingCartGoodsApportion?lang=zh_CN") @PostMapping(value = "/getShoppingCartGoodsApportion?lang=zh_CN")
BaseResponse<ShoppingCartGoodsDto> getShoppingCartGoodsApportionNew(@RequestBody GetShoppingCartGoodsApportionDto getShoppingCartGoodsApportionDto); BaseResponse<ShoppingCartGoodsDto> getShoppingCartGoodsApportionNew(@RequestBody GetShoppingCartGoodsApportionDto getShoppingCartGoodsApportionDto);
/**
* 获取购物车详情,包含均摊信息
*/
@PostMapping(value = "/MCoffee/getshoppingcartGoodsApportion?lang=zh_CN")
BaseResponse<ShoppingCartGoodsDto> getMCCafeShoppingCartGoodsApportionNew(@RequestBody GetShoppingCartGoodsApportionDto getShoppingCartGoodsApportionDto);
} }
...@@ -2,7 +2,7 @@ package cn.freemud.service; ...@@ -2,7 +2,7 @@ package cn.freemud.service;
import cn.freemud.OrderApplication; import cn.freemud.OrderApplication;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest; import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo; import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo; import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
...@@ -30,7 +30,7 @@ public class CouponActivityServiceTest { ...@@ -30,7 +30,7 @@ public class CouponActivityServiceTest {
@Test @Test
public void redeemTest() { public void redeemTest() {
MCCafeConponRequest couponCodeVerificationDto = new MCCafeConponRequest(); MCCafeCouponRequest couponCodeVerificationDto = new MCCafeCouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1)); couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.REDEEM.getCode()); couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
couponCodeVerificationDto.setPartnerId(1205); couponCodeVerificationDto.setPartnerId(1205);
...@@ -63,7 +63,7 @@ public class CouponActivityServiceTest { ...@@ -63,7 +63,7 @@ public class CouponActivityServiceTest {
@Test @Test
public void cancelRedeemTest() { public void cancelRedeemTest() {
MCCafeConponRequest couponCodeVerificationDto = new MCCafeConponRequest(); MCCafeCouponRequest couponCodeVerificationDto = new MCCafeCouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1)); couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.CANCEL_REDEEM.getCode()); couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.CANCEL_REDEEM.getCode());
couponCodeVerificationDto.setPartnerId(1205); couponCodeVerificationDto.setPartnerId(1205);
...@@ -96,7 +96,7 @@ public class CouponActivityServiceTest { ...@@ -96,7 +96,7 @@ public class CouponActivityServiceTest {
@Test @Test
public void queryTest() { public void queryTest() {
MCCafeConponRequest couponCodeVerificationDto = new MCCafeConponRequest(); MCCafeCouponRequest couponCodeVerificationDto = new MCCafeCouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1)); couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.QUERY.getCode()); couponCodeVerificationDto.setReqtype(CouponReqTypeEnum.QUERY.getCode());
couponCodeVerificationDto.setPartnerId(1205); couponCodeVerificationDto.setPartnerId(1205);
......
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