Commit b14608cc by chongfu.liang

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

parents a6c584b8 c9c054f3
...@@ -335,16 +335,6 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -335,16 +335,6 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
if(extendInfo.getData() == null){ if(extendInfo.getData() == null){
return orderSdkAdapter.convent2PayAccessResponse(response); return orderSdkAdapter.convent2PayAccessResponse(response);
} }
CalculationDiscountRequest discountRequest=activitySdkAdapter.convert2CalculationDiscountRequestDto(orderByIdResponse.getData(),extendInfo.getData());
BaseResponse<CalculationDiscountResponseDTO> baseResponse=promotionSdkService.calculationDiscount(discountRequest,confirmOrderRequest.getTrackingNo());
List<Integer> activityTypes=baseResponse.getData().getDiscounts().stream().map(DiscountDTO::getType).collect(Collectors.toList());
if(activityTypes.contains(221)){
DiscountDTO discountDTO=baseResponse.getData().getDiscounts().stream().filter(d -> 221==d.getType()).findFirst().get();
SendPointRequest pointRequest=memberSdkAdapter.convert2SendPointRequest(confirmOrderRequest,orderByIdResponse.getData(),discountDTO);
if (pointRequest.getSendPoint() != 0) {
memberPropertyService.sendMemberPoint(pointRequest,confirmOrderRequest.getTrackingNo());
}
}
return orderSdkAdapter.convent2PayAccessResponse(response); return orderSdkAdapter.convent2PayAccessResponse(response);
} }
......
...@@ -19,6 +19,7 @@ import cn.freemud.amqp.MQMessage; ...@@ -19,6 +19,7 @@ import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService; import cn.freemud.amqp.MQService;
import cn.freemud.constant.RedisKeyConstant; import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.dto.OrderExtInfoDto; import cn.freemud.entities.dto.OrderExtInfoDto;
import cn.freemud.entities.dto.OrderStatusChangeRequestDto;
import cn.freemud.entities.dto.UserLoginInfoDto; import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.WechatReportOrderDto; import cn.freemud.entities.dto.WechatReportOrderDto;
import cn.freemud.entities.vo.OrderCallBackRequestVo; import cn.freemud.entities.vo.OrderCallBackRequestVo;
...@@ -27,6 +28,7 @@ import com.alibaba.fastjson.JSON; ...@@ -27,6 +28,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog; import com.freemud.application.sdk.api.log.ThirdPartyLog;
...@@ -71,6 +73,8 @@ public class OrderCallBackMQService { ...@@ -71,6 +73,8 @@ public class OrderCallBackMQService {
private AssortmentOpenPlatformWxappManager openPlatformWxappManager; private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
@Value("${saas.order.invoice.report.partnerIds}") @Value("${saas.order.invoice.report.partnerIds}")
private String invoicePartnerIds; private String invoicePartnerIds;
private static final String backOrdersChangeOrderStatusConsumerQueue="program.backorders_change_order_status_consumer_queue";
private static final String backOrdersNotifyActivityExchange="program.backorders_notify_activity_exchange";
public void sendOrderMQ(OrderCallBackRequestVo body) { public void sendOrderMQ(OrderCallBackRequestVo body) {
//发送订单回调 //发送订单回调
...@@ -87,6 +91,31 @@ public class OrderCallBackMQService { ...@@ -87,6 +91,31 @@ public class OrderCallBackMQService {
sendWechatReportMQ(body); sendWechatReportMQ(body);
//上报发票信息 //上报发票信息
sendInvoiceReportMQ(body); sendInvoiceReportMQ(body);
//未支付超时关单,发送队列冲正积分、券码等
revert(body);
}
/**
* 冲正库存、券码等
* @param body
*/
public void revert(OrderCallBackRequestVo body){
if (ObjectUtils.notEqual(body.getDelayMsgEventType(),2)){
return;
}
String orderCode=body.getOrderCode();
ApiLog.info("backOrdersStatusChange", orderCode);
OrderStatusChangeRequestDto requestDto = new OrderStatusChangeRequestDto();
requestDto.setOid(orderCode);
//2:未支付
requestDto.setOrderStatus(2);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", orderCode, backOrdersChangeOrderStatusConsumerQueue);
MQMessage<OrderStatusChangeRequestDto> message = new MQMessage<>(header, requestDto);
mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersChangeOrderStatusConsumerQueue, message);
} catch (Exception e) {
ErrorLog.errorConvertJson(this.getClass(),"activityReverseError:"+orderCode,e);
}
} }
private void sendWechatReportMQ(OrderCallBackRequestVo body) { private void sendWechatReportMQ(OrderCallBackRequestVo body) {
try { try {
......
package cn.freemud.entities.dto;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderStatusChangeRequestDto
* @Package cn.freemud.entities.dto.user
* @Description:
* @author: bowen.hu
* @date: 2019-09-10 15:28
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class OrderStatusChangeRequestDto {
/**
* 订单号
*/
private String oid;
/**
* 订单状态
*/
private Integer orderStatus;
}
...@@ -23,7 +23,10 @@ public class OrderCallBackRequestVo { ...@@ -23,7 +23,10 @@ public class OrderCallBackRequestVo {
private String orderCode; private String orderCode;
// 售后单编号(operateType=2返回) // 售后单编号(operateType=2返回)
private String afterSalesCode; private String afterSalesCode;
//延迟类型 /**
* 延迟通知类型
* 2 未支付超时关单
*/
private Integer delayMsgEventType; private Integer delayMsgEventType;
//操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作 //操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作
private Integer operateType; private Integer operateType;
......
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
@ApiModel @ApiModel
...@@ -28,7 +29,7 @@ public class QueryOrderByConditionsResponseVo { ...@@ -28,7 +29,7 @@ public class QueryOrderByConditionsResponseVo {
@ApiModelProperty(value = "订单编号") @ApiModelProperty(value = "订单编号")
private String orderCode; private String orderCode;
@ApiModelProperty(value = "上传图片") @ApiModelProperty(value = "上传图片")
private String imgUrl; private List<String> imgUrl;
@ApiModelProperty(value = "取消原因") @ApiModelProperty(value = "取消原因")
private String cancelReason; private String cancelReason;
} }
...@@ -183,12 +183,20 @@ public class CheckOrder { ...@@ -183,12 +183,20 @@ public class CheckOrder {
} }
// TODO: 2020/6/16 门店校验处理 // TODO: 2020/6/16 门店校验处理
String takeMealFlag = createOrderVo.getTakeMealFlag(); String takeMealFlag = createOrderVo.getTakeMealFlag();
//未营业无预约时间无法下单 String takeMealTimes = createOrderVo.getTakeMealTime();
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState()) && StringUtils.isBlank(takeMealFlag) && "0".equals(takeMealFlag)) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE); //立即送达
if("0".equals(takeMealFlag) || (StringUtils.isEmpty(createOrderVo.getExpectTime()) && StringUtils.isEmpty(takeMealTimes))) {
//未营业无预约时间无法下单
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState())) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
// 外卖单选择立即送达的话,下单时间必须在店铺外卖时间内
if(createOrderVo.getOrderType().compareTo(CreateOrderType.TAKE_OUT.getCode()) == 0) {
checkTakeOutTime(storeResponseDto, new Date(), new Date(), true);
}
} }
String takeMealTimes = createOrderVo.getTakeMealTime();
//有预约时间 //有预约时间
if(StringUtils.isNotBlank(takeMealTimes) || StringUtils.isNotBlank(createOrderVo.getExpectTime())){ if(StringUtils.isNotBlank(takeMealTimes) || StringUtils.isNotBlank(createOrderVo.getExpectTime())){
// 设置预约时间 // 设置预约时间
...@@ -310,37 +318,48 @@ public class CheckOrder { ...@@ -310,37 +318,48 @@ public class CheckOrder {
} }
if (CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())) { if (CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())) {
String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",") checkTakeOutTime(storeResponseDto, date, takeMealDateTime, expectTimeInTodayBusinessTime);
.replace("_", ","); }
String[] deliverys = deliveryStr.split(","); }
Date deliveryStartDate = null;
Date deliveryEndDate = null; /**
if (deliverys.length == 2) { * 检验订单是否在外卖时间内
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); * @param storeResponseDto 店铺信息
SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); * @param now 当前时间
String startDateTimeStr = yyyyMMdd.format(date) + " " + deliverys[0] + ":00"; * @param takeMealDateTime 预约单送达时间/即时单下单时间
String endDateTimeStr = yyyyMMdd.format(date) + " " + deliverys[1] + ":00"; * @param expectTimeInTodayBusinessTime 是否在当日营业时间内
try { */
deliveryEndDate = hhmmss.parse(endDateTimeStr); private void checkTakeOutTime(StoreResponse.BizVO storeResponseDto, Date now, Date takeMealDateTime, boolean expectTimeInTodayBusinessTime) {
deliveryStartDate = hhmmss.parse(startDateTimeStr); String deliveryStr = storeResponseDto.getDeliveryHoursDay().replace("-", ",")
} catch (ParseException e) { .replace("_", ",");
LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage()); String[] deliverys = deliveryStr.split(",");
} Date deliveryStartDate = null;
} Date deliveryEndDate = null;
if (deliveryStartDate == null || deliveryEndDate == null) { if (deliverys.length == 2) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY); 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";
if (expectTimeInTodayBusinessTime && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) { String endDateTimeStr = yyyyMMdd.format(now) + " " + deliverys[1] + ":00";
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY); try {
} deliveryStartDate = hhmmss.parse(startDateTimeStr);
Date nextDeliveryStartDate = DateUtil.addDays(deliveryStartDate, 1); deliveryEndDate = hhmmss.parse(endDateTimeStr);
Date nextDeliveryEndDate = DateUtil.addDays(deliveryEndDate, 1); } catch (ParseException e) {
// 隔日预约外卖校验预约配送时间 LogUtil.error("getStoreDeliveryInfo_error", endDateTimeStr, e.getMessage());
if (!expectTimeInTodayBusinessTime && (takeMealDateTime.before(nextDeliveryStartDate) || takeMealDateTime.after(nextDeliveryEndDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
} }
} }
if (deliveryStartDate == null || deliveryEndDate == null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
// 校验预约配送时间
if (expectTimeInTodayBusinessTime && (takeMealDateTime.before(deliveryStartDate) || takeMealDateTime.after(deliveryEndDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
Date nextDeliveryStartDate = DateUtil.addDays(deliveryStartDate, 1);
Date nextDeliveryEndDate = DateUtil.addDays(deliveryEndDate, 1);
// 隔日预约外卖校验预约配送时间
if (!expectTimeInTodayBusinessTime && (takeMealDateTime.before(nextDeliveryStartDate) || takeMealDateTime.after(nextDeliveryEndDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
} }
public Date getOrderExpectTime(String takeMealFlag,String takeMealTimes,String expectTime, public Date getOrderExpectTime(String takeMealFlag,String takeMealTimes,String expectTime,
......
...@@ -129,6 +129,7 @@ import org.apache.commons.collections4.MapUtils; ...@@ -129,6 +129,7 @@ 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;
...@@ -138,6 +139,7 @@ import org.springframework.stereotype.Service; ...@@ -138,6 +139,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil; import tk.mybatis.mapper.util.StringUtil;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
...@@ -2417,9 +2419,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2417,9 +2419,9 @@ public class OrderServiceImpl implements Orderservice {
OrderConditionsReq orderConditionsReq = new OrderConditionsReq(); OrderConditionsReq orderConditionsReq = new OrderConditionsReq();
BeanUtil.convertBean(queryOrderByConditionsRequestVo, orderConditionsReq); BeanUtil.convertBean(queryOrderByConditionsRequestVo, orderConditionsReq);
orderConditionsReq.setUserId(userId); orderConditionsReq.setUserId(userId);
Date now = new Date(); Date startDate = DateUtil.convert2Date(DateUtil.addDays(new Date(),-28), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
orderConditionsReq.setStartTimestamp(DateUtil.addMonths(now, -3).getTime()/1000); orderConditionsReq.setStartTimestamp(startDate.getTime()/1000);
orderConditionsReq.setEndTimestamp(now.getTime()/1000); orderConditionsReq.setEndTimestamp(new Date().getTime()/1000);
BaseDownLoadResponse<List<OrderInfoReqs>> orderInfoReqs = orderDownLoadSdkService.queryOrderByConditions(orderConditionsReq,LogTreadLocal.getTrackingNo()); BaseDownLoadResponse<List<OrderInfoReqs>> orderInfoReqs = orderDownLoadSdkService.queryOrderByConditions(orderConditionsReq,LogTreadLocal.getTrackingNo());
if (!String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoReqs.getCode())) { if (!String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoReqs.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode()); return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
...@@ -2427,23 +2429,28 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2427,23 +2429,28 @@ public class OrderServiceImpl implements Orderservice {
Map<String, Object> responseMap = Maps.newTreeMap(); Map<String, Object> responseMap = Maps.newTreeMap();
//用户无订单数据 //用户无订单数据
if (orderInfoReqs.getResult() == null || orderInfoReqs.getTotalNum()== 0) { if (orderInfoReqs.getResult() == null || orderInfoReqs.getTotalNum()== 0) {
return ResponseUtil.success(orderInfoReqs); return ResponseUtil.success();
} }
responseVos = orderInfoReqs.getResult().stream().map( responseVos = orderInfoReqs.getResult().stream().map(
orderBean -> { orderBean -> {
QueryOrderByConditionsResponseVo queryOrderByConditionsResponseVo = new QueryOrderByConditionsResponseVo(); QueryOrderByConditionsResponseVo queryOrderByConditionsResponseVo = new QueryOrderByConditionsResponseVo();
BeanUtil.convertBean(orderBean,queryOrderByConditionsResponseVo); BeanUtil.convertBean(orderBean,queryOrderByConditionsResponseVo);
String imgUrl = ""; BeanUtil.convertBean(orderBean,queryOrderByConditionsResponseVo);
String extInfo = orderBean.getExtInfo(); List<String> imgUrl = new ArrayList<>();
if(!StringUtil.isEmpty(extInfo)){ String extInfo = orderBean.getExtInfo();
JSONObject jsonObject = JSONObject.parseObject(extInfo); if(!StringUtil.isEmpty(extInfo)){
imgUrl = String.valueOf(jsonObject.get("imgUlr")); JSONObject jsonObject = JSONObject.parseObject(extInfo);
JSONArray jsonArray = (JSONArray) JSONArray.parse(jsonObject.getString("imgUlr"));
for(int i = 0 ;i< jsonArray.size() ;i++){
imgUrl.add(String.valueOf(jsonArray.get(i)));
} }
queryOrderByConditionsResponseVo.setImgUrl(imgUrl);
queryOrderByConditionsResponseVo.setOrderStateValue(orderSdkAdapter.getOrderStatusValue(orderBean.getOrderState()));
queryOrderByConditionsResponseVo.setCreateTime(DateUtil.convert2Str(DateUtil.convert2Date(orderBean.getCreateTime(),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
return queryOrderByConditionsResponseVo;
} }
queryOrderByConditionsResponseVo.setImgUrl(imgUrl);
queryOrderByConditionsResponseVo.setOrderStateValue(orderSdkAdapter.getOrderStatusValue(orderBean.getOrderState()));
SimpleDateFormat sdff=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sd = sdff.format(new Date(Long.valueOf(orderBean.getCreateTime())));
queryOrderByConditionsResponseVo.setCreateTime(sd);
return queryOrderByConditionsResponseVo; }
).collect(Collectors.toList()); ).collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
LogUtil.error("queryOrders_error", gson.toJson(queryOrderByConditionsRequestVo), e); LogUtil.error("queryOrders_error", gson.toJson(queryOrderByConditionsRequestVo), e);
...@@ -2451,4 +2458,5 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2451,4 +2458,5 @@ public class OrderServiceImpl implements Orderservice {
} }
return ResponseUtil.success(responseVos); return ResponseUtil.success(responseVos);
} }
} }
...@@ -20,6 +20,8 @@ import java.util.List; ...@@ -20,6 +20,8 @@ import java.util.List;
@ToString @ToString
public class ParkingOrderAffirmReq { public class ParkingOrderAffirmReq {
private String appId;
/*** "订单号"***/ /*** "订单号"***/
private String orderCode; private String orderCode;
......
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