Browse Source

修复好评率bug

zhangxin 2 tuần trước cách đây
mục cha
commit
f78210ad2a

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

@@ -293,7 +293,15 @@ public class DetailServiceImpl implements IDetailService {
                 double km = PositionUtil.calculateDistance(latitude, longitude, appSite.getLatitude().doubleValue(), appSite.getLongitude().doubleValue());
                 courseInfoVO.setKm(new BigDecimal(String.valueOf(km)));
             }
+            String positiveRating = evaluateMapper.findPositiveRating(courseInfoVO.getId());
+            BigDecimal decimalValue = null;
+            try {
+                decimalValue = new BigDecimal(positiveRating);
+            } catch (Exception e) {
+                decimalValue=BigDecimal.ZERO;
+            }
 
+            courseInfoVO.setGoodRate(decimalValue);
             courseInfoVOList.add(courseInfoVO);
         });
         return courseInfoVOList;
@@ -409,6 +417,7 @@ public class DetailServiceImpl implements IDetailService {
             courseResponseVo.setCover(string);
             courseResponseVo.setAnnualSalesNum(getCourseSalesCountYear(courseResponseVo.getId()));
             courseResponseVo.setSaleNum(getCourseSalesCount(courseResponseVo.getId()));
+            courseResponseVo.setGoodRate(evaluateMapper.findPositiveRating(courseResponseVo.getId()));
         });
         return courseInfoVOIPage;
     }

+ 2 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/EvaluateMapper.java

@@ -37,4 +37,6 @@ public interface EvaluateMapper extends BaseMapper<Evaluate> {
     Long findByGoodScoreNum(@Param("siteId")String siteId);
 
     Long findByGoodScoreNumByCoursesId(@Param("coursesIds")List<String> coursesIds);
+
+    String findPositiveRating(@Param("id") String id);
 }

+ 11 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/EvaluateMapper.xml

@@ -122,4 +122,15 @@
             #{coursesId}
         </foreach>
     </select>
+    <select id="findPositiveRating" resultType="java.lang.String">
+        SELECT
+            COALESCE(ROUND(COUNT(CASE WHEN ne.score >= 4 THEN 1 END) * 100.0 / COUNT(*),2),0.00) AS good_rate
+        FROM nm_evaluate ne
+        LEFT JOIN sys_depart sd ON ne.dept_id = sd.id
+        LEFT JOIN sys_user su ON ne.user_id = su.id
+        LEFT JOIN nm_order o ON ne.order_id = o.id
+        WHERE ne.check_status = 1
+        AND o.product_ids  = #{id}
+
+    </select>
 </mapper>