diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeTeacherDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeTeacherDao.java index b4cdbb1f..530dd9a2 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeTeacherDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeTeacherDao.java @@ -1,5 +1,6 @@ package com.ibeetl.jlw.dao; +import cn.hutool.core.util.ObjectUtil; import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery; import com.sun.istack.internal.NotNull; @@ -43,10 +44,13 @@ public interface TeacherOpenCourseMergeTeacherDao extends BaseMapper list = createLambdaQuery() + .andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId) .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1) .appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 1 ") - .unique(); + .select(); + + return ObjectUtil.isNotEmpty(list) ? list.get(0) : null; } /** @@ -55,10 +59,13 @@ public interface TeacherOpenCourseMergeTeacherDao extends BaseMapper list = createLambdaQuery() + .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseId, teacherOpenCourseId) .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1) .appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 1 ") - .unique(); + .select(); + + return ObjectUtil.isNotEmpty(list) ? list.get(0) : null; } /** @@ -66,13 +73,6 @@ public interface TeacherOpenCourseMergeTeacherDao extends BaseMapper listByTeacherId = teacherOpenCourseMergeTeacherDao.getListByTeacherId(teacherId); + // 倒序查询,取前两个。用于切换位置 LambdaQuery lambdaQuery = teacherOpenCourseMergeTeacherDao.createLambdaQuery() .andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId) .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1) - // 大于等于当前排序值 - .andGreatEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherOrderIndex, orderIndex); + ; switch (moveType) { + // 置顶 case MOVE_TOP: { - List 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 newList = new ArrayList(); + 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 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 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; } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherController.java index cc1184bd..49410129 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherController.java @@ -117,6 +117,19 @@ public class TeacherOpenCourseMergeTeacherController{ return view; } + /** + * 教师端-开课 排序移动方法 + * @param teacherOpenCourseId + * @param moveType + * @return + */ + @PostMapping(API + "/move.do") + @ResponseBody + public JsonResult move(Long teacherOpenCourseId, MoveEnum moveType) { + teacherOpenCourseMergeTeacherService.move(teacherOpenCourseId, moveType); + return JsonResult.success(); + } + /* 后台接口 */ @PostMapping(MODEL + "/list.json") @@ -203,19 +216,4 @@ public class TeacherOpenCourseMergeTeacherController{ return JsonResult.success(); } - /** - * 教师端-开课 排序移动方法 - * @param teacherOpenCourseId - * @param moveType - * @return - */ - @PostMapping(MODEL + "/move.json") - @Function("teacherOpenCourseMergeTeacher.edit") - @ResponseBody - public JsonResult move(Long teacherOpenCourseId, MoveEnum moveType) { - teacherOpenCourseMergeTeacherService.move(teacherOpenCourseId, moveType); - return JsonResult.success(); - } - - } diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeTeacher.md b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeTeacher.md index 6e6b683e..ee12462a 100644 --- a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeTeacher.md +++ b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeTeacher.md @@ -255,4 +255,22 @@ getValuesByQuery @if(!isEmpty(userIdPlural)){ and find_in_set(t.user_id,#userIdPlural#) @} - order by t.teacher_open_course_merge_teacher_order_index desc \ No newline at end of file + order by t.teacher_open_course_merge_teacher_order_index desc + + +getMaxOrderIndexByTeacherId +=== +* 通过教师ID查询最大的排序 + + SELECT + max( t.teacher_open_course_merge_teacher_order_index ) AS teacher_open_course_merge_teacher_order_index, + t.teacher_open_course_merge_teacher_id + FROM + teacher_open_course_merge_teacher t + WHERE + 1 = 1 + AND t.teacher_id = #teacherId# + AND t.teacher_open_course_merge_teacher_status = 1 + group by t.teacher_open_course_merge_teacher_id + order by t.teacher_open_course_merge_teacher_order_index desc + limit 1 \ No newline at end of file diff --git a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherControllerTest.java b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherControllerTest.java index 49438330..ea79842f 100644 --- a/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherControllerTest.java +++ b/web/src/test/java/com/ibeetl/jlw/web/TeacherOpenCourseMergeTeacherControllerTest.java @@ -27,9 +27,12 @@ class TeacherOpenCourseMergeTeacherControllerTest extends BaseTest { @Test void move() throws Exception { //构造请求参数 - RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/move.json") - .param("teacherOpenCourseId", "1569699103338831872") - .param("moveType", "MOVE_TOP"); + RequestBuilder rb = MockMvcRequestBuilders.post(API + "/move.do") + .param("teacherOpenCourseId", "1584440384141041664") +// .param("moveType", "MOVE_TOP") +// .param("moveType", "MOVE_LEFT") + .param("moveType", "MOVE_RIGHT") + ; // 测试账号,佟老师 putLoginInfoToEnv("102", "26");