更新
This commit is contained in:
parent
f00389d7d9
commit
ef525bd909
@ -120,8 +120,24 @@ public class ProcessController {
|
|||||||
@PostMapping("/saveProcess")
|
@PostMapping("/saveProcess")
|
||||||
@Operation(summary = "保存学员课程进度")
|
@Operation(summary = "保存学员课程进度")
|
||||||
public CommonResult<Boolean> saveProcess(@RequestBody ProcessAddVO request) {
|
public CommonResult<Boolean> saveProcess(@RequestBody ProcessAddVO request) {
|
||||||
|
// 订单id和科目集合不能为空
|
||||||
|
if (request.getOrderId() == null || request.getProcessList() == null) {
|
||||||
|
throw new RuntimeException("订单和科目不能为空");
|
||||||
|
}
|
||||||
processService.saveProcess(request);
|
processService.saveProcess(request);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过学员id和课程id查询学员课程进度
|
||||||
|
*
|
||||||
|
* @param userId 学员id
|
||||||
|
* @param courseId 课程id
|
||||||
|
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<java.util.List < cn.iocoder.yudao.module.course.vo.ProcessVO>>
|
||||||
|
*/
|
||||||
|
@GetMapping("/getAllByUserIdAndCourseId")
|
||||||
|
public CommonResult<?> getAllByUserIdAndCourseId(Long userId, String courseId) {
|
||||||
|
return success(processService.getAllByUserIdAndCourseId(userId, courseId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -95,4 +95,16 @@ public class SchoolCourseOrderController {
|
|||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 快速创建订单
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 订单号
|
||||||
|
*/
|
||||||
|
@PostMapping("/fastCreate")
|
||||||
|
@Operation(summary = "快速创建驾照报名订单")
|
||||||
|
public CommonResult<String> fastCreateSchoolCourseOrder(@Valid @RequestBody SchoolCourseOrderVO createReqVO) {
|
||||||
|
return success(schoolCourseOrderService.fastCreateSchoolCourseOrder(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -108,6 +108,10 @@ public class SchoolCourseOrder extends TenantBaseDO {
|
|||||||
* 是否分配教练 0:否 1:是
|
* 是否分配教练 0:否 1:是
|
||||||
*/
|
*/
|
||||||
private Integer ifAssignmentCoach;
|
private Integer ifAssignmentCoach;
|
||||||
|
/**
|
||||||
|
* 旧订单id
|
||||||
|
*/
|
||||||
|
private String oldOrderId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -103,7 +103,15 @@ public interface ProcessService extends IService<Process> {
|
|||||||
/**
|
/**
|
||||||
* 保存学员课程进度
|
* 保存学员课程进度
|
||||||
*
|
*
|
||||||
* @param processes {@link Process}
|
* @param request {@link Process}
|
||||||
*/
|
*/
|
||||||
void saveProcess(ProcessAddVO request);
|
void saveProcess(ProcessAddVO request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户id和课程id查询所有进度
|
||||||
|
* @param userId 用户id
|
||||||
|
* @param courseId 课程id
|
||||||
|
* @return java.util.List<cn.iocoder.yudao.module.course.vo.ProcessVO>
|
||||||
|
*/
|
||||||
|
List<ProcessVO> getAllByUserIdAndCourseId(Long userId, String courseId);
|
||||||
}
|
}
|
||||||
|
@ -63,9 +63,18 @@ public interface SchoolCourseOrderService extends IService<SchoolCourseOrder> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 终止订单
|
* 终止订单
|
||||||
* @param orderNo 订单号
|
*
|
||||||
|
* @param orderNo 订单号
|
||||||
* @param endReason 终止原因
|
* @param endReason 终止原因
|
||||||
* @param endTime 终止时间
|
* @param endTime 终止时间
|
||||||
*/
|
*/
|
||||||
void endOrder(String orderNo, String endReason, LocalDateTime endTime);
|
void endOrder(String orderNo, String endReason, LocalDateTime endTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 快速创建订单
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
String fastCreateSchoolCourseOrder(SchoolCourseOrderVO createReqVO);
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.course.service.impl;
|
package cn.iocoder.yudao.module.course.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
@ -280,8 +281,27 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
|||||||
* @param request {@link ProcessAddVO}
|
* @param request {@link ProcessAddVO}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void saveProcess(ProcessAddVO request) {
|
public void saveProcess(ProcessAddVO request) {
|
||||||
List<Process> processes = BeanUtil.copyToList(request.getProcessList(), Process.class);
|
List<Process> processes = BeanUtil.copyToList(request.getProcessList(), Process.class);
|
||||||
|
// 获取学生id和课程id
|
||||||
|
String courseId = processes.get(0).getCourseId();
|
||||||
|
Long userId = processes.get(0).getUserId();
|
||||||
|
// 根据课程id和学生id查询进度
|
||||||
|
List<Process> list = list(Wrappers.lambdaQuery(Process.class)
|
||||||
|
.eq(Process::getCourseId, courseId)
|
||||||
|
.eq(Process::getUserId, userId));
|
||||||
|
|
||||||
|
//判断传递进来的进度集合中的课程id和教练id和课程id是否与查询出来的一致,如果一致在processes集合中删除
|
||||||
|
for (Process process : list) {
|
||||||
|
processes.removeIf(process1 -> process.getCourseId().equals(process1.getCourseId())
|
||||||
|
&& process.getCoachId().equals(process1.getCoachId())
|
||||||
|
&& process.getSubject().equals(process1.getSubject()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(processes)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 校验详细信息
|
// 校验详细信息
|
||||||
verify(processes);
|
verify(processes);
|
||||||
// 保存信息
|
// 保存信息
|
||||||
@ -294,6 +314,24 @@ public class ProcessServiceImpl extends ServiceImpl<ProcessMapper, Process> impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户id和课程id查询所有进度
|
||||||
|
*
|
||||||
|
* @param userId 用户id
|
||||||
|
* @param courseId 课程id
|
||||||
|
* @return java.util.List<cn.iocoder.yudao.module.course.vo.ProcessVO>
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<ProcessVO> getAllByUserIdAndCourseId(Long userId, String courseId) {
|
||||||
|
if (null != userId && null != courseId) {
|
||||||
|
List<Process> processList = processMapper.selectList(Wrappers.lambdaQuery(Process.class)
|
||||||
|
.eq(Process::getUserId, userId)
|
||||||
|
.eq(Process::getCourseId, courseId));
|
||||||
|
return BeanUtil.copyToList(processList, ProcessVO.class);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private static void verify(List<Process> processes) {
|
private static void verify(List<Process> processes) {
|
||||||
for (Process process : processes) {
|
for (Process process : processes) {
|
||||||
// 校验状态
|
// 校验状态
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.course.service.impl;
|
package cn.iocoder.yudao.module.course.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants;
|
import cn.iocoder.yudao.module.base.constant.SchoolBaseConstants;
|
||||||
@ -20,6 +21,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 驾照报名订单 Service 实现类
|
* 驾照报名订单 Service 实现类
|
||||||
@ -110,4 +112,53 @@ public class SchoolCourseOrderServiceImpl extends ServiceImpl<SchoolCourseOrderM
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 快速创建订单
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String fastCreateSchoolCourseOrder(SchoolCourseOrderVO createReqVO) {
|
||||||
|
// 根据订单id查询旧订单信息
|
||||||
|
SchoolCourseOrder oldOrder = baseMapper.selectById(createReqVO.getId());
|
||||||
|
|
||||||
|
if (oldOrder == null) {
|
||||||
|
throw new RuntimeException("订单不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
//判断新订单课程与旧订单课程是否一致
|
||||||
|
if (!oldOrder.getCourseId().equals(createReqVO.getCourseId())) {
|
||||||
|
// 删除学习记录表中的课程记录
|
||||||
|
processService.remove(Wrappers.lambdaQuery(Process.class)
|
||||||
|
.eq(Process::getUserId, oldOrder.getUserId())
|
||||||
|
.eq(Process::getCourseId, oldOrder.getCourseId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
SchoolCourseOrder schoolCourseOrder = BeanUtil.copyProperties(oldOrder, SchoolCourseOrder.class);
|
||||||
|
schoolCourseOrder.setOldOrderId(oldOrder.getId());
|
||||||
|
//生成订单号
|
||||||
|
schoolCourseOrder.setOrderNo(generateOrderNumber());
|
||||||
|
schoolCourseOrder.setCourseId(createReqVO.getCourseId());
|
||||||
|
schoolCourseOrder.setCourseName(createReqVO.getCourseName());
|
||||||
|
schoolCourseOrder.setCourseType(createReqVO.getCourseType());
|
||||||
|
schoolCourseOrder.setCoachUserId(createReqVO.getCoachUserId());
|
||||||
|
schoolCourseOrder.setCoachUserName(createReqVO.getCoachUserName());
|
||||||
|
|
||||||
|
schoolCourseOrder.setId(null);
|
||||||
|
schoolCourseOrder.setCreateTime(null);
|
||||||
|
schoolCourseOrder.setUpdateTime(null);
|
||||||
|
schoolCourseOrder.setDeleted(SchoolBaseConstants.COMMON_NO);
|
||||||
|
schoolCourseOrder.setIfAssignmentCoach(SchoolBaseConstants.SCHOOL_COURSE_ORDER_IS_ASSIGN_COACH);
|
||||||
|
schoolCourseOrder.setIfEnd(SchoolBaseConstants.COMMON_NO);
|
||||||
|
schoolCourseOrder.setEndReason(null);
|
||||||
|
schoolCourseOrder.setEndTime(null);
|
||||||
|
schoolCourseOrderMapper.insert(schoolCourseOrder);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String generateOrderNumber() {
|
||||||
|
return "ORDER" + UUID.randomUUID().toString().replace("-", "").substring(0, 10);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -10,4 +10,5 @@ import lombok.Data;
|
|||||||
@ExcelIgnoreUnannotated
|
@ExcelIgnoreUnannotated
|
||||||
public class SchoolCourseOrderVO extends SchoolCourseOrder {
|
public class SchoolCourseOrderVO extends SchoolCourseOrder {
|
||||||
|
|
||||||
|
private Boolean isCreated;
|
||||||
}
|
}
|
@ -11,16 +11,28 @@
|
|||||||
|
|
||||||
<select id="queryPage" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
|
<select id="queryPage" resultType="cn.iocoder.yudao.module.course.vo.SchoolCourseOrderVO">
|
||||||
SELECT
|
SELECT
|
||||||
main.*
|
main.*,
|
||||||
|
CASE
|
||||||
|
WHEN EXISTS (SELECT 1
|
||||||
|
FROM drive_school_course_order dsc
|
||||||
|
WHERE dsc.old_order_id = main.id and dsc.deleted = 0 and main.deleted = 0)
|
||||||
|
THEN TRUE
|
||||||
|
ELSE FALSE
|
||||||
|
END AS isCreated
|
||||||
FROM
|
FROM
|
||||||
drive_school_course_order main
|
drive_school_course_order main
|
||||||
<where>
|
<where>
|
||||||
main.deleted = 0
|
main.deleted = 0
|
||||||
<if test="entity.orderNo!= null and entity.orderNo != ''"> and main.order_no = #{entity.orderNo}</if>
|
<if test="entity.orderNo!= null and entity.orderNo != ''">and main.order_no = #{entity.orderNo}</if>
|
||||||
<if test="entity.userName != null and entity.userName != ''"> and main.user_name like concat('%', #{entity.userName}, '%')</if>
|
<if test="entity.userName != null and entity.userName != ''">and main.user_name like concat('%',
|
||||||
<if test="entity.userId != null and entity.userId != ''"> and main.user_id = #{entity.userId}</if>
|
#{entity.userName}, '%')
|
||||||
<if test="entity.paymentStatus != null and entity.paymentStatus != ''"> and main.payment_status = #{entity.paymentStatus}</if>
|
</if>
|
||||||
|
<if test="entity.userId != null and entity.userId != ''">and main.user_id = #{entity.userId}</if>
|
||||||
|
<if test="entity.paymentStatus != null and entity.paymentStatus != ''">and main.payment_status =
|
||||||
|
#{entity.paymentStatus}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
order by main.create_time desc
|
||||||
</select>
|
</select>
|
||||||
<select id="selectByCoachUserId" resultType="java.lang.Double">
|
<select id="selectByCoachUserId" resultType="java.lang.Double">
|
||||||
SELECT
|
SELECT
|
||||||
|
Loading…
Reference in New Issue
Block a user