|  | @@ -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);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |