教师我的课程位置移动

beetlsql3-dev
Mlxa0324 2 years ago
parent 08d160e113
commit 82c8dee119

@ -28816,15 +28816,16 @@ alter table teacher_open_course_merge_student comment '课程开课-关联-学
DROP TABLE IF EXISTS `teacher_open_course_merge_teacher`;
CREATE TABLE `teacher_open_course_merge_teacher` (
`teacher_open_course_merge_teacher_id` bigint(20) NOT NULL COMMENT '课程开课教师关联ID',
`teacher_open_course_id` bigint(20) NULL DEFAULT NULL COMMENT '课程开课ID',
`teacher_id` bigint(20) NULL DEFAULT NULL COMMENT '教师ID',
`teacher_open_course_merge_teacher_status` int(11) NULL DEFAULT NULL COMMENT '状态1启用 2禁用',
`teacher_open_course_merge_teacher_add_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`teacher_open_course_id` bigint(20) DEFAULT NULL COMMENT '课程开课ID',
`teacher_id` bigint(20) DEFAULT NULL COMMENT '教师ID',
`teacher_open_course_merge_teacher_status` int(11) DEFAULT NULL COMMENT '状态1启用 2禁用',
`teacher_open_course_merge_teacher_add_time` datetime DEFAULT NULL COMMENT '创建时间',
`teacher_open_course_merge_teacher_order_index` bigint(20) DEFAULT NULL COMMENT '排序',
`teacher_open_course_merge_teacher_auth_code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '教师开课授权码',
`org_id` bigint(20) NULL DEFAULT NULL COMMENT '组织ID',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户ID',
`org_id` bigint(20) DEFAULT NULL COMMENT '组织ID',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
PRIMARY KEY (`teacher_open_course_merge_teacher_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '教师-课程开课-关联教师' ROW_FORMAT = DYNAMIC;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='教师-课程开课-关联教师';
-- ----------------------------
-- Records of teacher_open_course_merge_teacher

@ -2,6 +2,7 @@ package com.ibeetl.jlw.dao;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery;
import com.sun.istack.internal.NotNull;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.mapper.BaseMapper;
import org.beetl.sql.mapper.annotation.SqlResource;
@ -23,4 +24,55 @@ public interface TeacherOpenCourseMergeTeacherDao extends BaseMapper<TeacherOpen
public int updateGivenByIds(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery);
public List<TeacherOpenCourseMergeTeacher> getByIds(String ids);
public List<TeacherOpenCourseMergeTeacher> getValuesByQuery(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery);
/**
* ID
* @param teacherId
* @return
*/
default List<TeacherOpenCourseMergeTeacher> getListByTeacherId(@NotNull Long teacherId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.appendSql("order by teacher_open_course_merge_teacher_order_index desc ")
.select();
}
/**
* ID
* @param teacherId
* @return
*/
default TeacherOpenCourseMergeTeacher getOneByTeacherId(@NotNull Long teacherId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherId, teacherId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 1 ")
.unique();
}
/**
* ID
* @param teacherOpenCourseId
* @return
*/
default TeacherOpenCourseMergeTeacher getValueByTeacherOpenCourseId(@NotNull Long teacherOpenCourseId) {
return createLambdaQuery().andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseId, teacherOpenCourseId)
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherStatus, 1)
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 1 ")
.unique();
}
/**
* ID
* @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");
}
}

@ -36,6 +36,14 @@ public class TeacherOpenCourseMergeTeacher extends BaseEntity{
"from teacher_open_course where teacher_open_course_status = 1 and teacher_open_course_id = #teacherOpenCourseId# ")
private TeacherOpenCourseInfo teacherOpenCourse;
public Long getTeacherOpenCourseMergeTeacherOrderIndex() {
return teacherOpenCourseMergeTeacherOrderIndex;
}
public void setTeacherOpenCourseMergeTeacherOrderIndex(Long teacherOpenCourseMergeTeacherOrderIndex) {
this.teacherOpenCourseMergeTeacherOrderIndex = teacherOpenCourseMergeTeacherOrderIndex;
}
@Data
@Accessors(chain = true)
public static class TeacherOpenCourseInfo {
@ -63,6 +71,10 @@ public class TeacherOpenCourseMergeTeacher extends BaseEntity{
private String teacherOpenCourseMergeTeacherAuthCode ;
// 排序
private Long teacherOpenCourseMergeTeacherOrderIndex ;
//创建时间
private Date teacherOpenCourseMergeTeacherAddTime ;

@ -0,0 +1,34 @@
package com.ibeetl.jlw.enums;
import cn.jlw.util.EnumUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.beetl.sql.annotation.entity.EnumMapping;
/**
*
*/
@Getter
@AllArgsConstructor
@EnumMapping("text")
public enum MoveEnum {
// 进行中
MOVE_TOP(10, "置顶"),
// 已结束
MOVE_LEFT(20, "前移"),
// 未开始
MOVE_RIGHT(30, "后移");
private Integer code;
// 可以转换成中文
// @JsonValue
private String text;
public static MoveEnum getByCode(Integer code) {
return EnumUtil.getByFieldWithValue(MoveEnum.class, "code", code);
}
}

@ -13,7 +13,7 @@ import org.beetl.sql.annotation.entity.EnumMapping;
@Getter
@AllArgsConstructor
@EnumMapping("text")
@EnumMapping("name")
public enum StartStatusEnum {
// 进行中
ING(0, "进行中"),

@ -1,5 +1,6 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.lang.Assert;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -9,14 +10,17 @@ import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeTeacherDao;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.enums.MoveEnum;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.query.LambdaQuery;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -145,4 +149,82 @@ public class TeacherOpenCourseMergeTeacherService extends CoreBaseService<Teache
}
}
public void move(@NotNull(message = "开课ID不能为空") Long teacherOpenCourseId,
@NotNull(message = "移动类型不能为空!") MoveEnum moveType) {
final TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = teacherOpenCourseMergeTeacherDao.getValueByTeacherOpenCourseId(teacherOpenCourseId);
final Long orderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
final Long teacherId = teacherOpenCourseMergeTeacher.getTeacherId();
final Long teacherOpenCourseMergeTeacherId = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherId();
// 倒序查询,取前两个。用于切换位置
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);
} break;
case MOVE_LEFT:{
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
.appendSql("order by teacher_open_course_merge_teacher_order_index desc limit 2")
.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();
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex1);
moveLeftList.get(1).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex0);
updateBatch(moveLeftList);
} break;
case MOVE_RIGHT:{
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
.appendSql("order by teacher_open_course_merge_teacher_order_index limit 2")
.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();
// 交换位置
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex1);
moveLeftList.get(1).setTeacherOpenCourseMergeTeacherOrderIndex(orderIndex0);
updateBatch(moveLeftList);
} break;
}
}
}

@ -103,12 +103,23 @@ public class TeacherOpenCourseService extends CoreBaseService<TeacherOpenCourse>
teacherOpenCourseDao.insert(teacherOpenCourse);
// 开课和教师关联数据
if (ObjectUtil.isNotEmpty(teacherOpenCourse.getTeacherInfo().getTeacherId())) {
Long teacherId = teacherOpenCourse.getTeacherInfo().getTeacherId();
if (ObjectUtil.isNotEmpty(teacherId)) {
// 新建排序值则默认是1
Long newOrderIndex = 1L;
TeacherOpenCourseMergeTeacher courseMergeTeacherList = teacherOpenCourseMergeTeacherDao.getOneByTeacherId(teacherId);
// 如果没有查询到这个老师创建的开课信息, 则不会递增
if(courseMergeTeacherList != null) {
newOrderIndex = courseMergeTeacherList.getTeacherOpenCourseMergeTeacherOrderIndex() + 1L;
}
TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = new TeacherOpenCourseMergeTeacher();
teacherOpenCourseMergeTeacher.setTeacherId(teacherOpenCourse.getTeacherInfo().getTeacherId());
teacherOpenCourseMergeTeacher.setTeacherId(teacherId);
teacherOpenCourseMergeTeacher.setTeacherOpenCourseId(teacherOpenCourse.getTeacherOpenCourseId());
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherAddTime(new Date());
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherStatus(1);
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
// 生成的授权码, 库里唯一
String tempCode = generateCodeWithVerify(RandomUtil.randomString(6));

@ -7,6 +7,7 @@ import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.enums.MoveEnum;
import com.ibeetl.jlw.service.TeacherOpenCourseMergeTeacherService;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery;
import org.apache.commons.lang3.StringUtils;
@ -202,5 +203,19 @@ 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();
}
}

@ -24,6 +24,8 @@ public class TeacherOpenCourseMergeTeacherQuery extends PageParam {
private Integer teacherOpenCourseMergeTeacherStatus;
@Query(name = "教师开课授权码", display = true)
private String teacherOpenCourseMergeTeacherAuthCode;
@Query(name = "排序", display = false)
private Long teacherOpenCourseMergeTeacherOrderIndex ;
@Query(name = "创建时间", display = false)
private Date teacherOpenCourseMergeTeacherAddTime;
@Query(name = "组织ID", display = false)
@ -153,4 +155,12 @@ public class TeacherOpenCourseMergeTeacherQuery extends PageParam {
public void setTeacherOpenCourseMergeTeacherAuthCode(String teacherOpenCourseMergeTeacherAuthCode) {
this.teacherOpenCourseMergeTeacherAuthCode = teacherOpenCourseMergeTeacherAuthCode;
}
public Long getTeacherOpenCourseMergeTeacherOrderIndex() {
return teacherOpenCourseMergeTeacherOrderIndex;
}
public void setTeacherOpenCourseMergeTeacherOrderIndex(Long teacherOpenCourseMergeTeacherOrderIndex) {
this.teacherOpenCourseMergeTeacherOrderIndex = teacherOpenCourseMergeTeacherOrderIndex;
}
}

@ -51,6 +51,7 @@ queryByCondition
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
order by t.teacher_open_course_merge_teacher_order_index desc
queryByConditionQuery
@ -104,7 +105,7 @@ queryByConditionQuery
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
order by t.teacher_open_course_merge_teacher_order_index desc
deleteTeacherOpenCourseMergeTeacherByIds
@ -204,7 +205,7 @@ getTeacherOpenCourseMergeTeacherValues
@if(!isEmpty(userId)){
and t.user_id =#userId#
@}
order by t.teacher_open_course_merge_teacher_order_index desc
getValuesByQuery
===
@ -254,3 +255,4 @@ getValuesByQuery
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
order by t.teacher_open_course_merge_teacher_order_index desc

@ -0,0 +1,46 @@
package com.ibeetl.jlw.web;
import base.BaseTest;
import org.junit.jupiter.api.Test;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import java.nio.charset.Charset;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* <p>
*
* </p>
*
* @author mlx
* @date 2022/10/24
* @modified
*/
class TeacherOpenCourseMergeTeacherControllerTest extends BaseTest {
private static final String MODEL = "/jlw/teacherOpenCourseMergeTeacher";
private static final String API = "/api/teacherOpenCourseMergeTeacher";
@Test
void move() throws Exception {
//构造请求参数
RequestBuilder rb = MockMvcRequestBuilders.post(MODEL + "/move.json")
.param("teacherOpenCourseId", "1569699103338831872")
.param("moveType", "MOVE_TOP");
// 测试账号,佟老师
putLoginInfoToEnv("102", "26");
//发送请求,验证返回结果
String result = mvc.perform(rb)
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0"))
.andReturn().getResponse().getContentAsString(Charset.defaultCharset());
System.out.println(result);
clearEnvLoginInfo();
}
}
Loading…
Cancel
Save