From b6ea15e44bef9a4edbd02890b335c084ce7a2c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=85=81=E6=9E=9E?= <3422692813@qq.com> Date: Mon, 7 Apr 2025 16:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/AppSchoolFeedBackController.java | 30 ++- ...hoolCourseOrderSmallProgramController.java | 2 - .../module/base/entity/SchoolFeedBack.java | 3 +- .../mapper/SchoolFeedBackMapper.java} | 7 +- .../base/service/SchoolFeedbackService.java | 15 +- .../module/base/vo/SchoolFeedBackVO.java | 28 +++ .../service/impl/ProcessServiceImpl.java | 2 +- .../impl/SchoolCourseOrderServiceImpl.java | 3 +- .../impl/SchoolFeedbackServiceImpl.java | 111 ++++++++-- .../module/course/vo/SchoolFeedBackVO.java | 12 -- .../exam/mapper/ExamBatchItemMapper.java | 10 +- .../exam/service/ExamBatchItemService.java | 42 ++-- .../impl/ExamBatchItemServiceImpl.java | 94 ++++---- .../yudao/module/exam/vo/ExamBatchItemVO.java | 10 + .../module/train/mapper/TrainMapper.java | 6 +- .../module/train/service/TrainService.java | 8 + .../train/service/impl/TrainServiceImpl.java | 13 ++ .../mapper/base/SchoolFeedBackMapper.xml | 201 ++++++++++++++++++ .../mapper/exam/ExamBatchItemMapper.xml | 19 ++ .../resources/mapper/train/TrainMapper.xml | 13 ++ 20 files changed, 519 insertions(+), 110 deletions(-) rename dl-module-jx/src/main/java/cn/iocoder/yudao/module/{course => base}/controller/app/AppSchoolFeedBackController.java (50%) rename dl-module-jx/src/main/java/cn/iocoder/yudao/module/{course/mapper/SchoolFeedbackMapper.java => base/mapper/SchoolFeedBackMapper.java} (85%) create mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/SchoolFeedBackVO.java delete mode 100644 dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolFeedBackVO.java create mode 100644 dl-module-jx/src/main/resources/mapper/base/SchoolFeedBackMapper.xml diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/app/AppSchoolFeedBackController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/AppSchoolFeedBackController.java similarity index 50% rename from dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/app/AppSchoolFeedBackController.java rename to dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/AppSchoolFeedBackController.java index 78c44834..44e75f4a 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/controller/app/AppSchoolFeedBackController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/AppSchoolFeedBackController.java @@ -1,16 +1,16 @@ -package cn.iocoder.yudao.module.course.controller.app; +package cn.iocoder.yudao.module.base.controller.app; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; import cn.iocoder.yudao.module.base.service.SchoolFeedbackService; -import cn.iocoder.yudao.module.course.vo.SchoolFeedBackVO; +import cn.iocoder.yudao.module.base.vo.SchoolFeedBackVO; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @Description: 评价 @@ -40,7 +40,25 @@ public class AppSchoolFeedBackController { if (request.getTenantId() == null) { throw new RuntimeException("租户id不能为空"); } + request.setUserId(SecurityFrameworkUtils.getLoginUserId()); schoolFeedbackService.add(request); return CommonResult.success(true); } + + /** + * 分页查询评价 + * + * @param request 请求 + * @param pageNo 页码 + * @param pageSize 每页大小 + * @return CommonResult + */ + @GetMapping("/page") + @TenantIgnore + public CommonResult page(SchoolFeedBackVO request, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return CommonResult.success(schoolFeedbackService.queryPage(page, request)); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/SchoolCourseOrderSmallProgramController.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/SchoolCourseOrderSmallProgramController.java index 0d16824e..7a49cf21 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/SchoolCourseOrderSmallProgramController.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/controller/app/SchoolCourseOrderSmallProgramController.java @@ -85,8 +85,6 @@ public class SchoolCourseOrderSmallProgramController { @GetMapping("/getCourseByLoginUser") @PermitAll public CommonResult getCourseByLoginUser() { -// SecurityFrameworkUtils.getLoginUserId() - // TODO 写死了 //获取当前登陆人 return success(schoolCourseOrderService.getCourseByLoginUser(SecurityFrameworkUtils.getLoginUserId())); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/SchoolFeedBack.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/SchoolFeedBack.java index d9e150eb..c53e9f67 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/SchoolFeedBack.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/entity/SchoolFeedBack.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.base.entity; import cn.iocoder.yudao.annotation.Excel; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import cn.iocoder.yudao.module.jx.core.page.TenantBaDO; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -13,7 +14,7 @@ import lombok.Data; */ @TableName("drive_school_feedback") @Data -public class SchoolFeedBack extends TenantBaDO { +public class SchoolFeedBack extends TenantBaseDO { /** 主键 */ private Long id; /** diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolFeedbackMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/SchoolFeedBackMapper.java similarity index 85% rename from dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolFeedbackMapper.java rename to dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/SchoolFeedBackMapper.java index f46881e9..be5498ff 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/mapper/SchoolFeedbackMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/mapper/SchoolFeedBackMapper.java @@ -1,6 +1,7 @@ -package cn.iocoder.yudao.module.course.mapper; +package cn.iocoder.yudao.module.base.mapper; import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; +import cn.iocoder.yudao.module.base.vo.SchoolFeedBackVO; import cn.iocoder.yudao.module.jx.domain.DriveSchoolFeedback; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -17,7 +18,7 @@ import java.util.List; * @date 2024-04-27 */ @Mapper -public interface SchoolFeedbackMapper extends BaseMapper +public interface SchoolFeedBackMapper extends BaseMapper { /** * 查询反馈 @@ -33,7 +34,7 @@ public interface SchoolFeedbackMapper extends BaseMapper * @param driveSchoolFeedback 反馈 * @return 反馈集合 */ - public IPage selectDriveSchoolFeedbackList(@Param("entity") DriveSchoolFeedback driveSchoolFeedback, Page page); + public IPage selectDriveSchoolFeedbackList(@Param("entity") SchoolFeedBackVO driveSchoolFeedback, Page page); public List selectDriveSchoolFeedbackListAll(@Param("entity") DriveSchoolFeedback driveSchoolFeedback); public Integer likeOne(DriveSchoolFeedback driveSchoolFeedback); public Integer likeTwo(DriveSchoolFeedback driveSchoolFeedback); diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/SchoolFeedbackService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/SchoolFeedbackService.java index 4c0f8d36..b762f88e 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/SchoolFeedbackService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/service/SchoolFeedbackService.java @@ -2,15 +2,11 @@ package cn.iocoder.yudao.module.base.service; import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; -import cn.iocoder.yudao.module.course.vo.SchoolFeedBackVO; -import cn.iocoder.yudao.module.jx.domain.DriveSchoolFeedback; +import cn.iocoder.yudao.module.base.vo.SchoolFeedBackVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; -import java.util.Map; - /** * 反馈Service接口 * @@ -25,4 +21,13 @@ public interface SchoolFeedbackService extends IService { * @param request 请求 */ void add(SchoolFeedBackVO request); + + /** + * 分页查询评价 + * + * @param page 分页 + * @param request 请求 + * @return IPage + */ + IPage queryPage(Page page, SchoolFeedBackVO request); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/SchoolFeedBackVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/SchoolFeedBackVO.java new file mode 100644 index 00000000..3ecce37b --- /dev/null +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/base/vo/SchoolFeedBackVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.base.vo; + +import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; +import lombok.Data; + +/** + * @Description: 评价vo + * @Author: 86187 + * @Date: 2025/04/03 14:28 + * @Version: 1.0 + */ +@Data +public class SchoolFeedBackVO extends SchoolFeedBack { + /** + * 业务名称 + */ + private String busiName; + + /** + * 课程类型 + */ + private String courseType; + + /** + * 教练名称 + */ + private String coachName; +} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java index 9e4bfc75..d6f5ae5f 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/ProcessServiceImpl.java @@ -318,7 +318,7 @@ public class ProcessServiceImpl extends ServiceImpl impl // 修改订单信息中的是否分配教练状态 schoolCourseOrderService.update(Wrappers.lambdaUpdate(SchoolCourseOrder.class) .eq(SchoolCourseOrder::getId, request.getOrderId()) - .set(SchoolCourseOrder::getIfAssignmentCoach, SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_NOT_ASSIGN_COACH)); + .set(SchoolCourseOrder::getIfAssignmentCoach, SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_ASSIGN_COACH)); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java index 8ed716ff..6f138c60 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolCourseOrderServiceImpl.java @@ -169,8 +169,7 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl list = list(Wrappers.lambdaQuery(SchoolCourseOrder.class) .eq(SchoolCourseOrder::getUserId, loginUserId) .eq(SchoolCourseOrder::getIfEnd, SchoolBaseConstants.COMMON_NO) - .eq(SchoolCourseOrder::getIfAssignmentCoach, SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_ASSIGN_COACH) - .eq(SchoolCourseOrder::getDeleted, SchoolBaseConstants.COMMON_NO)); + .eq(SchoolCourseOrder::getIfAssignmentCoach, SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_ASSIGN_COACH)); return BeanUtil.copyToList(list, SchoolCourseOrderVO.class); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolFeedbackServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolFeedbackServiceImpl.java index eb928eb6..d047b478 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolFeedbackServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/service/impl/SchoolFeedbackServiceImpl.java @@ -1,39 +1,32 @@ package cn.iocoder.yudao.module.course.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants; import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; import cn.iocoder.yudao.module.base.service.SchoolFeedbackService; -import cn.iocoder.yudao.module.course.mapper.SchoolFeedbackMapper; -import cn.iocoder.yudao.module.course.vo.SchoolFeedBackVO; +import cn.iocoder.yudao.module.base.mapper.SchoolFeedBackMapper; +import cn.iocoder.yudao.module.base.vo.SchoolFeedBackVO; import cn.iocoder.yudao.module.exam.entity.ExamBatchItem; import cn.iocoder.yudao.module.exam.service.ExamBatchItemService; -import cn.iocoder.yudao.module.jx.domain.DriveSchoolFeedback; -import cn.iocoder.yudao.module.jx.domain.DriveSchoolInfo; -import cn.iocoder.yudao.module.jx.mapper.DriveSchoolFeedbackMapper; -import cn.iocoder.yudao.module.jx.mapper.DriveSchoolInfoMapper; -import cn.iocoder.yudao.module.jx.payment.entity.DriveSchoolPay; -import cn.iocoder.yudao.module.jx.payment.service.DriveSchoolPayService; -import cn.iocoder.yudao.module.jx.service.IDriveSchoolFeedbackService; -import cn.iocoder.yudao.module.jx.vo.DriveSchoolInfoVO; -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import cn.iocoder.yudao.module.exam.vo.ExamBatchItemVO; import cn.iocoder.yudao.module.train.entity.Train; import cn.iocoder.yudao.module.train.service.TrainService; +import cn.iocoder.yudao.module.train.vo.TrainVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.ObjectUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; -import java.util.HashMap; +import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; /** * 反馈Service业务层处理 @@ -43,11 +36,11 @@ import java.util.Map; */ @Service @RequiredArgsConstructor -public class SchoolFeedbackServiceImpl extends ServiceImpl implements SchoolFeedbackService -{ +public class SchoolFeedbackServiceImpl extends ServiceImpl implements SchoolFeedbackService { private final TrainService trainService; private final ExamBatchItemService examBatchItemService; + /** * 新增评论 * @@ -72,4 +65,86 @@ public class SchoolFeedbackServiceImpl extends ServiceImpl queryPage(Page page, SchoolFeedBackVO request) { + // 1. 分页查询原始数据 + IPage pageList = this.page(page, Wrappers.lambdaQuery(SchoolFeedBack.class) + .eq(ObjectUtil.isNotEmpty(request.getUserId()), SchoolFeedBack::getUserId, request.getUserId())); + + // 2. 提取训练和考试的ID集合 + List trainIds = pageList.getRecords().stream() + .filter(item -> SchoolBaseConstants.EVALUATE_TYPE_TRAIN.equals(item.getEvaluateType())) + .map(SchoolFeedBack::getBusiId) + .collect(Collectors.toList()); + + List examIds = pageList.getRecords().stream() + .filter(item -> SchoolBaseConstants.EVALUATE_TYPE_EXAM.equals(item.getEvaluateType())) + .map(SchoolFeedBack::getBusiId) + .collect(Collectors.toList()); + + // 3. 批量查询关联数据 + Map trainMap = Optional.ofNullable(trainService.listJoinBatchByIds(trainIds)) + .orElse(Collections.emptyList()) // 如果为 null,返回空列表 + .stream() + .collect(Collectors.toMap( + TrainVO::getId, + train -> train + )); + + Map examMap = Optional.ofNullable(examBatchItemService.listJoinBatchByIds(examIds)) + .orElse(Collections.emptyList()) // 如果返回 null,替换成空列表 + .stream() + .collect(Collectors.toMap( + ExamBatchItemVO::getId, + exam -> exam + )); + + // 4. 转换为VO列表 + List voList = pageList.getRecords().stream().map(item -> { + SchoolFeedBackVO vo = BeanUtil.copyProperties(item, SchoolFeedBackVO.class); + if (SchoolBaseConstants.EVALUATE_TYPE_TRAIN.equals(item.getEvaluateType())) { + vo.setBusiName(getSubjectStr(trainMap.get(item.getBusiId()).getSubject()) + "训练"); + vo.setCourseType(trainMap.get(item.getBusiId()).getCourseType()); + vo.setCoachName(trainMap.get(item.getBusiId()).getCoachName()); + } else if (SchoolBaseConstants.EVALUATE_TYPE_EXAM.equals(item.getEvaluateType())) { + vo.setBusiName(getSubjectStr(examMap.get(item.getBusiId()).getSubject()) + "考试"); + vo.setCourseType(examMap.get(item.getBusiId()).getCourseType()); + vo.setCoachName(examMap.get(item.getBusiId()).getCoachName()); + } + return vo; + }).collect(Collectors.toList()); + + // 5. 构建返回的IPage对象 + IPage resultPage = new Page<>(); + BeanUtil.copyProperties(pageList, resultPage); // 复制分页信息 + resultPage.setRecords(voList); // 设置VO数据 + + return resultPage; + } + + public String getSubjectStr(Integer subject) { + if (subject == null) { + return ""; + } + switch (subject) { + case 1: + return "科目一"; + case 2: + return "科目二"; + case 3: + return "科目三"; + case 4: + return "科目四"; + default: + return ""; + } + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolFeedBackVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolFeedBackVO.java deleted file mode 100644 index cd72dee9..00000000 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/course/vo/SchoolFeedBackVO.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.iocoder.yudao.module.course.vo; - -import cn.iocoder.yudao.module.base.entity.SchoolFeedBack; - -/** - * @Description: 评价vo - * @Author: 86187 - * @Date: 2025/04/03 14:28 - * @Version: 1.0 - */ -public class SchoolFeedBackVO extends SchoolFeedBack { -} diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchItemMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchItemMapper.java index 2469d338..83681a38 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchItemMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/mapper/ExamBatchItemMapper.java @@ -23,11 +23,13 @@ public interface ExamBatchItemMapper extends BaseMapper { IPage queryListPage(@Param("entity") ExamBatchVO pageReqVO, Page page); - List selectByBatchId(@Param("batchId")String batchId); + List selectByBatchId(@Param("batchId") String batchId); - List selectByUserIdAndCoachId(@Param("userId")Long userId,@Param("coachId")Long coachId); + List selectByUserIdAndCoachId(@Param("userId") Long userId, @Param("coachId") Long coachId); - List selectByCoachId(@Param("coachId")Long coachId,@Param("startTime")String startTime,@Param("endTime")String endTime); + List selectByCoachId(@Param("coachId") Long coachId, @Param("startTime") String startTime, @Param("endTime") String endTime); - List selectExamByUserIdAndCoachId(@Param("userId")Long userId, @Param("coachId")Long coachId); + List selectExamByUserIdAndCoachId(@Param("userId") Long userId, @Param("coachId") Long coachId); + + List listJoinBatchByIds(@Param("examIds") List examIds); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchItemService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchItemService.java index 86b29513..aba21e31 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchItemService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/ExamBatchItemService.java @@ -20,54 +20,68 @@ public interface ExamBatchItemService extends IService { /** * 分页查询 + * + * @param pageReqVO TODO + * @param page TODO * @author vinjor-M * @date 15:05 2025/1/14 - * @param pageReqVO TODO - * @param page TODO **/ IPage queryListPage(ExamBatchVO pageReqVO, Page page); /** * 根据批次ID查所有子表记录 - * @author vinjor-M - * @date 13:40 2025/1/21 + * * @param batchId 批次ID * @return java.util.List - **/ + * @author vinjor-M + * @date 13:40 2025/1/21 + **/ List selectListByBatchId(String batchId); /** * 录入学生考试成绩 + * * @author vinjor-M * @date 13:48 2025/1/21 - **/ + **/ void updateObj(ExamBatchItemVO examBatchVO); /** * 根据学生id和教练ID查询考试记录 - * @author vinjor-M - * @date 16:38 2025/2/10 - * @param userId 学生ID + * + * @param userId 学生ID * @param coachId 教练ID,可能为空 * @return java.util.List - **/ - List selectByUserIdAndCoachId(Long userId,Long coachId); + * @author vinjor-M + * @date 16:38 2025/2/10 + **/ + List selectByUserIdAndCoachId(Long userId, Long coachId); /** * 根据学生id和教练ID查询考试记录 - * @author vinjor-M - * @date 16:38 2025/2/10 - * @param userId 学生ID + * + * @param userId 学生ID * @param coachId 教练ID,可能为空 * @return java.util.List + * @author vinjor-M + * @date 16:38 2025/2/10 **/ List selectExamByUserIdAndCoachId(Long userId, Long coachId); /** * 录入学生考试成绩 + * * @author vinjor-M * @date 13:48 2025/1/21 **/ void updateObjNew(ExamBatchItemVO examBatchVO); + + /** + * 通过批次详情id集合查询 + * + * @param examIds + * @return + */ + List listJoinBatchByIds(List examIds); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java index 64daf698..87481727 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/service/impl/ExamBatchItemServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.exam.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.course.entity.Process; import cn.iocoder.yudao.module.course.mapper.ProcessMapper; @@ -95,8 +96,8 @@ public class ExamBatchItemServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() - .eq(Process::getCourseId,process.getCourseId()) - .eq(Process::getUserId,process.getUserId()) - .eq(Process::getSubject,nextSubject) - .eq(Process::getStatus,"0"); + .eq(Process::getCourseId, process.getCourseId()) + .eq(Process::getUserId, process.getUserId()) + .eq(Process::getSubject, nextSubject) + .eq(Process::getStatus, "0"); List list = processService.list(queryWrapper); - if(list.isEmpty()){ + if (list.isEmpty()) { //插入 Process nextProcess = new Process(); nextProcess.setCourseId(process.getCourseId()); @@ -129,19 +130,19 @@ public class ExamBatchItemServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() - .eq(ExamBatchItem::getBatchId,id); + .eq(ExamBatchItem::getBatchId, id); List allList = this.list(queryWrapper); - if(!allList.isEmpty()){ - List passList = allList.stream().filter(item->null!=item.getIfPass() && item.getIfPass()).collect(Collectors.toList()); - if(!passList.isEmpty()){ + if (!allList.isEmpty()) { + List passList = allList.stream().filter(item -> null != item.getIfPass() && item.getIfPass()).collect(Collectors.toList()); + if (!passList.isEmpty()) { BigDecimal result = new BigDecimal(passList.size()).divide(new BigDecimal(allList.size()), 2, RoundingMode.HALF_UP); examBatch.setPassRate(result.doubleValue()); examBatchService.updateById(examBatch); @@ -229,8 +231,8 @@ public class ExamBatchItemServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() - .eq(Process::getCourseId,process.getCourseId()) - .eq(Process::getUserId,process.getUserId()) - .eq(Process::getCoachId,process.getCoachId()) - .eq(Process::getSubject,nextSubject) - .eq(Process::getStatus,"0"); + .eq(Process::getCourseId, process.getCourseId()) + .eq(Process::getUserId, process.getUserId()) + .eq(Process::getCoachId, process.getCoachId()) + .eq(Process::getSubject, nextSubject) + .eq(Process::getStatus, "0"); List list = processService.list(queryWrapper); - if(list.isEmpty()){ + if (list.isEmpty()) { //插入 Process nextProcess = new Process(); nextProcess.setCourseId(process.getCourseId()); @@ -266,19 +268,19 @@ public class ExamBatchItemServiceImpl extends ServiceImpl listJoinBatchByIds(List examIds) { + if (CollUtil.isEmpty(examIds)) return null; + return baseMapper.listJoinBatchByIds(examIds); + } } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java index 9ad909bf..f4df5c33 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/exam/vo/ExamBatchItemVO.java @@ -55,5 +55,15 @@ public class ExamBatchItemVO extends ExamBatchItem { @TableField(exist = false) private Boolean showMore; + /** + * 考试类型 + */ + private String courseType; + + /** + * 教练名称 + */ + private String coachName; + } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/mapper/TrainMapper.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/mapper/TrainMapper.java index d9c3b1f7..5bbc46d5 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/mapper/TrainMapper.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/mapper/TrainMapper.java @@ -20,7 +20,9 @@ public interface TrainMapper extends BaseMapper { IPage queryListPage(@Param("entity") TrainVO entity, Page page); - List selectTrainByCondition(@Param("coachId")Long coachId,@Param("startTime")String startTime,@Param("endTime")String endTime); + List selectTrainByCondition(@Param("coachId") Long coachId, @Param("startTime") String startTime, @Param("endTime") String endTime); - IPage queryTrainListPage(@Param("entity") TrainVO pageReqVO,@Param("page") Page page); + IPage queryTrainListPage(@Param("entity") TrainVO pageReqVO, @Param("page") Page page); + + List listJoinBatchByIds(@Param("trainIds") List trainIds); } \ No newline at end of file diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java index 6fa7e58a..3865afce 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/TrainService.java @@ -76,4 +76,12 @@ public interface TrainService extends IService { * @date 16:26 2025/2/10 **/ List selectByUserIdAndCoachId(Long userId, Long coachId); + + /** + * 批量查询 + * + * @param trainIds 训练id集合 + * @return + */ + List listJoinBatchByIds(List trainIds); } diff --git a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/TrainServiceImpl.java b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/TrainServiceImpl.java index f70e5120..d2e8ac8f 100644 --- a/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/TrainServiceImpl.java +++ b/dl-module-jx/src/main/java/cn/iocoder/yudao/module/train/service/impl/TrainServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.train.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.course.entity.Process; @@ -135,4 +136,16 @@ public class TrainServiceImpl extends ServiceImpl implements queryWrapper.orderByDesc(BaseDO::getCreateTime); return this.list(queryWrapper); } + + /** + * 批量查询 + * + * @param trainIds 训练id集合 + * @return + */ + @Override + public List listJoinBatchByIds(List trainIds) { + if (CollUtil.isEmpty(trainIds)) return null; + return trainMapper.listJoinBatchByIds(trainIds); + } } \ No newline at end of file diff --git a/dl-module-jx/src/main/resources/mapper/base/SchoolFeedBackMapper.xml b/dl-module-jx/src/main/resources/mapper/base/SchoolFeedBackMapper.xml new file mode 100644 index 00000000..7db7f1b9 --- /dev/null +++ b/dl-module-jx/src/main/resources/mapper/base/SchoolFeedBackMapper.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + select * from drive_school_feedback + + + + + + + + + + + + + + + + + + insert into drive_school_feedback + + id, + userId, + content, + jlContent, + jlId, + jlName, + jxId, + jxName, + create_time, + create_by, + update_time, + update_by, + evaluateType, + userName, + likes, + + + #{id}, + #{userId}, + #{content}, + #{jlContent}, + #{jlId}, + #{jlName}, + #{jxId}, + #{jxName}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{evaluateType}, + #{userName}, + #{likes}, + + + + insert into drive_school_feedback (userId, content, create_time) values (#{userId}, #{content}, now()) + + + + update drive_school_feedback + + userId = #{userId}, + content = #{content}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + evaluateType = #{evaluateType}, + + where id = #{id} + + + + delete from drive_school_feedback where id = #{id} + + + + delete from drive_school_feedback where id in + + #{id} + + + diff --git a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml index 16c33f17..82dd763a 100644 --- a/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/exam/ExamBatchItemMapper.xml @@ -134,4 +134,23 @@ ORDER BY dseb.create_time DESC--> + diff --git a/dl-module-jx/src/main/resources/mapper/train/TrainMapper.xml b/dl-module-jx/src/main/resources/mapper/train/TrainMapper.xml index 974666d5..fc5b25d8 100644 --- a/dl-module-jx/src/main/resources/mapper/train/TrainMapper.xml +++ b/dl-module-jx/src/main/resources/mapper/train/TrainMapper.xml @@ -68,4 +68,17 @@ and dst.course_id =#{entity.courseId} +