课程置顶

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

@ -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<TeacherOpen
* @return
*/
default TeacherOpenCourseMergeTeacher getOneByTeacherId(@NotNull Long teacherId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
List<TeacherOpenCourseMergeTeacher> 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<TeacherOpen
* @return
*/
default TeacherOpenCourseMergeTeacher getValueByTeacherOpenCourseId(@NotNull Long teacherOpenCourseId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseId, teacherOpenCourseId)
List<TeacherOpenCourseMergeTeacher> 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<TeacherOpen
* @param teacherId
* @return
*/
default 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");
}
public TeacherOpenCourseMergeTeacher getMaxOrderIndexByTeacherId(@NotNull Long teacherId);
}

@ -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;
}

@ -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();
}
}

@ -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
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
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");

Loading…
Cancel
Save