Commit 8bb94ad8 by 徐康

麦咖啡下单联调

parent ab2c3035
......@@ -61,6 +61,8 @@ public enum ResponseResult {
STORE_BIND_MALL_NOT_FOUND("43014", "商城门店存在"),
STORE_DISCONTENT_DELIVERY_CONDITION("43015", "门店起送条件设置错误"),
STORE_DISCONTENT_DELIVERY_CUP("43016", "不满足起送杯数"),
STORE_CLOSED_FOREVER("43017", "门店已关闭,请选择其他门店"),
STORE_CLOSED_THE_NIGHT("43018", "门店已打烊,请选择其他门店"),
/**
* 购物车状态码
......
......@@ -54,8 +54,6 @@ import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailRe
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.entities.dto.coupon.MCCafeConponRequest;
import cn.freemud.service.mccafe.CouponClientService;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
......@@ -110,8 +108,6 @@ public class CheckOrder {
private ItemServiceImpl itemService;
@Autowired
private CouponService couponService;
@Autowired
private CouponClientService couponClientService;
private static Gson gson = new Gson();
/**
* 下单会员相关校验
......@@ -521,134 +517,6 @@ public class CheckOrder {
return shoppingCartGoodsDto;
}
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()
.partnerId(createOrderVo.getPartnerId())
.shopId(createOrderVo.getShopId())
.version(createOrderVo.getVersion())
.sessionId(createOrderVo.getSessionId())
.orderType(createOrderVo.getOrderType())
.reachStoreType(createOrderVo.getReachStoreType())
.flag(CouponFlag.NO.getCode())
.receiveId(createOrderVo.getReceiveId())
.useCustomerScore(createOrderVo.getUseCustomerScore())
.buyMemberCard(buyMemberCard)
.menuType(createOrderVo.getMenuType())
.build();
// 如果使用优惠券或者商品券,校验 couponCode
// if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// // 校验couponCode
// GetCouponDetailResponseDto getCouponDetailResponseDto = couponService.getMemberCoupon(GetMemberCouponRequestVo.builder()
// .partnerId(createOrderVo.getPartnerId())
// .couponCode(createOrderVo.getCouponCode()).build());
// if (Objects.equals(getCouponDetailResponseDto, null) || CollectionUtils.isEmpty(getCouponDetailResponseDto.getDetails())
// || getCouponDetailResponseDto.getDetails().get(0).getActive() == null
// || getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode() == null) {
// if ((CollectionUtils.isNotEmpty(getCouponDetailResponseDto.getDetails().get(0).getActiveRestrictionVOS())
// && CollectionUtils.isEmpty(getCouponDetailResponseDto.getDetails().get(0).getActiveRestrictionVOS().stream()
// .filter(a -> Objects.equals(a.getStoreIdPartner(), createOrderVo.getShopId())).collect(Collectors.toList()))
// )) {
// throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT);
// } else {
// throw new ServiceException(ResponseResult.COUPON_GETINFO_INVAILD);
// }
// }
// String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode();
// // 校验点餐方式,查询购物车接口内部已校验
// shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode());
// // 活动code
// shoppingCartInfoRequestVo.setActivityCode(activeCode);
// shoppingCartInfoRequestVo.setCardCode(createOrderVo.getCardCode());
// }
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// 校验couponCode
CouponQueryResponse couponQueryResponse = couponClientService.query(MCCafeConponRequest.builder()
.ver(Integer.valueOf(Version.VERSION_1))
.reqtype(CouponReqTypeEnum.QUERY.getCode())
.partnerId(Integer.parseInt(createOrderVo.getPartnerId()))
.store_id(createOrderVo.getShopId())
.station_id("1")
.operator_id(createOrderVo.getUserId())
.channel(createOrderVo.getChannel())
.coupon(createOrderVo.getCouponCode())
.sign("skip")
.build());
if (couponQueryResponse == null || !ResponseResult.SUCCESS.getCode().equals(couponQueryResponse.getStatusCode())) {
throw new ServiceException(ResponseResult.COUPON_SHOP_NOTSUPPORT);
}
String activeCode = couponQueryResponse.getCodeInfo().getAct_id();
// 校验点餐方式,查询购物车接口内部已校验
shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode());
// 活动code
shoppingCartInfoRequestVo.setActivityCode(activeCode);
shoppingCartInfoRequestVo.setCardCode(createOrderVo.getCardCode());
}
// 通过购物车获取优惠信息
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
//cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto);
//暂时写死测试数据
cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> apportionResponse = JSON.parseObject(
"{\n" +
" \"code\": \"100\",\n" +
" \"message\": \"success\",\n" +
" \"result\": {\n" +
" \"activityDiscountsDtos\": [],\n" +
" \"isDiscountDelivery\": false,\n" +
" \"originalTotalAmount\": 1,\n" +
" \"products\": [\n" +
" {\n" +
" \"activityDiscountsDtos\": [],\n" +
" \"attributeNames\": \"{\\\"attributeNames\\\":\\\"\\\"}\",\n" +
" \"categoryName\": \"鞍山市\",\n" +
" \"classificationId\": \"\",\n" +
" \"customerCode\": \"4095\",\n" +
" \"extraList\": [],\n" +
" \"hasProductCoupon\": false,\n" +
" \"materialList\": [],\n" +
" \"originalPrice\": 1,\n" +
" \"picture\": \"https://img10.sandload.cn/zfd0x0.jpg?timestamp=1593831027040\",\n" +
" \"qty\": 1,\n" +
" \"skuId\": \"162535232231270663\",\n" +
" \"skuName\": \"鱿鱼须把把串\",\n" +
" \"spuId\": \"162535232231270663\",\n" +
" \"spuName\": \"鱿鱼须把把串\",\n" +
" \"stockLimit\": false,\n" +
" \"totalDiscountAmount\": 0,\n" +
" \"unit\": \"g\",\n" +
" \"weight\": 0\n" +
" }\n" +
" ],\n" +
" \"reduceScore\": 0,\n" +
" \"scoreReduceAmount\": 0,\n" +
" \"totalAmount\": 1,\n" +
" \"totalDiscountAmount\": 0\n" +
" },\n" +
" \"ver\": \"1\"\n" +
"}", new TypeReference<cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto>>(){}
);
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, apportionResponse.getCode())) {
ResponseResult responseResult = ResponseResult.getResponseResult(apportionResponse.getCode());
throw new ServiceException(responseResult != null ? responseResult : ResponseResult.SHOPPING_CART_GETINFO_ERROR );
}
if (apportionResponse.getResult() == null || CollectionUtils.isEmpty(apportionResponse.getResult().getProducts())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
ShoppingCartGoodsDto shoppingCartGoodsDto = apportionResponse.getResult();
if (shoppingCartGoodsDto.getOriginalTotalAmount() == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
return shoppingCartGoodsDto;
}
/**
* 获取门店配送信息
*/
......
......@@ -69,12 +69,16 @@ 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.service.StoreCenterService;
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.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.enums.MCCafeChannelEnum;
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;
......@@ -179,7 +183,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private CheckOrder checkOrder;
private CheckMCCafeOrder checkMCCafeOrder;
@Autowired
private RedisCache redisCache;
@Autowired
......@@ -205,13 +209,13 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
public BaseResponse createMCCafeOrder(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo();
// 查询用户信息、校验svc卡,余额购物车校验
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
StoreResponse.BizVO storeResponseDto = checkOrder.checkOrderByStore(createOrderVo, trackingNo);
AssortmentCustomerInfoVo userLoginInfoDto = checkMCCafeOrder.checkOrderByMember(createOrderVo, trackingNo);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse.BizVO storeResponseDto = checkMCCafeOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getMCCafeShoppingCartGoodsDto(createOrderVo);
ShoppingCartGoodsDto shoppingCartGoodsDto = checkMCCafeOrder.getMCCafeShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
Integer pushOrderTime = checkMCCafeOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
......@@ -579,6 +583,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
long totalAmount = createPrepayRequestDto.getTotalAmount();
String cardCode = createPrepayRequestDto.getCardCode();
String transId = createPrepayRequestDto.getTransId();
// 测试appId和openid,后面删除,改为实时获取
paymentRequest.setWxAppId("wx21e254fdcc79dee8");
paymentRequest.setOpenId("oR0VA5aRRaGpQxaLUPgQqcDHamg4");
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
......@@ -688,6 +695,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) {
try {
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);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
......@@ -889,9 +897,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
//失败则取消订单并解锁优惠券
if(!RESPONSE_SUCCESS_CODE.equals(couponRedeemResponse.getStatusCode())) {
//异步冲正库存积分等
//TODO trackingNo来源
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "支付核销优惠券失败", "", null);
AfterSalesType.SYSTEM_CANCEL, "支付核销优惠券失败", LogTreadLocal.getTrackingNo(), null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
throw new ServiceException(ResponseResult.COUPON_VERIFICATION_FAIL);
......
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