课程置顶

beetlsql3-dev
Mlxa0324 2 years ago
parent c0db6109dc
commit 2f9149abf8

@ -1,5 +1,6 @@
package com.ibeetl.jlw.dao; package com.ibeetl.jlw.dao;
import cn.hutool.core.util.ObjectUtil;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher; import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery;
import com.sun.istack.internal.NotNull; import com.sun.istack.internal.NotNull;
@ -43,10 +44,13 @@ public interface TeacherOpenCourseMergeTeacherDao extends BaseMapper<TeacherOpen
* @return * @return
*/ */
default TeacherOpenCourseMergeTeacher getOneByTeacherId(@NotNull Long teacherId) { default TeacherOpenCourseMergeTeacher getOneByTeacherId(@NotNull Long teacherId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId) List<TeacherOpenCourseMergeTeacher> list = createLambdaQuery()
.andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1) .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 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<TeacherOpen
* @return * @return
*/ */
default TeacherOpenCourseMergeTeacher getValueByTeacherOpenCourseId(@NotNull Long teacherOpenCourseId) { default TeacherOpenCourseMergeTeacher getValueByTeacherOpenCourseId(@NotNull Long teacherOpenCourseId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseId, teacherOpenCourseId) List<TeacherOpenCourseMergeTeacher> list = createLambdaQuery()
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseId, teacherOpenCourseId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1) .andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 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<TeacherOpen
* @param teacherId * @param teacherId
* @return * @return
*/ */
default TeacherOpenCourseMergeTeacher getMaxOrderIndexByTeacherId(@NotNull Long teacherId) { public TeacherOpenCourseMergeTeacher getMaxOrderIndexByTeacherId(@NotNull Long teacherId);
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.groupBy(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherId)
.unique("max(teacher_open_course_merge_teacher_order_index) as maxOrderIndex, teacher_open_course_merge_teacher_id");
}
} }

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

@ -117,6 +117,19 @@ public class TeacherOpenCourseMergeTeacherController{
return view; 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") @PostMapping(MODEL + "/list.json")
@ -203,19 +216,4 @@ public class TeacherOpenCourseMergeTeacherController{
return JsonResult.success(); 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();
}
} }

@ -255,4 +255,22 @@ getValuesByQuery
@if(!isEmpty(userIdPlural)){ @if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#) and find_in_set(t.user_id,#userIdPlural#)
@} @}
order by t.teacher_open_course_merge_teacher_order_index desc 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

@ -27,9 +27,12 @@ class TeacherOpenCourseMergeTeacherControllerTest extends BaseTest {
@Test @Test
void move() throws Exception { void move() throws Exception {
//构造请求参数 //构造请求参数
RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/move.json") RequestBuilder rb = MockMvcRequestBuilders.post(API + "/move.do")
.param("teacherOpenCourseId", "1569699103338831872") .param("teacherOpenCourseId", "1584440384141041664")
.param("moveType", "MOVE_TOP"); // .param("moveType", "MOVE_TOP")
// .param("moveType", "MOVE_LEFT")
.param("moveType", "MOVE_RIGHT")
;
// 测试账号,佟老师 // 测试账号,佟老师
putLoginInfoToEnv("102", "26"); putLoginInfoToEnv("102", "26");

Loading…
Cancel
Save