Commit 2a25ab21 by hanghang.wang

Merge branch 'feature/20210325_华莱士紧急上线需求支付有礼须支持套餐内固定可选商品'

parents e5f08426 c362b209
......@@ -66,6 +66,7 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.runtime.ECMAException;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
......@@ -149,7 +150,6 @@ import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import jdk.nashorn.internal.runtime.ECMAException;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
......@@ -204,6 +204,8 @@ public class OrderServiceImpl implements Orderservice {
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
@Value("#{'${hls.partnerId}'.split(',')}")
private List<String> hlsPartnerId;
@Value("${query.order.es:true}")
private Boolean queryOrderEs;
......@@ -785,9 +787,9 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isBlank(queryOrderVo.getStartDate())) {
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
if (isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs) {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -3), "yyyy-MM-dd"));
}else{
} else {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -1), "yyyy-MM-dd"));
}
......@@ -814,13 +816,13 @@ public class OrderServiceImpl implements Orderservice {
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
if (isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs) {
Date startDateEs = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd");
Date endDateEs = DateUtil.convert2Date(new Date(), "yyyy-MM-dd");
if (startDateEs.getTime() < DateUtil.addMonths(endDateEs, -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
}else{
} else {
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
......@@ -839,20 +841,20 @@ public class OrderServiceImpl implements Orderservice {
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogTreadLocal.getTrackingNo());
// 订单要查3个月的,如果查询的订单状态是待取餐、未支付,则查实时,否则,查es
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
if (isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs) {
OrderConditionsReq es = new OrderConditionsReq();
es.setPartnerId(queryOrderVo.getPartnerId());
es.setUserId(userId);
es.setStartTimestamp(DateTimeUtil.parseDate(startDateStr,DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime()/1000);
es.setEndTimestamp(DateTimeUtil.parseDate(endDateStr,DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime()/1000);
es.setStartTimestamp(DateTimeUtil.parseDate(startDateStr, DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime() / 1000);
es.setEndTimestamp(DateTimeUtil.parseDate(endDateStr, DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime() / 1000);
es.setPageNum(queryOrderVo.getPageNumber());
es.setPageSize(queryOrderVo.getPageSize());
OrderConditionsReq queryEs = orderAdapter.convent2QueryOrdersDtoES(es,userId,channelType,queryOrderVo.getQueryOrderStatus(),queryOrderVo.getQueryOrderType(), queryOrderVo.getQueryPayStatus());
OrderConditionsReq queryEs = orderAdapter.convent2QueryOrdersDtoES(es, userId, channelType, queryOrderVo.getQueryOrderStatus(), queryOrderVo.getQueryOrderType(), queryOrderVo.getQueryPayStatus());
BaseDownLoadResponse<List<OrderInfoReqs>> response = orderDownLoadSdkService.queryOrderByConditions(queryEs, LogThreadLocal.getTrackingNo());
queryOrderResponse = orderAdapter.conventEs2queryOrderResponse(response);
}else{
} else {
queryOrderResponse = orderCenterSdkService.queryOrders(queryOrdersRequest2);
}
......@@ -925,17 +927,17 @@ public class OrderServiceImpl implements Orderservice {
}
orderBean.setQueueIndex("");
// 查询待取餐订单才需要查询排队人数和订单状态扭转记录
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(queryOrderDto.getQueryOrderStatus()) ) {
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
String returnWords = "";
Integer productSum = 0; //件数
Long pickUpTime = 0L; //预计
Integer totalSumTime = 0;
String progress = "0" ; //进度
String progress = "0"; //进度
Integer orderProgressBarStatus = 2;
try{
if(null != storeResponseDto){
try {
if (null != storeResponseDto) {
String configurationStr = storeResponseDto.getConfiguration();
if(StringUtils.isNotEmpty(configurationStr)) {
if (StringUtils.isNotEmpty(configurationStr)) {
StoreResponse.Configuration configuration = JSONObject.parseObject(configurationStr).toJavaObject(StoreResponse.Configuration.class);
if (null != configuration) {
orderProgressBarStatus = configuration.getOrderProgressBarStatus();
......@@ -980,7 +982,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
}
}catch (Exception e){
} catch (Exception e) {
log.error("get returnWords error :{},storeResponseDto:{}", e.getMessage(), JSONObject.toJSON(storeResponseDto));
}
orderBean.setProgress(String.valueOf(progress));
......@@ -1041,7 +1043,7 @@ public class OrderServiceImpl implements Orderservice {
// 所以在这个地方排除掉coco,在下边单独实现
//参与支付有礼活动
if (!cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId , queryOrderVo.getPayGiftVer());
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId, queryOrderVo.getPayGiftVer());
}
} catch (Exception e) {
......@@ -1054,7 +1056,7 @@ public class OrderServiceImpl implements Orderservice {
if (cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
queryOrderResponseVos.forEach(queryOrderResponseVo -> {
try {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId,null);
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId, null);
} catch (Exception e) {
LogUtil.error("coco_queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
......@@ -1403,7 +1405,7 @@ public class OrderServiceImpl implements Orderservice {
}
//参与支付有礼活动
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo, String partnerId,Integer payGiftVer) {
private void joinPayGift(String sessionId, QueryOrderResponseVo queryOrderResponseVo, String partnerId, Integer payGiftVer) {
PayGitCheckAndJoinRequestDto payGitRequestDto = new PayGitCheckAndJoinRequestDto();
payGitRequestDto.setStoreId(queryOrderResponseVo.getShopId());
payGitRequestDto.setSessionId(sessionId);
......@@ -1417,7 +1419,23 @@ public class OrderServiceImpl implements Orderservice {
payGitRequestDto.setPayType(1);//1-微信,2-储值卡
}
if (CollectionUtils.isNotEmpty(queryOrderResponseVo.getProducts())) {
payGitRequestDto.setSkuIds(queryOrderResponseVo.getProducts().stream().map(p -> p.getPid()).collect(Collectors.toList()));
// add by miaohui for 20210325_华莱士紧急上线需求支付有礼须支持套餐内固定可选商品_miaohui start
List<String> skuIds = queryOrderResponseVo.getProducts().stream().map(p -> p.getPid()).collect(Collectors.toList());
ApiLog.info("支付有礼hlsPartnerId套餐参与促销日志", hlsPartnerId, queryOrderResponseVo.getOid());
if (hlsPartnerId != null && hlsPartnerId.contains(partnerId)) {
// 华莱士获取支付有理促销数据时须将套餐商品内固定搭配、可选搭配商品的skuId一同传入
queryOrderResponseVo.getProducts().forEach(productVo -> {
if (CollectionUtils.isNotEmpty(productVo.getSetMealProducts())) {
ApiLog.info("支付有礼productVo.getSetMealProducts()套餐参与促销日志", productVo.getSetMealProducts(), queryOrderResponseVo.getOid());
productVo.getSetMealProducts().forEach(setMealProduct -> {
skuIds.add(setMealProduct.getPid());
});
}
});
}
payGitRequestDto.setSkuIds(skuIds);
// add by miaohui for 20210325_华莱士紧急上线需求支付有礼须支持套餐内固定可选商品_miaohui end
}
if (OrderType.COLLECT_GOODS.getCode().intValue() == queryOrderResponseVo.getOrderType() || OrderType.EAT_IN.getCode().intValue() == queryOrderResponseVo.getOrderType()) {
payGitRequestDto.setOrderWay(1);
......@@ -1508,15 +1526,15 @@ public class OrderServiceImpl implements Orderservice {
// 先实时查询如果没有查询es
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if(!RESPONSE_SUCCESS_CODE.equals(response.getErrcode())){
ApiLog.info("订单详情实时查询错误,baseQueryOrderRequest,",baseQueryOrderRequest,"");
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode())) {
ApiLog.info("订单详情实时查询错误,baseQueryOrderRequest,", baseQueryOrderRequest, "");
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
if(response.getData() == null && queryOrderEs){
if (response.getData() == null && queryOrderEs) {
// 查询es
response = orderCenterSdkService.queryOrderByCodeES(partnerId, oid, LogThreadLocal.getTrackingNo());
ApiLog.info("订单详情实时查询没有数据,es查询,partnerId,oid",partnerId,oid);
ApiLog.info("订单详情实时查询没有数据,es查询,partnerId,oid", partnerId, oid);
}
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
......@@ -1615,11 +1633,10 @@ public class OrderServiceImpl implements Orderservice {
// 支付有礼
// 目前只有coco在订单详情参加支付有礼,且不检查订单的状态
if (cocoPartnerId.contains(partnerId)) {
joinPayGift(sessionId, queryOrderResponseVo, partnerId,null);
joinPayGift(sessionId, queryOrderResponseVo, partnerId, null);
}
buildQueryOrderResponseVo(queryOrderResponseVo, response, partnerId);
return ResponseUtil.success(queryOrderResponseVo);
......@@ -1703,15 +1720,15 @@ public class OrderServiceImpl implements Orderservice {
.findFirst();
Map<String, Integer> existMap = new HashMap<>();
if(productVoOptional.isPresent()) {
if (productVoOptional.isPresent()) {
int size = queryOrderResponseVo.getProducts().size();
List<ProductVo> productVoList = new ArrayList<>();
for(int i=0;i<size;i++) {
for (int i = 0; i < size; i++) {
ProductVo productVo = queryOrderResponseVo.getProducts().get(i);
if(StringUtils.isBlank(productVo.getSplitIndex())) {
if (StringUtils.isBlank(productVo.getSplitIndex())) {
productVoList.add(productVo);
} else {
if(existMap.get(productVo.getSplitIndex()) == null) {
if (existMap.get(productVo.getSplitIndex()) == null) {
existMap.put(productVo.getSplitIndex(), productVoList.size());
productVoList.add(productVo);
} else {
......@@ -1740,7 +1757,7 @@ public class OrderServiceImpl implements Orderservice {
.map(McCafeOrderTypeGather::getDesc).orElse(""));
queryOrderResponseVo.setIsCouponOrder(queryOrderResponseVo.getProducts().stream()
.filter(o -> !ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).findAny().isPresent()?0:1);
.filter(o -> !ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).findAny().isPresent() ? 0 : 1);
//48小时自动退款描述
if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig() != null
......@@ -1829,45 +1846,45 @@ public class OrderServiceImpl implements Orderservice {
orderBean.setSendTime(result.getSendTime());
orderBean.setCompleteTime(result.getCompleteTime());
/** 只有配送状态是2 3 4 5时,返回三方坐标信息
* 此处如果是外卖单,则需要返回门店经纬度/用户经纬度/骑手经纬度
* 门店经纬度 = 配送返回信息为准,外卖单独新增门店经纬度字段,和配送信息接口统一 /queryOrderRider
* wanghanghang 20210129
*/
if(result.getDevlieryStatus().equals(DeliveryStatus.ALLOTRIDER.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERARRIVESTORE.getCode())||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERGETMEAL.getCode())||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERSTARTDELIVERY.getCode())
){
orderBean.getAddInfo().setDeliverStatus(result.getDevlieryStatus());
orderBean.getAddInfo().setDistance(deliveryBaseResponse.getData().getDistance());
orderBean.getAddInfo().setDuration(deliveryBaseResponse.getData().getDuration());
orderBean.getAddInfo().setStoreDistance(deliveryBaseResponse.getData().getStoreDistance());
orderBean.getAddInfo().setStoreDuration(deliveryBaseResponse.getData().getStoreDuration());
orderBean.getAddInfo().setRiderName(result.getRiderName());
orderBean.getAddInfo().setRiderPhone(result.getRiderPhone());
orderBean.getAddInfo().setOrderId(orderBean.getOid());
orderBean.getAddInfo().setStorePhone(result.getStorePhone());
//门店经纬度
if (deliveryBaseResponse.getData().getStorePoint() != null) {
String[] storePoint = deliveryBaseResponse.getData().getStorePoint().split(",");
orderBean.getAddInfo().setShopLongitude(storePoint[0]);
orderBean.getAddInfo().setShopLatitude(storePoint[1]);
}
//骑手经纬度
if (deliveryBaseResponse.getData().getCurrentPoint() != null) {
String[] currentPoint = deliveryBaseResponse.getData().getCurrentPoint().split(",");
orderBean.getAddInfo().setRiderLongitude(currentPoint[0]);
orderBean.getAddInfo().setRiderLatitude(currentPoint[1]);
}
//用户经纬度
if (deliveryBaseResponse.getData().getDestPoint() != null) {
String[] destPoint = deliveryBaseResponse.getData().getDestPoint().split(",");
orderBean.getAddInfo().setDestLongitude(destPoint[0]);
orderBean.getAddInfo().setDestLatitude(destPoint[1]);
/** 只有配送状态是2 3 4 5时,返回三方坐标信息
* 此处如果是外卖单,则需要返回门店经纬度/用户经纬度/骑手经纬度
* 门店经纬度 = 配送返回信息为准,外卖单独新增门店经纬度字段,和配送信息接口统一 /queryOrderRider
* wanghanghang 20210129
*/
if (result.getDevlieryStatus().equals(DeliveryStatus.ALLOTRIDER.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERARRIVESTORE.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERGETMEAL.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERSTARTDELIVERY.getCode())
) {
orderBean.getAddInfo().setDeliverStatus(result.getDevlieryStatus());
orderBean.getAddInfo().setDistance(deliveryBaseResponse.getData().getDistance());
orderBean.getAddInfo().setDuration(deliveryBaseResponse.getData().getDuration());
orderBean.getAddInfo().setStoreDistance(deliveryBaseResponse.getData().getStoreDistance());
orderBean.getAddInfo().setStoreDuration(deliveryBaseResponse.getData().getStoreDuration());
orderBean.getAddInfo().setRiderName(result.getRiderName());
orderBean.getAddInfo().setRiderPhone(result.getRiderPhone());
orderBean.getAddInfo().setOrderId(orderBean.getOid());
orderBean.getAddInfo().setStorePhone(result.getStorePhone());
//门店经纬度
if (deliveryBaseResponse.getData().getStorePoint() != null) {
String[] storePoint = deliveryBaseResponse.getData().getStorePoint().split(",");
orderBean.getAddInfo().setShopLongitude(storePoint[0]);
orderBean.getAddInfo().setShopLatitude(storePoint[1]);
}
//骑手经纬度
if (deliveryBaseResponse.getData().getCurrentPoint() != null) {
String[] currentPoint = deliveryBaseResponse.getData().getCurrentPoint().split(",");
orderBean.getAddInfo().setRiderLongitude(currentPoint[0]);
orderBean.getAddInfo().setRiderLatitude(currentPoint[1]);
}
//用户经纬度
if (deliveryBaseResponse.getData().getDestPoint() != null) {
String[] destPoint = deliveryBaseResponse.getData().getDestPoint().split(",");
orderBean.getAddInfo().setDestLongitude(destPoint[0]);
orderBean.getAddInfo().setDestLatitude(destPoint[1]);
}
}
}
}
}
......@@ -2126,10 +2143,10 @@ public class OrderServiceImpl implements Orderservice {
}
// 【优化】【小程序】顾客申请退款提交时,判断当前的订单状态,是否允许申请退款
//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());
}
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");
......@@ -2952,7 +2969,7 @@ public class OrderServiceImpl implements Orderservice {
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createOrderRequest.setMqMessageRequest(mqMessageRequest);
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
log.info("createOrder sessionId:{},createOrderVo:{}",createOrderVo.getSessionId(),JSON.toJSONString(createOrderRequest));
log.info("createOrder sessionId:{},createOrderVo:{}", createOrderVo.getSessionId(), JSON.toJSONString(createOrderRequest));
return orderCenterSdkService.createOrderFlow(createOrderRequest);
}
......@@ -3590,7 +3607,7 @@ public class OrderServiceImpl implements Orderservice {
channelType = OrderChannelType.SAASMALL.getCode();
} else if (UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) {
channelType = OrderChannelType.APP.getCode();
}else if(OrderChannelType.BEAUTIFUL.getCode().equals(queryOrderVo.getChannelType())){
} else if (OrderChannelType.BEAUTIFUL.getCode().equals(queryOrderVo.getChannelType())) {
channelType = OrderChannelType.BEAUTIFUL.getCode();
}
return channelType;
......@@ -4033,7 +4050,7 @@ public class OrderServiceImpl implements Orderservice {
private Boolean isQueryEs(Integer queryOrderStatus) {
if(ObjectUtils.equals(QueryOrderStatus.TAKE_MEAL.getCode(),queryOrderStatus) || ObjectUtils.equals(QueryOrderStatus.NO_PAY.getCode(),queryOrderStatus)){
if (ObjectUtils.equals(QueryOrderStatus.TAKE_MEAL.getCode(), queryOrderStatus) || ObjectUtils.equals(QueryOrderStatus.NO_PAY.getCode(), queryOrderStatus)) {
return Boolean.FALSE;
}
......@@ -4046,13 +4063,13 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String userId = userLoginInfoDto.getMemberId();
Map<String,Object> result = new HashMap<>(0);
Map<String, Object> result = new HashMap<>(0);
Integer totalOrders = 0;
try {
OrderConditionsReq orderConditionsReq = new OrderConditionsReq();
BeanUtil.convertBean(queryOrderByConditionsRequestVo, orderConditionsReq);
orderConditionsReq.setUserId(userId);
Date startDate = DateUtil.convert2Date(DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd_date) + " 00:00:00",DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
Date startDate = DateUtil.convert2Date(DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd_date) + " 00:00:00", DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
orderConditionsReq.setStartTimestamp(startDate.getTime() / 1000);
orderConditionsReq.setEndTimestamp(new Date().getTime() / 1000);
BaseDownLoadResponse<List<OrderInfoReqs>> orderInfoReqs = orderDownLoadSdkService.queryOrderByConditions(orderConditionsReq, LogTreadLocal.getTrackingNo());
......@@ -4060,7 +4077,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
totalOrders = null == orderInfoReqs.getTotalNum() ? 0 : orderInfoReqs.getTotalNum();
result.put("totalOrders",totalOrders);
result.put("totalOrders", totalOrders);
} catch (Exception e) {
LogUtil.error("queryTodayOrders", gson.toJson(queryOrderByConditionsRequestVo), e);
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
......
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