zhuyifan

fix(service): 修复订单创建时的时区问题

...@@ -588,7 +588,7 @@ public class OrderServiceRpcClient { ...@@ -588,7 +588,7 @@ public class OrderServiceRpcClient {
588 .setShouldCreateCustomerId(createOrderDto.getShouldCreateCustomerId()) 588 .setShouldCreateCustomerId(createOrderDto.getShouldCreateCustomerId())
589 .setShouldCreateCustomerId(true).setCustomerId(createOrderDto.getCustomerId()) 589 .setShouldCreateCustomerId(true).setCustomerId(createOrderDto.getCustomerId())
590 .setStallId(createOrderDto.getStallId()) 590 .setStallId(createOrderDto.getStallId())
591 - .setStatus(orderStatus) 591 + .setStatus(createOrderDto.getStatus() == null ? orderStatus : createOrderDto.getStatus())
592 .setAddress(createOrderDto.getAddress()) 592 .setAddress(createOrderDto.getAddress())
593 .setClientId(createOrderDto.getClientId()) 593 .setClientId(createOrderDto.getClientId())
594 .setShouldCreateOpenId(!LoginContextHolder.getOpenId().isEmpty()).setOpenId(LoginContextHolder.getOpenId()) 594 .setShouldCreateOpenId(!LoginContextHolder.getOpenId().isEmpty()).setOpenId(LoginContextHolder.getOpenId())
...@@ -599,7 +599,7 @@ public class OrderServiceRpcClient { ...@@ -599,7 +599,7 @@ public class OrderServiceRpcClient {
599 .setMenuId(createOrderDto.getMenuId()) 599 .setMenuId(createOrderDto.getMenuId())
600 .setTotalNum(createOrderDto.getTotalNum()) 600 .setTotalNum(createOrderDto.getTotalNum())
601 .setShouldCreatePayPrice(createOrderDto.getOnlinePay() == OnlinePayEnum.LEAVE_HOSPITAL).setPayPrice(createOrderDto.getPayPrice()) 601 .setShouldCreatePayPrice(createOrderDto.getOnlinePay() == OnlinePayEnum.LEAVE_HOSPITAL).setPayPrice(createOrderDto.getPayPrice())
602 - .setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()) 602 + .setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay(DateUtil.CHINA_ZONE).toInstant().toEpochMilli())
603 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)).setPickupCode(generatePickupCode()) 603 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)).setPickupCode(generatePickupCode())
604 .setShouldCreateOrderType(true).setOrderType(menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION ? OrderTypeEnum.DELIVERY : OrderTypeEnum.DINE_IN) 604 .setShouldCreateOrderType(true).setOrderType(menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION ? OrderTypeEnum.DELIVERY : OrderTypeEnum.DINE_IN)
605 .setShouldCreateRemark(true).setRemark(createOrderDto.getRemark()) 605 .setShouldCreateRemark(true).setRemark(createOrderDto.getRemark())
...@@ -607,6 +607,7 @@ public class OrderServiceRpcClient { ...@@ -607,6 +607,7 @@ public class OrderServiceRpcClient {
607 .setCloseTimeType(createOrderDto.getCloseTimeType()) 607 .setCloseTimeType(createOrderDto.getCloseTimeType())
608 .setShouldCreateOrderDetails(true).addAllOrderDetails(orderDetails) 608 .setShouldCreateOrderDetails(true).addAllOrderDetails(orderDetails)
609 .build(); 609 .build();
610 + log.info("createOrder mealTime:{}", createOrderDto.getMealTime());
610 611
611 if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) { 612 if (menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
612 final var skuIds = createOrderDto.getOrderDetailDtos().stream().map(CreateOrderDetailDto::getSkuId).collect(Collectors.toList()); 613 final var skuIds = createOrderDto.getOrderDetailDtos().stream().map(CreateOrderDetailDto::getSkuId).collect(Collectors.toList());
......
...@@ -54,6 +54,7 @@ import java.net.URLEncoder; ...@@ -54,6 +54,7 @@ import java.net.URLEncoder;
54 import java.nio.charset.StandardCharsets; 54 import java.nio.charset.StandardCharsets;
55 import java.text.MessageFormat; 55 import java.text.MessageFormat;
56 import java.text.ParseException; 56 import java.text.ParseException;
57 +import java.time.Instant;
57 import java.time.LocalDate; 58 import java.time.LocalDate;
58 import java.time.LocalDateTime; 59 import java.time.LocalDateTime;
59 import java.util.ArrayList; 60 import java.util.ArrayList;
...@@ -161,6 +162,7 @@ public class PayServiceClient { ...@@ -161,6 +162,7 @@ public class PayServiceClient {
161 log.error("Order not found, orderId: {}", orderId); 162 log.error("Order not found, orderId: {}", orderId);
162 return false; 163 return false;
163 } 164 }
165 + log.info("Order callback, orderId: {}", orderId);
164 166
165 final var transType = paymentCallbackResult.getTransType(); 167 final var transType = paymentCallbackResult.getTransType();
166 if (transType.equals("00")) { 168 if (transType.equals("00")) {
...@@ -205,12 +207,20 @@ public class PayServiceClient { ...@@ -205,12 +207,20 @@ public class PayServiceClient {
205 orderServiceRpcClient.updateClientCustomerOrderPaymentResult(orderById, build); 207 orderServiceRpcClient.updateClientCustomerOrderPaymentResult(orderById, build);
206 log.info("callback updateClientCustomerOrder result: {}", updateResponse.getIsUpdated()); 208 log.info("callback updateClientCustomerOrder result: {}", updateResponse.getIsUpdated());
207 if (updateResponse.getIsUpdated()) { 209 if (updateResponse.getIsUpdated()) {
210 + String createdAt = Instant.ofEpochMilli(orderById.getCreatedAt())
211 + .atZone(DateUtil.CHINA_ZONE)
212 + .minusHours(8)
213 + .format(DateUtil.Y_M_D_H_M_S);
214 + String payTimed = Instant.ofEpochMilli(orderById.getPayTime())
215 + .atZone(DateUtil.CHINA_ZONE)
216 + .minusHours(8)
217 + .format(DateUtil.Y_M_D_H_M_S);
208 final var orderPaymentSuccessData = 218 final var orderPaymentSuccessData =
209 OrderPaymentSuccessData.builder() 219 OrderPaymentSuccessData.builder()
210 .orderId(orderById.getId()) 220 .orderId(orderById.getId())
211 .orderCode(orderById.getOrderCode()) 221 .orderCode(orderById.getOrderCode())
212 - .createTime(DateUtil.formatDate(orderById.getCreatedAt(), DateUtil.Y_M_D_H_M_S)) 222 + .createTime(createdAt)
213 - .payTime(DateUtil.formatDate(orderById.getPayTime(), DateUtil.Y_M_D_H_M_S)) 223 + .payTime(payTimed)
214 .build(); 224 .build();
215 final var data = 225 final var data =
216 SocketMessage.<OrderPaymentSuccessData>builder() 226 SocketMessage.<OrderPaymentSuccessData>builder()
...@@ -340,7 +350,10 @@ public class PayServiceClient { ...@@ -340,7 +350,10 @@ public class PayServiceClient {
340 String appId = businessConfig.getPayClientId(); 350 String appId = businessConfig.getPayClientId();
341 351
342 // 构建paycontent 352 // 构建paycontent
343 - String payTime = DateUtil.formatDate(orderById.getPayTime(), DateUtil.YMDHMS); 353 + String payTime = Instant.ofEpochMilli(orderById.getPayTime())
354 + .atZone(DateUtil.CHINA_ZONE)
355 + .minusHours(8)
356 + .format(DateUtil.YMDHMS);
344 357
345 BigDecimal price = 358 BigDecimal price =
346 new BigDecimal(orderById.getPayPrice()) 359 new BigDecimal(orderById.getPayPrice())
......
...@@ -98,8 +98,7 @@ public class OrderServiceImpl implements OrderService { ...@@ -98,8 +98,7 @@ public class OrderServiceImpl implements OrderService {
98 createOrderDto.setCustomerId(operatorCreateOrderDto.getCustomerId()); 98 createOrderDto.setCustomerId(operatorCreateOrderDto.getCustomerId());
99 createOrderDto.setStallId(operatorCreateOrderDto.getStallId()); 99 createOrderDto.setStallId(operatorCreateOrderDto.getStallId());
100 createOrderDto.setMenuId(operatorCreateOrderDto.getMenuId()); 100 createOrderDto.setMenuId(operatorCreateOrderDto.getMenuId());
101 - final var mealTime = operatorCreateOrderDto.getMealTime().toLocalDate().atStartOfDay(); 101 + createOrderDto.setMealTime(operatorCreateOrderDto.getMealTime());
102 - createOrderDto.setMealTime(mealTime);
103 createOrderDto.setRemark(operatorCreateOrderDto.getRemark()); 102 createOrderDto.setRemark(operatorCreateOrderDto.getRemark());
104 createOrderDto.setCreatedBy(operatorLoginInfo.getId()); 103 createOrderDto.setCreatedBy(operatorLoginInfo.getId());
105 createOrderDto.setClientId(operator.getClientId()); 104 createOrderDto.setClientId(operator.getClientId());
......