This commit is contained in:
PQZ 2025-02-17 17:31:46 +08:00
parent 53bcb324ad
commit f736e8279f
6 changed files with 117 additions and 125 deletions

View File

@ -1,8 +1,11 @@
package cn.iocoder.yudao.module.course.controller.admin;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachPageReqVO;
import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachRespVO;
import cn.iocoder.yudao.module.course.entity.Process;
import cn.iocoder.yudao.module.course.service.ProcessService;
import cn.iocoder.yudao.module.course.vo.ProcessVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -26,22 +29,45 @@ public class ProcessController {
@Resource
private ProcessService processService;
/**
* 学员课程进度分页查询
*
* @param pageReqVO {@link ProcessVO}
* @param pageNo 分页参数
* @param pageSize 分页参数
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<com.baomidou.mybatisplus.core.metadata.IPage < ?>>
* @author PQZ
* @date 15:33 2025/2/17
**/
@GetMapping("/page")
@Operation(summary = "学员课程进度分页")
public CommonResult<IPage<?>> getDlDriveSchoolCoachPage(ProcessVO pageReqVO,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
Page<ProcessVO> page = new Page<>(pageNo, pageSize);
return success(processService.pageProcess(page, pageReqVO));
}
/**
* 教练查自己带教的课程和科目
*
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
* @author vinjor-M
* @date 11:05 2025/1/15
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
**/
@GetMapping("/getMyCourseAndSubject")
@Operation(summary = "教练查自己带教的课程和科目")
public CommonResult<?> getMyCourseAndSubject() {
return success(processService.getMyCourseAndSubject());
}
/**
* 教练查自己带教的课程和科目在训练中的学生
*
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
* @author vinjor-M
* @date 11:05 2025/1/15
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<?>
**/
@GetMapping("/getMyCourseStudentPage")
@Operation(summary = "教练查自己带教的课程和科目在训练中的学生")

View File

@ -1,7 +1,12 @@
package cn.iocoder.yudao.module.course.mapper;
import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachPageReqVO;
import cn.iocoder.yudao.module.base.vo.DlDriveSchoolCoachRespVO;
import cn.iocoder.yudao.module.course.entity.Process;
import cn.iocoder.yudao.module.course.vo.ProcessVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -55,5 +60,15 @@ public interface ProcessMapper extends BaseMapper<Process> {
**/
Process selectNewMaxByUserId(@Param("userId") Long userId,@Param("coachId") Long coachId);
/**
* 分页查询学员课程进度
* @author PQZ
* @date 15:50 2025/2/17
* @param entity {@link ProcessVO}
* @param page 分页参数
* @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.course.vo.ProcessVO>
**/
IPage<ProcessVO> pageProcess(@Param("entity") ProcessVO entity, Page<ProcessVO> page);
Double selectAllTrainTime(@Param("userId") Long userId,@Param("courseId") String courseId);
}

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.course.service;
import cn.iocoder.yudao.module.course.entity.Process;
import cn.iocoder.yudao.module.course.vo.ProcessVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
@ -17,59 +18,75 @@ public interface ProcessService extends IService<Process> {
/**
* 教练查自己带教的课程和科目
*
* @return java.util.List<cn.iocoder.yudao.module.course.entity.Process>
* @author vinjor-M
* @date 11:05 2025/1/15
* @return java.util.List<cn.iocoder.yudao.module.course.entity.Process>
**/
List<Process> getMyCourseAndSubject();
/**
* 教练查自己带教的课程和科目在训练中的学生
*
* @param process 查询对象
* @author vinjor-M
* @date 17:11 2025/1/15
* @param process 查询对象
**/
IPage<Process> getMyCourseStudentPage(Process process, Page<Process> page);
/**
* 查某个学员在某个教练的某个课程某个科目的学习进度当前在练习中的
* @author vinjor-M
* @date 18:39 2025/1/16
*
* @param userId 学生id
* @param courseId 课程id
* @param subject 科目
* @param coachId 教练id
* @return cn.iocoder.yudao.module.course.entity.Process
* @author vinjor-M
* @date 18:39 2025/1/16
**/
Process getByStudentAndCourse(Long userId, String courseId, Integer subject, Long coachId, String examStatus);
/**
* 查学生当下正在学习中的学习进度
* @author vinjor-M
* @date 16:39 2025/2/8
*
* @param userId 用户id
* @param coachId 教练id
* @return cn.iocoder.yudao.module.course.entity.Process
* @author vinjor-M
* @date 16:39 2025/2/8
**/
Process selectByUserId(Long userId, Long coachId);
/**
* 查询教练 每个科目已毕未毕业学生数量
* @author vinjor-M
* @date 13:52 2025/2/10
*
* @param coachId 教练id
* @return java.util.Map<java.lang.String, java.lang.Integer>
* @author vinjor-M
* @date 13:52 2025/2/10
**/
Map<String, Integer> selectByCoachId(Long coachId);
/**
* 查某学生某课程累计总训练时长
* @author vinjor-M
* @date 14:17 2025/2/11
*
* @param userId 学生ID
* @param courseId 课程ID
* @return java.lang.Double
* @author vinjor-M
* @date 14:17 2025/2/11
**/
Double getAllTrainTime(Long userId, String courseId);
/**
* 分页查询学员课程进度
*
* @param page 分页参数
* @param pageReqVO {@link ProcessVO}
* @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.course.vo.ProcessVO>
* @author PQZ
* @date 15:34 2025/2/17
**/
IPage<ProcessVO> pageProcess(Page<ProcessVO> page, ProcessVO pageReqVO);
}

View File

@ -5,6 +5,7 @@ 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;
import cn.iocoder.yudao.module.course.service.ProcessService;
import cn.iocoder.yudao.module.course.vo.ProcessVO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -184,4 +185,18 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
return processMapper.selectAllTrainTime(userId, courseId);
}
/**
* 分页查询学员课程进度
*
* @param page 分页参数
* @param pageReqVO {@link ProcessVO}
* @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.course.vo.ProcessVO>
* @author PQZ
* @date 15:34 2025/2/17
**/
@Override
public IPage<ProcessVO> pageProcess(Page<ProcessVO> page, ProcessVO pageReqVO) {
return processMapper.pageProcess(pageReqVO,page);
}
}

