zhuyifan

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

...@@ -577,13 +577,7 @@ public class OrderServiceRpcClient { ...@@ -577,13 +577,7 @@ public class OrderServiceRpcClient {
577 .addAllDoctors(createOrderDto.getCustomerNoticeJson().getDoctors()) 577 .addAllDoctors(createOrderDto.getCustomerNoticeJson().getDoctors())
578 .build(); 578 .build();
579 final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId()); 579 final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId());
580 - OrderStatusEnum orderStatus = OrderStatusEnum.TO_PREPARE; 580 + OrderStatusEnum orderStatus = OrderStatusEnum.PREPARING;
581 - if (createOrderDto.getOnlinePay() != OnlinePayEnum.ONLINE) {
582 - var orderRuleJson = menuById.getResponse().getOrderRuleJson();
583 - if (orderRuleJson.getModeOfPayment() != ModeOfPaymentEnum.ONLINE && orderRuleJson.getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
584 - orderStatus = OrderStatusEnum.PREPARING;
585 - }
586 - }
587 final var creation = ClientCustomerOrderCreation.newBuilder() 581 final var creation = ClientCustomerOrderCreation.newBuilder()
588 .setShouldCreateCustomerId(createOrderDto.getShouldCreateCustomerId()) 582 .setShouldCreateCustomerId(createOrderDto.getShouldCreateCustomerId())
589 .setShouldCreateCustomerId(true).setCustomerId(createOrderDto.getCustomerId()) 583 .setShouldCreateCustomerId(true).setCustomerId(createOrderDto.getCustomerId())
...@@ -599,7 +593,7 @@ public class OrderServiceRpcClient { ...@@ -599,7 +593,7 @@ public class OrderServiceRpcClient {
599 .setMenuId(createOrderDto.getMenuId()) 593 .setMenuId(createOrderDto.getMenuId())
600 .setTotalNum(createOrderDto.getTotalNum()) 594 .setTotalNum(createOrderDto.getTotalNum())
601 .setShouldCreatePayPrice(createOrderDto.getOnlinePay() == OnlinePayEnum.LEAVE_HOSPITAL).setPayPrice(createOrderDto.getPayPrice()) 595 .setShouldCreatePayPrice(createOrderDto.getOnlinePay() == OnlinePayEnum.LEAVE_HOSPITAL).setPayPrice(createOrderDto.getPayPrice())
602 - .setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()) 596 + .setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay(DateUtil.CHINA_ZONE).toInstant().toEpochMilli())
603 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)).setPickupCode(generatePickupCode()) 597 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)).setPickupCode(generatePickupCode())
604 .setShouldCreateOrderType(true).setOrderType(menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION ? OrderTypeEnum.DELIVERY : OrderTypeEnum.DINE_IN) 598 .setShouldCreateOrderType(true).setOrderType(menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION ? OrderTypeEnum.DELIVERY : OrderTypeEnum.DINE_IN)
605 .setShouldCreateRemark(true).setRemark(createOrderDto.getRemark()) 599 .setShouldCreateRemark(true).setRemark(createOrderDto.getRemark())
......
...@@ -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())
......