Przeglądaj źródła

fix(app): 修复评论数量和总评分为空时的异常

- 在 AppHomeServiceImpl 和 DetailServiceImpl 中添加了对评分数量和总评分的空值检查
-避免了在计算平均分时因空值导致的潜在异常- 提高了代码的健壮性和容错性
SheepHy 3 tygodni temu
rodzic
commit
53e8cf33f6

+ 8 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java

@@ -195,8 +195,14 @@ public class AppHomeServiceImpl implements IAppHomeService {
                 }else{
                     placeVO.setKm(0.0);
                 }
-                long scoreNum = evaluateMapper.findByScoreNum(placeVO.getId());
-                long scoreSum = evaluateMapper.findByAverageScore(placeVO.getId());//评论总评分
+                Long scoreNum = evaluateMapper.findByScoreNum(placeVO.getId());
+                if(null == scoreNum){
+                    scoreNum = 0L;
+                }
+                Long scoreSum = evaluateMapper.findByAverageScore(placeVO.getId());//评论总评分
+                if(null == scoreSum){
+                    scoreSum = 0L;
+                }
                 placeVO.setCategory(getCategoryName(placeVO.getCategoryId()));
                 placeVO.setTicketWhether(ticketWhether);
                 placeVO.setGoodRate(calculateAverage(scoreSum, scoreNum));

+ 8 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -97,8 +97,14 @@ public class DetailServiceImpl implements IDetailService {
     public PlaceInfoVO getPlaceInfo(String id) {
         AppSite appSite = appSiteMapper.selectById(id);
         PlaceInfoVO placeInfo = appSiteMapper.getPlaceInfo(id);
-        long scoreNum = evaluateMapper.findByScoreNum(id);
-        long scoreSum = evaluateMapper.findByAverageScore(id);//评论总评分
+        Long scoreNum = evaluateMapper.findByScoreNum(id);
+        if(null == scoreNum){
+            scoreNum = 0L;
+        }
+        Long scoreSum = evaluateMapper.findByAverageScore(id);//评论总评分
+        if(null == scoreSum){
+            scoreSum = 0L;
+        }
         placeInfo.setGoodRate(calculateAverage(scoreSum, scoreNum));
         List<DictModel> dictModels = sysDictMapper.queryDictItemsByCode(FACILITY_INFO);
         List<String> facilityInfo = new ArrayList<>();