zhuyifan

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

......@@ -577,13 +577,7 @@ public class OrderServiceRpcClient {
.addAllDoctors(createOrderDto.getCustomerNoticeJson().getDoctors())
.build();
final var menuById = menuServiceRpcClient.getMenuById(createOrderDto.getEnterpriseId(), createOrderDto.getMenuId());
OrderStatusEnum orderStatus = OrderStatusEnum.TO_PREPARE;
if (createOrderDto.getOnlinePay() != OnlinePayEnum.ONLINE) {
var orderRuleJson = menuById.getResponse().getOrderRuleJson();
if (orderRuleJson.getModeOfPayment() != ModeOfPaymentEnum.ONLINE && orderRuleJson.getCloseTimeType() == CloseTimeTypeEnum.IMMEDIATELY) {
orderStatus = OrderStatusEnum.PREPARING;
}
}
OrderStatusEnum orderStatus = OrderStatusEnum.PREPARING;
final var creation = ClientCustomerOrderCreation.newBuilder()
.setShouldCreateCustomerId(createOrderDto.getShouldCreateCustomerId())
.setShouldCreateCustomerId(true).setCustomerId(createOrderDto.getCustomerId())
......@@ -599,7 +593,7 @@ public class OrderServiceRpcClient {
.setMenuId(createOrderDto.getMenuId())
.setTotalNum(createOrderDto.getTotalNum())
.setShouldCreatePayPrice(createOrderDto.getOnlinePay() == OnlinePayEnum.LEAVE_HOSPITAL).setPayPrice(createOrderDto.getPayPrice())
.setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli())
.setMealTime(createOrderDto.getMealTime().toLocalDate().atStartOfDay(DateUtil.CHINA_ZONE).toInstant().toEpochMilli())
.setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)).setPickupCode(generatePickupCode())
.setShouldCreateOrderType(true).setOrderType(menuById.getResponse().getOrderRuleJson().getCloseTimeType() == CloseTimeTypeEnum.RESERVATION ? OrderTypeEnum.DELIVERY : OrderTypeEnum.DINE_IN)
.setShouldCreateRemark(true).setRemark(createOrderDto.getRemark())
......
......@@ -54,6 +54,7 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.text.ParseException;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
......@@ -161,6 +162,7 @@ public class PayServiceClient {
log.error("Order not found, orderId: {}", orderId);
return false;
}
log.info("Order callback, orderId: {}", orderId);
final var transType = paymentCallbackResult.getTransType();
if (transType.equals("00")) {
......@@ -205,12 +207,20 @@ public class PayServiceClient {
orderServiceRpcClient.updateClientCustomerOrderPaymentResult(orderById, build);
log.info("callback updateClientCustomerOrder result: {}", updateResponse.getIsUpdated());
if (updateResponse.getIsUpdated()) {
String createdAt = Instant.ofEpochMilli(orderById.getCreatedAt())
.atZone(DateUtil.CHINA_ZONE)
.minusHours(8)
.format(DateUtil.Y_M_D_H_M_S);
String payTimed = Instant.ofEpochMilli(orderById.getPayTime())
.atZone(DateUtil.CHINA_ZONE)
.minusHours(8)
.format(DateUtil.Y_M_D_H_M_S);
final var orderPaymentSuccessData =
OrderPaymentSuccessData.builder()
.orderId(orderById.getId())
.orderCode(orderById.getOrderCode())
.createTime(DateUtil.formatDate(orderById.getCreatedAt(), DateUtil.Y_M_D_H_M_S))
.payTime(DateUtil.formatDate(orderById.getPayTime(), DateUtil.Y_M_D_H_M_S))
.createTime(createdAt)
.payTime(payTimed)
.build();
final var data =
SocketMessage.<OrderPaymentSuccessData>builder()
......@@ -340,7 +350,10 @@ public class PayServiceClient {
String appId = businessConfig.getPayClientId();
// 构建paycontent
String payTime = DateUtil.formatDate(orderById.getPayTime(), DateUtil.YMDHMS);
String payTime = Instant.ofEpochMilli(orderById.getPayTime())
.atZone(DateUtil.CHINA_ZONE)
.minusHours(8)
.format(DateUtil.YMDHMS);
BigDecimal price =
new BigDecimal(orderById.getPayPrice())
......