View File

@ -1,103 +1,14 @@
package cn.iocoder.yudao.module.course.entity;
package cn.iocoder.yudao.module.course.vo;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Date;
import cn.iocoder.yudao.module.course.entity.Process;
import lombok.Data;
/**
* 驾校-学员课程进度 DO
*
* @author 若依
*/
@TableName("drive_school_process")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Process extends TenantBaseDO {
/**
* id
*/
@TableId(type = IdType.ASSIGN_UUID)
private String id;
/**
* 课程ID
*/
private String courseId;
/**
* 课程名称
*/
private String courseName;
/**
* 用户学员ID
*/
private Long userId;
/**
* 用户学员姓名
*/
private String userName;
/**
* 学员手机号
*/
private String userMobile;
/**
* 教练ID
*/
private Long coachId;
/**
* 教练姓名
*/
private String coachName;
/**
* 科目1-科目一2-科目二3科目三4科目四
*/
private Integer subject;
/**
* 考试次数第一次考试为1第二次为2...
*/
private Integer examNum;
/**
* 当前状态0-未开始;1-训练中2-已完成
*/
private String status;
/**
* 考试状态0未通过1已通过;9已送考null未送考
*/
private String examStatus;
/**
* 考试分数
*/
private Double examScore;
/**
* 图片证明材料
*/
private String images;
/**
* 考试时间
*/
private Date examTime;
/**
* 备注
*/
private String remark;
/**
* 本科目累计训练时长
*/
private Double trainTime;
/**
* 财务审核是否通过0未通过1通过null待审核
*/
private Boolean financePass;
/**
* 财务审核备注
*/
private String financeRemark;
public class ProcessVO extends Process {
}

View File

@ -42,4 +42,12 @@
AND dsp.course_id = #{courseId}
AND (( dsp.`status` = '2' AND dsp.exam_status = '1' ) OR dsp.`status` = '1' )
</select>
<select id="pageProcess" resultType="cn.iocoder.yudao.module.course.vo.ProcessVO">
SELECT
dsp.* FROM drive_school_process dsp
<where>
desp.deleted = 0
</where>
</select>
</mapper>