“xubinhui 2 лет назад
Родитель
Сommit
e404e4398e
1 измененных файлов с 18 добавлено и 17 удалено
  1. 18 17
      src/main/java/com/izouma/nineth/service/DomainOrderService.java

+ 18 - 17
src/main/java/com/izouma/nineth/service/DomainOrderService.java

@@ -661,24 +661,25 @@ public class DomainOrderService {
     }
 
     public void addHyperLink(Long assetId, boolean openHyperLink, HyperLinkType hyperLinkType, String address) {
+        // 获取目标资产
         Asset asset = assetRepo.findByIdAndStatus(assetId, AssetStatus.NORMAL)
-                               .orElseThrow(new BusinessException("没找到记录"));
-        String domainName = asset.getName().substring(9);
-        DomainOrder domainOrder = domainOrderRepo
-                .findFirstByDomainNameAndOrderStatus(domainName, OrderStatus.FINISH);
-        if(openHyperLink==false){
-            domainOrder.setHyperLinkType(null);
-            domainOrder.setOpenHyperLink(false);
-            domainOrder.setAddress(null);
-            domainOrder.setCurrentOwnerId(null);
-            domainOrderRepo.save(domainOrder);
-        }else {
-            domainOrder.setOpenHyperLink(openHyperLink);
-            domainOrder.setHyperLinkType(hyperLinkType);
-            domainOrder.setAddress(address);
-            domainOrder.setCurrentOwnerId(SecurityUtils.getAuthenticatedUser().getId());
-            domainOrderRepo.save(domainOrder);
-        }
+                               .orElseThrow(() -> new BusinessException("未找到具有指定ID的正常状态资产"));
+
+        // 获取目标域名,并通过 Optional 避免可能的 NullPointerException
+        String domainName = Optional.ofNullable(asset.getName())
+                                    .filter(n -> n.length() >= 9)
+                                    .map(n -> n.substring(9))
+                                    .orElseThrow(() -> new BusinessException("无法获取资产的域名信息"));
+
+        // 获取目标订单
+        DomainOrder domainOrder = domainOrderRepo.findFirstByDomainNameAndOrderStatus(domainName, OrderStatus.FINISH);
 
+
+        // 更新订单信息
+        domainOrder.setOpenHyperLink(openHyperLink);
+        domainOrder.setHyperLinkType(openHyperLink ? hyperLinkType : null);
+        domainOrder.setAddress(openHyperLink ? address : null);
+        domainOrder.setCurrentOwnerId(openHyperLink ? SecurityUtils.getAuthenticatedUser().getId() : null);
+        domainOrderRepo.save(domainOrder);
     }
 }