|
@@ -8,6 +8,7 @@ import com.yami.shop.bean.dto.hb.*;
|
|
|
import com.yami.shop.bean.enums.DvyType;
|
|
|
import com.yami.shop.bean.enums.OrderStatus;
|
|
|
import com.yami.shop.bean.model.*;
|
|
|
+import com.yami.shop.common.exception.GlobalException;
|
|
|
import com.yami.shop.common.util.hb.HBR;
|
|
|
import com.yami.shop.dao.*;
|
|
|
import com.yami.shop.service.SkuService;
|
|
@@ -21,9 +22,13 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
import static com.yami.shop.common.util.HttpUtil.post;
|
|
|
|
|
@@ -437,9 +442,29 @@ public class HBOrderService implements IHBOrderService {
|
|
|
.eq(Order::getOrderNumber, orderNumber)
|
|
|
.in(Order::getHbOrderStatus, List.of(OrderStatus.CONSIGNMENT.value(), OrderStatus.SUCCESS.value()))
|
|
|
);
|
|
|
+ if (null != order) {
|
|
|
+ //判定已完成的时间
|
|
|
+ if (Objects.equals(order.getHbOrderStatus(), OrderStatus.SUCCESS.value()) && isPaymentOver7Days(order.getPayTime())) {
|
|
|
+ throw new GlobalException("支付完成已经超过7天,不支持退款");
|
|
|
+ }
|
|
|
+ //可以直接退积分或者是钱
|
|
|
+ if (order.getActualTotal() > 0) {
|
|
|
+ //退,微信支付
|
|
|
+ } else {
|
|
|
+ //退,积分
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ private boolean isPaymentOver7Days(Date paymentDate) {
|
|
|
+ // 1. 将支付时间转换为 Instant
|
|
|
+ Instant paymentInstant = paymentDate.toInstant();
|
|
|
+ // 2. 增加 7 天(精确到毫秒,考虑时区)
|
|
|
+ Instant expirationInstant = paymentInstant.plus(7, java.time.temporal.ChronoUnit.DAYS);
|
|
|
+ // 3. 获取当前时间
|
|
|
+ Instant nowInstant = Instant.now();
|
|
|
+ // 4. 比较时间
|
|
|
+ return nowInstant.isAfter(expirationInstant) || nowInstant.equals(expirationInstant);
|
|
|
}
|
|
|
|
|
|
}
|