Explorar el Código

fix(order):修复订单退款时间解析问题

- 添加 ParseException 异常处理- 修复时间解析逻辑,使用 DateUtils 工具类
- 调整日期判断条件,确保时间计算准确
-优化退款时间计算方式,提高代码健壮性
wzq hace 1 semana
padre
commit
d73540e9be

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/OrderController.java

@@ -48,6 +48,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -237,7 +238,7 @@ public class OrderController {
      */
     @Operation(summary = "订单退款")
     @PostMapping("/refundOrder")
-    public Result<String> refundOrder(@Validated @RequestBody RefundOrderForm refundOrderForm) {
+    public Result<String> refundOrder(@Validated @RequestBody RefundOrderForm refundOrderForm) throws ParseException {
         return Result.OK(appOrderService.refundOrder(refundOrderForm));
     }
 

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IOrderService.java

@@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -101,7 +102,7 @@ public interface IOrderService extends IService<AppOrder>{
 
     IPage<PageOrdersVO> pageOrders(PageOrdersForm pageOrdersForm);
 
-    String refundOrder(RefundOrderForm refundOrderForm);
+    String refundOrder(RefundOrderForm refundOrderForm) throws ParseException;
 
     String gameRefundOrder(String orderCode,String reason);
 

+ 9 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -26,6 +26,7 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.DictAnnotationUtil;
 import org.jeecg.modules.app.dto.AppOrderInfoDTO;
 import org.jeecg.modules.app.form.*;
@@ -58,6 +59,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -711,13 +713,13 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
                         String date = DateUtil.format(Date.from(LocalDate.now().plusDays(indate).atStartOfDay(ZoneId.systemDefault()).toInstant()), "yyyy-MM-dd");
                         String startTime = DateUtil.format(appSite.getStartTime(), "HH:mm");
                         String endTime = DateUtil.format(appSite.getEndTime(), "HH:mm");
-                        String expireTime = date + " " + endTime;
-                        if (null == appSite.getStartTime()) {
+                        if (ObjectUtil.isNotEmpty(appSite.getStartTime())) {
                             startTime = "00:00";
                         }
-                        if (null == appSite.getEndTime()) {
+                        if (ObjectUtil.isNotEmpty(appSite.getEndTime())) {
                             endTime = "23:59";
                         }
+                        String expireTime = date + " " + endTime;
                         AppOrderProInfo appOrderProInfo = new AppOrderProInfo();
                         appOrderProInfo.setProductId(createOrderForm.getProductIds());
                         appOrderProInfo.setProductName(appSitePlace.getName());
@@ -2141,7 +2143,7 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String refundOrder(RefundOrderForm refundOrderForm) {
+    public String refundOrder(RefundOrderForm refundOrderForm) throws ParseException {
         AppOrder appOrder = appOrderMapper.selectOne(Wrappers.<AppOrder>lambdaQuery().eq(AppOrder::getOrderCode, refundOrderForm.getOrderCode()).last("limit 1"));
         //退款金额
         BigDecimal refundAmount = BigDecimal.ZERO;
@@ -2176,7 +2178,9 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
                     AppSitePriceRules sitePriceRules = appSitePriceRulesMapper.selectById(productId);
                     if(ObjectUtil.isNotEmpty(sitePriceRules)){
                         if(Objects.equals(sitePriceRules.getType(), CommonConstant.ORDER_PRO_INFO_TYPE_1)){
-                            Instant originalInstant = sitePriceRules.getStartTime().toInstant();
+                            String timeStr = appOrderProInfo.getProductName().split("-")[0];
+                            int year = LocalDate.now().getYear();
+                            Instant originalInstant = DateUtils.parseDate(year+"-"+timeStr, "yyyy-MM-dd HH:mm").toInstant();
                             Instant time = originalInstant.minusSeconds(appSitePlace.getEarlyRefundTime() * 60);
                             Instant now = Instant.now();
                             if (!now.isBefore(time)) {