Browse Source

添加评价好评率

zhangxin 2 days ago
parent
commit
ea94db88d8

+ 3 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/evaluate/FindEvaluatePage.java

@@ -19,10 +19,10 @@ public class FindEvaluatePage<T> {
     private List<T> records;     // 当前页数据
     private BigDecimal averageScore; // 平均评分
     private Long scoreNum; // 评价人数
-    private BigDecimal applauseRate; // 好评率
+    private Long applauseRate; // 好评率
 
     // 从 IPage 构建
-    public static <T> FindEvaluatePage<T> build(IPage<T> page, BigDecimal averageScore,Long scoreNum) {
+    public static <T> FindEvaluatePage<T> build(IPage<T> page, BigDecimal averageScore,Long scoreNum,Long applauseRate) {
         if (page==null){
             return new FindEvaluatePage<>();
         }
@@ -34,6 +34,7 @@ public class FindEvaluatePage<T> {
         result.setRecords(page.getRecords());
         result.setAverageScore(averageScore);
         result.setScoreNum(scoreNum);
+        result.setApplauseRate(applauseRate);
         return result;
     }
 }

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

@@ -15,6 +15,7 @@ import org.jeecg.modules.system.app.entity.AppGame;
 import org.jeecg.modules.system.app.entity.AppInsure;
 import org.jeecg.modules.system.app.entity.InsurePrice;
 import org.jeecg.modules.system.app.mapper.*;
+import org.jeecg.modules.system.app.utils.StringMasker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -105,6 +106,11 @@ public class GameServiceImpl  implements IGameService {
         }
         if (strings!=null&&!strings.isEmpty()){
             List<GameOrderVo> gameOrderVoList = appOrderMapper.findByNewOrderInfo(strings,CommonConstant.ORDER_TYPE_1);
+            for (GameOrderVo gameOrderVo : gameOrderVoList) {
+                String username = gameOrderVo.getUsername();
+                String mask = StringMasker.mask(username);
+                gameOrderVo.setUsername(mask);
+            }
             findByIdResponse.setGameOrderVoList(gameOrderVoList);
         }
         return Result.OK(findByIdResponse);

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

@@ -33,4 +33,8 @@ public interface EvaluateMapper extends BaseMapper<Evaluate> {
     Long findByAverageScoreByCoursesId(@Param("coursesIds") List<String> coursesIds);
 
     Long findByScoreNumByCoursesId(@Param("coursesIds") List<String> coursesIds);
+
+    Long findByGoodScoreNum(@Param("siteId")String siteId);
+
+    Long findByGoodScoreNumByCoursesId(@Param("coursesIds")List<String> coursesIds);
 }

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

@@ -100,4 +100,23 @@
             #{coursesId}
         </foreach>
     </select>
+    <select id="findByGoodScoreNum" resultType="java.lang.Long">
+        select count(1)
+        from nm_evaluate ne
+                 left join  sys_depart sd on  ne.dept_id = sd.id
+                 LEFT JOIN nm_site ns on  ne.site_id =ns.id
+                 LEFT JOIN sys_user su on  ne.user_id =su.id
+        where 1=1 and  ne.check_status=1 and  ne.site_id =#{siteId} and score >= 4
+    </select>
+    <select id="findByGoodScoreNumByCoursesId" resultType="java.lang.Long">
+        select count(1)
+        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 score >= 4 and  o.product_ids in
+        <foreach collection="coursesIds" item="coursesId" open="(" separator="," close=")">
+            #{coursesId}
+        </foreach>
+    </select>
 </mapper>

+ 15 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/EvaluateServiceImpl.java

@@ -66,13 +66,17 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
         IPage<FindEvaluateResponseDTO> findEvaluateResponseDTOIPage=page;
         List<String> coursesIds = new ArrayList<>();
         BigDecimal averageScore =BigDecimal.valueOf(0).setScale(1 , RoundingMode.DOWN);
-        Long scoreNum =0L;
-        Long scoreSum =0L;
+        Long scoreNum =0L;//评论数
+        Long scoreSum =0L;//总评分
+        Long goodScoreNum =0L;//好评数
+        long applauseRate = 0L;
         if (StringUtils.isNotEmpty(findEvaluateDTO.getSiteId())){
             findEvaluateResponseDTOIPage = evaluateMapper.findBySiteId(page,findEvaluateDTO.getSiteId());
             scoreSum = evaluateMapper.findByAverageScore(findEvaluateDTO.getSiteId());
             scoreNum =  evaluateMapper.findByScoreNum(findEvaluateDTO.getSiteId());
+            goodScoreNum = evaluateMapper.findByGoodScoreNum(findEvaluateDTO.getSiteId());
             averageScore=calculateAverage(scoreSum,scoreNum);
+            applauseRate = goodScoreNumRate(goodScoreNum, scoreNum);
         } else if (StringUtils.isNotEmpty(findEvaluateDTO.getInstructorId())) {
             coursesIds = appCoursesMapper.findByInstructorId(findEvaluateDTO.getInstructorId());
         } else if (StringUtils.isNotEmpty(findEvaluateDTO.getCoursesId())) {
@@ -82,10 +86,12 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
             findEvaluateResponseDTOIPage = evaluateMapper.findByCoursesId(page,coursesIds);
             scoreSum = evaluateMapper.findByAverageScoreByCoursesId(coursesIds);
             scoreNum =  evaluateMapper.findByScoreNumByCoursesId(coursesIds);
+            goodScoreNum = evaluateMapper.findByGoodScoreNumByCoursesId(coursesIds);
             averageScore=calculateAverage(scoreSum,scoreNum);
+            applauseRate = goodScoreNumRate(goodScoreNum, scoreNum);
         }
 
-        return  FindEvaluatePage.build(findEvaluateResponseDTOIPage, averageScore, scoreNum);
+        return  FindEvaluatePage.build(findEvaluateResponseDTOIPage, averageScore, scoreNum,applauseRate);
     }
 
     @Override
@@ -105,4 +111,10 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
         // 计算平均数,保留1位小数并四舍五入
         return sum.divide(num, 1, RoundingMode.HALF_UP);
     }
+
+
+    public static long goodScoreNumRate(Long goodScoreNum, Long scoreNum) {
+        // 计算平均数
+        return scoreNum == 0 ? 0 : (long) (goodScoreNum * 100.00 / scoreNum);
+    }
 }