|
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.jeecg.modules.app.dto.evaluate.FindEvaluateDTO;
|
|
|
+import org.jeecg.modules.app.dto.evaluate.FindEvaluatePage;
|
|
|
import org.jeecg.modules.system.app.dto.evaluate.FindEvaluateRequestDTO;
|
|
|
import org.jeecg.modules.system.app.dto.evaluate.FindEvaluateResponseDTO;
|
|
|
import org.jeecg.modules.system.app.entity.Evaluate;
|
|
@@ -15,6 +16,8 @@ import org.jeecg.modules.system.app.utils.StringMasker;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
@@ -34,8 +37,6 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
|
|
|
private AppCoursesMapper appCoursesMapper;
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
@Override
|
|
|
public IPage<FindEvaluateResponseDTO> findPage(Integer pageNo, Integer pageSize, FindEvaluateRequestDTO findEvaluateRequestDTO) {
|
|
|
Page<FindEvaluateResponseDTO> page = new Page<FindEvaluateResponseDTO>(pageNo, pageSize);
|
|
@@ -60,12 +61,18 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<FindEvaluateResponseDTO> findByOrderPage(FindEvaluateDTO findEvaluateDTO) {
|
|
|
+ public FindEvaluatePage<FindEvaluateResponseDTO> findByOrderPage(FindEvaluateDTO findEvaluateDTO) {
|
|
|
Page<FindEvaluateResponseDTO> page = new Page<FindEvaluateResponseDTO>(findEvaluateDTO.getPageNo(), findEvaluateDTO.getPageSize());
|
|
|
- IPage<FindEvaluateResponseDTO> findEvaluateResponseDTOIPage=null;
|
|
|
+ IPage<FindEvaluateResponseDTO> findEvaluateResponseDTOIPage=page;
|
|
|
List<String> coursesIds = new ArrayList<>();
|
|
|
+ BigDecimal averageScore =BigDecimal.valueOf(0).setScale(1 , RoundingMode.DOWN);
|
|
|
+ Long scoreNum =0L;
|
|
|
+ Long scoreSum =0L;
|
|
|
if (StringUtils.isNotEmpty(findEvaluateDTO.getSiteId())){
|
|
|
findEvaluateResponseDTOIPage = evaluateMapper.findBySiteId(page,findEvaluateDTO.getSiteId());
|
|
|
+ scoreSum = evaluateMapper.findByAverageScore(findEvaluateDTO.getSiteId());
|
|
|
+ scoreNum = evaluateMapper.findByScoreNum(findEvaluateDTO.getSiteId());
|
|
|
+ averageScore=calculateAverage(scoreSum,scoreNum);
|
|
|
} else if (StringUtils.isNotEmpty(findEvaluateDTO.getInstructorId())) {
|
|
|
coursesIds = appCoursesMapper.findByInstructorId(findEvaluateDTO.getInstructorId());
|
|
|
} else if (StringUtils.isNotEmpty(findEvaluateDTO.getCoursesId())) {
|
|
@@ -73,7 +80,29 @@ public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> i
|
|
|
}
|
|
|
if (coursesIds!=null&&!coursesIds.isEmpty()){
|
|
|
findEvaluateResponseDTOIPage = evaluateMapper.findByCoursesId(page,coursesIds);
|
|
|
+ scoreSum = evaluateMapper.findByAverageScoreByCoursesId(coursesIds);
|
|
|
+ scoreNum = evaluateMapper.findByScoreNumByCoursesId(coursesIds);
|
|
|
+ averageScore=calculateAverage(scoreSum,scoreNum);
|
|
|
}
|
|
|
- return findEvaluateResponseDTOIPage;
|
|
|
+
|
|
|
+ return FindEvaluatePage.build(findEvaluateResponseDTOIPage, averageScore, scoreNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Evaluate findByOrder(String orderId) {
|
|
|
+ return evaluateMapper.findByOrderId(orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static BigDecimal calculateAverage(Long scoreSum, Long scoreNum) {
|
|
|
+ if (scoreNum == 0L) {
|
|
|
+ return BigDecimal.valueOf(0).setScale(1 , RoundingMode.DOWN);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将分子和分母都转换为BigDecimal
|
|
|
+ BigDecimal sum = new BigDecimal(scoreSum);
|
|
|
+ BigDecimal num = new BigDecimal(scoreNum);
|
|
|
+
|
|
|
+ // 计算平均数,保留1位小数并四舍五入
|
|
|
+ return sum.divide(num, 1, RoundingMode.HALF_UP);
|
|
|
}
|
|
|
}
|