Commit cb6d2ac8 by hanghang.wang

Merge remote-tracking branch…

Merge remote-tracking branch 'origin/feature/20201223_用户订单查询促销信息转为payGiftReps_wanghanghang' into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/entities/vo/QueryOrderResponseVo.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 355d992c 25955a38
......@@ -13,6 +13,7 @@
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
......@@ -239,7 +240,6 @@ public class QueryOrderResponseVo {
*/
private String refundCreateTime;
/**
* 订单备注
*/
......@@ -318,7 +318,6 @@ public class QueryOrderResponseVo {
* 运单号
*/
private String deliveryId;
/**
* 骑手名称 商家自配送名称
*/
......@@ -364,12 +363,15 @@ public class QueryOrderResponseVo {
//支付有礼活动名称
private String activityName;
//支付有礼活动号
// private String activityNo;
/**
* 支付有礼发送方式
* 0-静默发送
* 5-手动发送
*/
private Integer activitySendType;
// private Integer activitySendType;
//支付有礼领券集合
private List<PayGiftCouponVo> coupons;
......@@ -379,32 +381,32 @@ public class QueryOrderResponseVo {
/**
* 支付有礼奖励类型:1-非码券,2-微信商家券,3-弹窗奖励
*/
private String syncWechat;
// private String syncWechat;
/**
* 支付有礼活动配图
*/
private String activityPicture;
// private String activityPicture;
/**
* 支付有礼跳转设置(跳转类型) 0:无 5:跳转页面 10:外部小程序 15:跳转商品 20:跳转H5
*/
private String redirectType;
// private String redirectType;
/**
* 支付有礼跳转商品
*/
private PayGiftGoodsConfigVo goodsConfig;
// private PayGiftGoodsConfigVo goodsConfig;
/**
* 支付有礼跳转小程序
*/
private PayGiftMicroProgramConfigVo microProgramConfig;
// private PayGiftMicroProgramConfigVo microProgramConfig;
/**
* 支付有礼跳转页面5和20跳转外部H5对应的路径或者URL
*/
private String redirectPage;
// private String redirectPage;
/**
* 收件人省份
......@@ -524,5 +526,13 @@ public class QueryOrderResponseVo {
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
/**
*促销返回参数对象 20201223 提出紧急需求变更
*/
private PayGiftCheckAndJoinResponseDto payGiftReps;
}
......@@ -21,7 +21,6 @@ import cn.freemud.amqp.MQService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.base.util.JsonUtil;
import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
......@@ -31,7 +30,6 @@ import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.delivery.OrderRemindRequestDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
......@@ -40,6 +38,7 @@ import cn.freemud.entities.dto.ecology.BookingOrderPayedScene;
import cn.freemud.entities.dto.ecology.InstantOrderPayedScene;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.ecology.SubscribeMessageResponse;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto;
......@@ -58,8 +57,6 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.*;
......@@ -81,8 +78,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
......@@ -97,24 +92,26 @@ import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSendCouponResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
......@@ -148,6 +145,7 @@ import com.google.gson.Gson;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
......@@ -156,14 +154,11 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -172,7 +167,6 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service
@Slf4j
......@@ -196,13 +190,11 @@ public class OrderServiceImpl implements Orderservice {
private String collageGoodsTag;
@Value("${collage.pre_order_pay.goods_tag_list}")
private String collageGoodsTagList;
/**
* coco商户
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
......@@ -301,13 +293,13 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Value("${coco.partnerId}")
private String partnerId;
@Autowired
private SvcComPayClient svcComPayClient;
@Autowired
private OrderRelationFactory orderRelationFactory;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo();
......@@ -365,7 +357,6 @@ public class OrderServiceImpl implements Orderservice {
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo, shoppingCartGoodsDto);
//1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
if (createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null) {
......@@ -518,6 +509,7 @@ public class OrderServiceImpl implements Orderservice {
// TODO 订单序号替换取餐码显示
takeCode = payAccessResponse.getData().getTakeCode();
daySeq = payAccessResponse.getData().getDaySeq();
//TODO 清空购物车
NewShoppingCartClearDto newShoppingCartClearDto = new NewShoppingCartClearDto();
newShoppingCartClearDto.setPartnerId(partnerId);
......@@ -584,8 +576,10 @@ public class OrderServiceImpl implements Orderservice {
if (message.getSource().equals(PaySuccessSource.OUTSIDE.getSource())) {
log.info("调用券码核销==" + message.getTrans_id());
verificationCoupon(message.getTrans_id());
log.info("调用券码结束=="+ message.getTrans_id());
log.info("调用券码结束==" + message.getTrans_id());
}
//支付成功后
buriedPointService.paySuccessBuridPoint(partnerId, storeId, orderBean);
return sendPaySuccessNoticeMessage();
}
......@@ -934,14 +928,32 @@ public class OrderServiceImpl implements Orderservice {
// 取红包图片
queryOrderResponseVo.setRedpacketsPicture(getRedpacketsPicture(activityId));
queryOrderResponseVo.setActivityId(activityId);
// coco订单不考略是否查询待取餐的订单,直接调用支付有礼活动
// 所以在这个地方排除掉coco,在下边单独实现
//参与支付有礼活动
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo);
if (!cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId);
}
} catch (Exception e) {
LogUtil.error("queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
}
});
}
// coco订单参与支付有礼活动
if (cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
queryOrderResponseVos.forEach(queryOrderResponseVo -> {
try {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId);
} catch (Exception e) {
LogUtil.error("coco_queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
}
});
}
responseMap.put("count", queryOrderResponse.getData() == null ? 0 : queryOrderResponse.getData().getCount());
responseMap.put("list", queryOrderResponseVos);
//只有有订单时才显示用户自定义取餐信息
......@@ -1154,20 +1166,20 @@ public class OrderServiceImpl implements Orderservice {
@Override
public BaseResponse queryCollageOrderById(Integer operation, String sessionId, String oid, String partnerId, String channel) {
BaseResponse orderInfoRes = this.queryOrderById(operation,sessionId, oid,partnerId,channel);
BaseResponse orderInfoRes = this.queryOrderById(operation, sessionId, oid, partnerId, channel);
if(null == orderInfoRes.getResult() || !String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoRes.getCode())){
if (null == orderInfoRes.getResult() || !String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoRes.getCode())) {
return orderInfoRes;
}
// 根据用户聚合商品信息
QueryCollageOrderResponseVo queryCollageOrderResponseVo = new QueryCollageOrderResponseVo();
QueryOrderResponseVo queryOrderResponseVo = (QueryOrderResponseVo)orderInfoRes.getResult();
QueryOrderResponseVo queryOrderResponseVo = (QueryOrderResponseVo) orderInfoRes.getResult();
List<ProductVo> productVo = queryOrderResponseVo.getProducts();
// 根据用户id分类商品
Map<String,List<ProductVo>> orderItemMap = productVo.stream().collect(Collectors.groupingBy(ProductVo::getUserId));
Map<String, List<ProductVo>> orderItemMap = productVo.stream().collect(Collectors.groupingBy(ProductVo::getUserId));
List<UserProductVo> userProducts = new ArrayList<>();
for(Map.Entry<String,List<ProductVo>> m : orderItemMap.entrySet()){
for (Map.Entry<String, List<ProductVo>> m : orderItemMap.entrySet()) {
List<ProductVo> products = m.getValue();
UserProductVo userProductVo = new UserProductVo();
......@@ -1179,7 +1191,7 @@ public class OrderServiceImpl implements Orderservice {
userProducts.add(userProductVo);
}
queryCollageOrderResponseVo = JSONObject.parseObject(JSONObject.toJSONString(queryOrderResponseVo),QueryCollageOrderResponseVo.class);
queryCollageOrderResponseVo = JSONObject.parseObject(JSONObject.toJSONString(queryOrderResponseVo), QueryCollageOrderResponseVo.class);
queryCollageOrderResponseVo.setUserProducts(userProducts);
return ResponseUtil.success(queryCollageOrderResponseVo);
......@@ -1187,11 +1199,6 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public BaseResponse timeOutOrderRefund(TimeOutOrderVo timeOutOrderVo) {
return null;
}
@Override
public BaseResponse queryOrderRider(OrderRiderRequestVo requestVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(requestVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
......@@ -1206,14 +1213,14 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
if(!StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId()) || "0".equals(orderBean.getAddInfo().getDeliveryId())){
if (!StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId()) || "0".equals(orderBean.getAddInfo().getDeliveryId())) {
return ResponseUtil.error(ResponseResult.DELIVERY_NOT_EXIST);
}
QueryDeliveryBaseRequest queryDeliveryBaseRequest = new QueryDeliveryBaseRequest();
queryDeliveryBaseRequest.setDeliveryId(orderBean.getAddInfo().getDeliveryId());
queryDeliveryBaseRequest.setOpenDistance(1);
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> deliveryBaseResponse = deliveryFeiginClient.getDeliveryStatusAndRiderPosition(queryDeliveryBaseRequest);
if(RESPONSE_SUCCESS_CODE != deliveryBaseResponse.getCode() || response.getData() == null){
if (RESPONSE_SUCCESS_CODE != deliveryBaseResponse.getCode() || response.getData() == null) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
OrderRiderResponseVo responseVo = new OrderRiderResponseVo();
......@@ -1229,12 +1236,12 @@ public class OrderServiceImpl implements Orderservice {
responseVo.setOperationList(operationList);
responseVo.setOrderId(orderBean.getOid());
responseVo.setStorePhone(deliveryBaseResponse.getData().getStorePhone());
if(deliveryBaseResponse.getData().getCurrentPoint() != null){
if (deliveryBaseResponse.getData().getCurrentPoint() != null) {
String currentPoint[] = deliveryBaseResponse.getData().getCurrentPoint().split(",");
responseVo.setRiderLongitude(currentPoint[0]);
responseVo.setRiderLatitude(currentPoint[1]);
}
if(deliveryBaseResponse.getData().getStorePoint() != null){
if (deliveryBaseResponse.getData().getStorePoint() != null) {
String storePoint[] = deliveryBaseResponse.getData().getStorePoint().split(",");
responseVo.setShopLongitude(storePoint[0]);
responseVo.setShopLatitude(storePoint[1]);
......@@ -1248,21 +1255,16 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public BaseResponse platformPaysuccess(PlatformPaySuccessRequest requestVo) {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVo.getOrderCode());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(queryOrderByIdResponse.getErrcode()) || queryOrderByIdResponse.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
public BaseResponse timeOutOrderRefund(TimeOutOrderVo timeOutOrderVo) {
Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans = this.getOrderBeanByOrderId(timeOutOrderVo.getOid());
if (MapUtils.isEmpty(orderBeans)) {
ResponseUtil.error("404", "订单不存在");
}
// 扣减储值卡
// 扣减券
// 扣减积分
QueryOrdersResponseDto.DataBean.OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
this.timeOutRefund(orderBean);
}
return ResponseUtil.success();
}
......@@ -1282,7 +1284,7 @@ public class OrderServiceImpl implements Orderservice {
}
//参与支付有礼活动
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo) {
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo, String partnerId) {
PayGitCheckAndJoinRequestDto payGitRequestDto = new PayGitCheckAndJoinRequestDto();
payGitRequestDto.setStoreId(queryOrderResponseVo.getShopId());
payGitRequestDto.setSessionId(sessionId);
......@@ -1303,20 +1305,30 @@ public class OrderServiceImpl implements Orderservice {
} else {
payGitRequestDto.setOrderWay(2);
}
if (cocoPartnerId.contains(partnerId)) {
payGitRequestDto.setVer(1);
}
BaseResponse<PayGiftCheckAndJoinResponseDto> payGiftBaseResponse = activityApplicationClient.payGiftCheckAndJoin(payGitRequestDto);
if (String.valueOf(RESPONSE_SUCCESS_CODE).equals(payGiftBaseResponse.getCode()) && payGiftBaseResponse.getResult() != null) {
PayGiftCheckAndJoinResponseDto payGiftResponse = payGiftBaseResponse.getResult();
//版本前 原参数保留,暂不变更
//防止牵扯其他服务返回参数结构引起异常
queryOrderResponseVo.setActivityName(payGiftResponse.getActivityName());
queryOrderResponseVo.setCoupons(payGiftResponse.getCoupons());
queryOrderResponseVo.setWechatCouponInfo(payGiftResponse.getWechatCouponInfo());
queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
queryOrderResponseVo.setSyncWechat(payGiftResponse.getSyncWechat());
queryOrderResponseVo.setActivityPicture(payGiftResponse.getActivityPicture());
queryOrderResponseVo.setRedirectType(payGiftResponse.getRedirectType());
queryOrderResponseVo.setGoodsConfig(payGiftResponse.getGoodsConfig());
queryOrderResponseVo.setMicroProgramConfig(payGiftResponse.getMicroProgramConfig());
queryOrderResponseVo.setRedirectPage(payGiftResponse.getRedirectPage());
queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
//20201223本次变更-》去掉set,直接以对象进行返参
queryOrderResponseVo.setPayGiftReps(payGiftResponse);
// queryOrderResponseVo.setActivityNo(payGiftResponse.getActivityNo());
// queryOrderResponseVo.setSyncWechat(payGiftResponse.getSyncWechat());
// queryOrderResponseVo.setActivityPicture(payGiftResponse.getActivityPicture());
// queryOrderResponseVo.setRedirectType(payGiftResponse.getRedirectType());
// queryOrderResponseVo.setGoodsConfig(payGiftResponse.getGoodsConfig());
// queryOrderResponseVo.setMicroProgramConfig(payGiftResponse.getMicroProgramConfig());
// queryOrderResponseVo.setRedirectPage(payGiftResponse.getRedirectPage());
// queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
}
}
......@@ -1467,12 +1479,12 @@ public class OrderServiceImpl implements Orderservice {
// 支付有礼
// 目前只有coco在订单详情参加支付有礼,且不检查订单的状态
if(cocoPartnerId.contains(partnerId)){
joinPayGift(sessionId, queryOrderResponseVo);
if (cocoPartnerId.contains(partnerId)) {
joinPayGift(sessionId, queryOrderResponseVo, partnerId);
}
buildQueryOrderResponseVo(queryOrderResponseVo,response,partnerId);
buildQueryOrderResponseVo(queryOrderResponseVo, response, partnerId);
return ResponseUtil.success(queryOrderResponseVo);
}
......@@ -1718,7 +1730,7 @@ public class OrderServiceImpl implements Orderservice {
if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许取消");
}
//
this.closeHistoryPrePay(orderBean);
CancelOrderRequest var1 = new CancelOrderRequest();
var1.setOrderId(deleteOrderVo.getOid());
var1.setPartnerId(deleteOrderVo.getPartnerId());
......@@ -1732,7 +1744,7 @@ public class OrderServiceImpl implements Orderservice {
var1.setCreateEvent(4);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(var1);
if (!RESPONSE_SUCCESS_CODE.equals(baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR.getCode(),baseOrderResponse.getErrmsg());
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR.getCode(), baseOrderResponse.getErrmsg());
}
// TODO: 2019/9/10 删除订单通知
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
......@@ -1809,22 +1821,30 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "不能操作非本人的订单");
}
OrderBean orderBean = orderByIdResponseDto.getData();
if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单未支付,无法退款");
}
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已取消,无法退款");
}
if (OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单配送中,退款请联系售后!");
}
// todo coco 商户校验
if (cocoPartnerId.contains(orderByIdResponseDto.getData().getCompanyId())) {
// COCO 即时单不可取消
if ( NewOrderType.GENERAL_SELF_PICKUP.getCode().equals(queryOrderByIdResponse.getData().getNewOrderType())) {
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR);
if (NewOrderType.GENERAL_SELF_PICKUP.getCode().equals(queryOrderByIdResponse.getData().getNewOrderType())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND);
}
// 4,6 预约单
List<Integer> expectOrderType = Lists.newArrayList(
NewOrderType.RESERVED_EXPRESS.getCode(),
NewOrderType.RESERVED_SELF_PICKUP.getCode());
long time = DateUtil.addMinutes(new Date(), 15).getTime();
if (expectOrderType.contains(queryOrderByIdResponse.getData().getNewOrderType())
&& Objects.nonNull(orderBean.getGmtExpect())
&& time > orderBean.getGmtExpect()) {
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR_EXPECT_TIME);
}
// 外卖单
List<Integer> takeOrderType = Lists.newArrayList(
NewOrderType.RESERVED_EXPRESS.getCode(),
......@@ -1835,19 +1855,22 @@ public class OrderServiceImpl implements Orderservice {
&& taskCancelOrderTime > queryOrderByIdResponse.getData().getEstimateDeliveryCompleteTime()) {
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR_ESTIMATE_TIME);
}
if (expectOrderType.contains(queryOrderByIdResponse.getData().getNewOrderType())) {
if (Objects.nonNull(orderBean.getGmtExpect())
&& time > orderBean.getGmtExpect()) {
return ResponseUtil.error(ResponseResult.ORDER_CANCEL_ERROR_EXPECT_TIME);
}
if (PayStatus.NOT_PAY.getCode().equals(orderByIdResponseDto.getData().getPayStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单未支付,无法退款");
}
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单已取消,无法退款");
// todo coco 预约单直接退款
BaseResponse baseResponse = partnerNoTakeOrder(orderRefundVo, orderBean, orderId, AfterSalesType.USER_CANCEL, true);
if (baseResponse != null) {
return baseResponse;
}
if (OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "订单配送中,退款请联系售后!");
// 删除订单 通知活动添加商品库存
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), orderBean.getPayStatus());
return ResponseUtil.success();
}
}
/**
* 已接单,制作完成,配送中,未接单,用户可申请退款
*
......@@ -1866,12 +1889,12 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "您的申请已被商家拒绝,请联系门店沟通。");
}
}
/*if (OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())) {
if (OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())) {
boolean refundButton = orderAdapter.checkRefundButton(queryOrderByIdResponse.getData(), userInfo.getWxAppId());
if (!refundButton) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_ALLOW_REFUND.getCode(), ResponseResult.ORDER_NOT_ALLOW_REFUND.getMessage());
}
}*/
}
List<AssortmentOpenPlatformPartnerWxappConfig> partnerWxappConfigs = cacheOpenPlatformPartnerWxappConfigManager.cacheSelectDefaultPage(userInfo.getWxAppId(), "2");
Map<String, AssortmentOpenPlatformPartnerWxappConfig> configMap = partnerWxappConfigs.stream().collect(Collectors.toMap(AssortmentOpenPlatformPartnerWxappConfig::getAppKey, Function.identity()));
......@@ -1928,11 +1951,6 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success();
}
/* private BaseResponse checkOrder(OrderBean orderBean){
//orderBean.gettakem
}*/
/**
* 商家未接单,取消订单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
......@@ -2468,10 +2486,6 @@ public class OrderServiceImpl implements Orderservice {
} else if (UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) {
orderClient = OrderClientType.APP;
}
//抖音小程序
if(PayChannelType.TIKTOKPAY.getIndex().equals(createOrderVo.getPayChannelType()) && "5".equalsIgnoreCase(createOrderVo.getChannel())) {
orderClient = OrderClientType.TIKTOKPAY;
}
long totalAmount = 0;
int cardAmount = 0;
QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
......@@ -2529,7 +2543,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse = uSvcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime);
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO());
}
//混合支付+svc卡
else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
......@@ -2735,7 +2749,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getCode(), ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getMessage(), null);
}
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime) {
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime, OrderExtInfoDto orderExtInfoDto) {
OrderPayResponse orderPayResponse;
try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
......@@ -2749,6 +2763,9 @@ public class OrderServiceImpl implements Orderservice {
}
}
// add by miaohui for 拼单群收款判断拼单人数大于1时参与微信平台补贴活动,创建预支付时上送goodsTag,后续抽成促销服务活动时删除此逻辑 end
if (orderExtInfoDto != null && StringUtils.isNotBlank(orderExtInfoDto.getStationId())) {
request.setStationId(orderExtInfoDto.getStationId());
}
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));
......@@ -3239,7 +3256,7 @@ public class OrderServiceImpl implements Orderservice {
//唤起微信支付
if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) {
String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId());
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid(), partnerPayOvertime);
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid(), partnerPayOvertime, null);
return orderPayResponse;
}
//储值卡支付
......@@ -3462,6 +3479,17 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responses.getData());
}
public void buildQueryOrderResponseVo(QueryOrderResponseVo queryOrderResponseVo, QueryOrderByIdResponse response, String partnerId) {
if (null == response || response.getData() == null || !ObjectUtils.equals(response.getErrcode(), RESPONSE_SUCCESS_CODE)) {
ApiLog.info("订单详情查询,返回值错误,QueryOrderByIdResponse", response);
return;
}
OrderRelationService orderRelationService = orderRelationFactory.getQueryOrdrBuildService(partnerId);
orderRelationService.queryOrdrBuild(queryOrderResponseVo, response);
}
public String getMealCodeRule(String appId) {
String mealCodeRule = "";
......@@ -3520,7 +3548,7 @@ public class OrderServiceImpl implements Orderservice {
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
log.info("混合支付返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(combPayRequest), JSONObject.toJSONString(combPayResponse));
orderPayResponse.setMsg(combPayResponse.getMsg());
orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
return orderPayResponse;
}
Integer svcAmount = 0;
......@@ -3537,7 +3565,7 @@ public class OrderServiceImpl implements Orderservice {
.orElse(null);
//现金+svc 现金
if (payPlatforms.size() == 2 || payPlatforms.size() == 1 && cashPay != null) {
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
......@@ -3631,58 +3659,31 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 取消混合支付svc扣款失败的订单
* @param orderId
* @return
*/
//public String cannelComPayOrder(String orderId) {
// //失败冲正库存,冲正活动库存,取消订单
// CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderId, orderBean.getCompanyId(),
// AfterSalesType.SYSTEM_CANCEL, StringUtils.join(new String[]{"获取预支付失败", msg}, '-'), trackingNo, null);
// orderCenterSdkService.orderCancel(cancelOrderRequest);
// // TODO: 2019/9/10 hubowen mq推送变更
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//}
/**
* 获取混合支付是否开启
*
* @param partnerId
* @return
*/
private boolean checkSvcComPay(String partnerId,String storeId) {
private boolean checkSvcComPay(String partnerId, String storeId) {
SvcComPayRequestDto requestDto = new SvcComPayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
SvcComPayResponseDto query = null;
for (int i=0;i<3;i++) {
for (int i = 0; i < 3; i++) {
query = svcComPayClient.query(requestDto);
if (query!=null) break;
if (query != null) break;
}
log.info("order checkSvcComPay:{}",JSON.toJSONString(query));
if (query==null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
log.info("order checkSvcComPay:{}", JSON.toJSONString(query));
if (query == null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
return false;
}
if (query.getResult()!=null && query.getResult().getValue()) {
if (query.getResult() != null && query.getResult().getValue()) {
return true;
}
else {
} else {
return false;
}
}
public void buildQueryOrderResponseVo(QueryOrderResponseVo queryOrderResponseVo,QueryOrderByIdResponse response,String partnerId) {
if(null == response || response.getData() == null || !ObjectUtils.equals(response.getErrcode(),RESPONSE_SUCCESS_CODE) ){
ApiLog.info("订单详情查询,返回值错误,QueryOrderByIdResponse",response);
return;
}
OrderRelationService orderRelationService = orderRelationFactory.getQueryOrdrBuildService(partnerId);
orderRelationService.queryOrdrBuild(queryOrderResponseVo,response);
}
private Map<String, String> goodsTagMap() {
Map<String, String> map = new HashMap<>();
try {
......@@ -3694,4 +3695,84 @@ public class OrderServiceImpl implements Orderservice {
}
return map;
}
/**
* 超时回调直接退款
*
* @param orderBean
*/
public void timeOutRefund(QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
//调用支付退款
log.info("payment timeout callback for refund orderDto={}", JSON.toJSONString(orderBean));
Integer abState = 4;
String noPay = "8200404";
if (abState.equals(orderBean.getAbnormalState())) {
log.info("payment timeout callback for refund is exist");
return;
}
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null;
Long refundId = System.currentTimeMillis();
OrderExtInfoDto orderExtInfoDTO = gson.fromJson(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderExtInfoDTO == null || StringUtils.isBlank(orderExtInfoDTO.getFmId())) {
log.info("payment timeout callback for refund not create pre order");
return;
}
Integer state = PayRefundStatus.SUCCESS.getCode();
orderBean.setPayVoucher(orderExtInfoDTO.getFmId());
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
String desc = "支付未及时回调";
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid());
response = standardPaymentService.orderRefund(orderPayRefundRequest, LogTreadLocal.getTrackingNo());
log.info("payment timeout callback for refund orderId={},request={},resp={}", orderBean.getOid(), JSON.toJSONString(orderPayRefundRequest), JSON.toJSONString(response));
if (response != null && noPay.equals(response.getCode())) {
return;
}
if (response != null || state.equals(response.getData().getRefundStatus())) {
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款成功");
} else {
sdkUpdateAbnormalState.setAbnormalDesc(desc + ",退款失败");
}
sdkUpdateAbnormalState.setPartnerId(orderBean.getCompanyId());
sdkUpdateAbnormalState.setAbnormalState(4);
sdkUpdateAbnormalState.setOrderCode(orderBean.getOid());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
}
private void closeHistoryPrePay(OrderBean orderBean) {
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
//判断当前订单是否存在预支付订单
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo());
//判断预支付订单状态
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
}
//判断当前预支付订单是否已经支付成功
if (ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
if (ObjectUtils.equals(TradeState.NOTPAY.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
PaymentCloseUnifiedOrderRequest closeUnifiedOrderRequest = new PaymentCloseUnifiedOrderRequest();
closeUnifiedOrderRequest.setFmId(extInfo.getFmId());
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo());
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
}
}
}
}
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