|
|
|
@ -149,80 +149,87 @@ public class TeacherOpenCourseMergeTeacherService extends CoreBaseService<Teache
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("ALL")
|
|
|
|
|
public void move(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId,
|
|
|
|
|
@NotNull(message = "移动类型不能为空!") MoveEnum moveType) {
|
|
|
|
|
|
|
|
|
|
final TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = teacherOpenCourseMergeTeacherDao.getValueByTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
|
|
Assert.notNull(teacherOpenCourseMergeTeacher, "未查询到对应的开课信息!");
|
|
|
|
|
|
|
|
|
|
final Long orderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
final Long teacherId = teacherOpenCourseMergeTeacher.getTeacherId();
|
|
|
|
|
final Long teacherOpenCourseMergeTeacherId = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherId();
|
|
|
|
|
|
|
|
|
|
// 查询降序的列表
|
|
|
|
|
List<TeacherOpenCourseMergeTeacher> listByTeacherId = teacherOpenCourseMergeTeacherDao.getListByTeacherId(teacherId);
|
|
|
|
|
|
|
|
|
|
// 倒序查询,取前两个。用于切换位置
|
|
|
|
|
LambdaQuery<TeacherOpenCourseMergeTeacher> lambdaQuery = teacherOpenCourseMergeTeacherDao.createLambdaQuery()
|
|
|
|
|
.andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
|
|
|
|
|
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
|
|
|
|
|
// 大于等于当前排序值
|
|
|
|
|
.andGreatEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex, orderIndex);
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
switch (moveType) {
|
|
|
|
|
// 置顶
|
|
|
|
|
case MOVE_TOP: {
|
|
|
|
|
List<TeacherOpenCourseMergeTeacher> moveTopList = lambdaQuery
|
|
|
|
|
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 2")
|
|
|
|
|
.select(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherId
|
|
|
|
|
, TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex);
|
|
|
|
|
// 这个教师最大的排序值
|
|
|
|
|
TeacherOpenCourseMergeTeacher maxOrderIndexEntity = teacherOpenCourseMergeTeacherDao.getMaxOrderIndexByTeacherId(teacherId);
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(moveTopList, "未查询到开课信息,请检查开课ID是否正确!");
|
|
|
|
|
Assert.isTrue(moveTopList.size() == 2, "您已经是置顶状态!");
|
|
|
|
|
|
|
|
|
|
// 第二个,必然是他自己。
|
|
|
|
|
Long selfOrderIndex = moveTopList.get(1).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
|
|
|
|
|
// 交换位置
|
|
|
|
|
Long maxOrderIndex = maxOrderIndexEntity.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
moveTopList.get(1).setTeacherOpenCourseMergeTeacherOrderIndex(maxOrderIndex);
|
|
|
|
|
update(moveTopList.get(1));
|
|
|
|
|
|
|
|
|
|
TeacherOpenCourseMergeTeacher changedCourseMergeTeacher = new TeacherOpenCourseMergeTeacher();
|
|
|
|
|
changedCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(selfOrderIndex);
|
|
|
|
|
changedCourseMergeTeacher.setTeacherOpenCourseMergeTeacherId(teacherOpenCourseMergeTeacherId);
|
|
|
|
|
update(changedCourseMergeTeacher);
|
|
|
|
|
// 置顶元素
|
|
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(listByTeacherId.get(0).getTeacherOpenCourseMergeTeacherOrderIndex());
|
|
|
|
|
updateTemplate(teacherOpenCourseMergeTeacher);
|
|
|
|
|
|
|
|
|
|
// 指定置顶元素之前的元素们,都要向后退一位
|
|
|
|
|
List<TeacherOpenCourseMergeTeacher> newList = new ArrayList<TeacherOpenCourseMergeTeacher>();
|
|
|
|
|
for (TeacherOpenCourseMergeTeacher openCourseMergeTeacher : listByTeacherId) {
|
|
|
|
|
if(teacherOpenCourseMergeTeacherId.equals(openCourseMergeTeacher.getTeacherOpenCourseMergeTeacherId())) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 退一位
|
|
|
|
|
long newOrderIndex = openCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex() - 1;
|
|
|
|
|
openCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
|
|
newList.add(openCourseMergeTeacher);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//批量更新,置顶元素之前的元素集合
|
|
|
|
|
updateBatch(newList);
|
|
|
|
|
} break;
|
|
|
|
|
case MOVE_LEFT:{
|
|
|
|
|
//左移
|
|
|
|
|
case MOVE_LEFT: {
|
|
|
|
|
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
|
|
|
|
|
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 2")
|
|
|
|
|
.andGreat(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex, orderIndex)
|
|
|
|
|
.appendSql("order by teacher_open_course_merge_teacher_order_index asc limit 1")
|
|
|
|
|
.select(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherId
|
|
|
|
|
, TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex);
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(moveLeftList, "未查询到开课信息,请检查开课ID是否正确!");
|
|
|
|
|
Assert.isTrue(moveLeftList.size() == 2, "您已经是置顶状态!");
|
|
|
|
|
Assert.notEmpty(moveLeftList, "您已经是置顶状态!");
|
|
|
|
|
|
|
|
|
|
// 交换位置
|
|
|
|
|
Long orderIndex0 = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Long orderIndex1 = moveLeftList.get(1).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Long newOrderIndex = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Long currentOrderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(currentOrderIndex);
|
|
|
|
|
|
|
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex1);
|
|
|
|
|
moveLeftList.get(1).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex0);
|
|
|
|
|
|
|
|
|
|
updateBatch(moveLeftList);
|
|
|
|
|
updateTemplate(moveLeftList.get(0));
|
|
|
|
|
updateTemplate(teacherOpenCourseMergeTeacher);
|
|
|
|
|
} break;
|
|
|
|
|
case MOVE_RIGHT:{
|
|
|
|
|
// 右移
|
|
|
|
|
case MOVE_RIGHT: {
|
|
|
|
|
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
|
|
|
|
|
.appendSql("order by teacher_open_course_merge_teacher_order_index limit 2")
|
|
|
|
|
// 大于等于当前排序值
|
|
|
|
|
.andLess(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex, orderIndex)
|
|
|
|
|
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 1")
|
|
|
|
|
.select(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherId
|
|
|
|
|
, TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex);
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(moveLeftList, "未查询到开课信息,请检查开课ID是否正确!");
|
|
|
|
|
Assert.isTrue(moveLeftList.size() == 2, "您已经是置顶状态!");
|
|
|
|
|
|
|
|
|
|
Long orderIndex0 = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Long orderIndex1 = moveLeftList.get(1).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Assert.notEmpty(moveLeftList, "您已经是置底状态!");
|
|
|
|
|
|
|
|
|
|
// 交换位置
|
|
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex1);
|
|
|
|
|
moveLeftList.get(1).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex0);
|
|
|
|
|
Long newOrderIndex = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
Long currentOrderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(currentOrderIndex);
|
|
|
|
|
|
|
|
|
|
updateBatch(moveLeftList);
|
|
|
|
|
updateTemplate(moveLeftList.get(0));
|
|
|
|
|
updateTemplate(teacherOpenCourseMergeTeacher);
|
|
|
|
|
} break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|