|
|
package com.ibeetl.jlw.service;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.jlw.util.ToolUtils;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
|
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 lombok.extern.slf4j.Slf4j;
|
|
|
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.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.validation.constraints.NotBlank;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 课程开课关联教师 Service
|
|
|
* 当分布式ID开启后请勿使用insert(*,true)
|
|
|
*/
|
|
|
|
|
|
@Service
|
|
|
@Transactional
|
|
|
@Slf4j
|
|
|
public class TeacherOpenCourseMergeTeacherService extends CoreBaseService<TeacherOpenCourseMergeTeacher> implements DeleteResourcesBy{
|
|
|
|
|
|
@Autowired private TeacherOpenCourseMergeTeacherDao teacherOpenCourseMergeTeacherDao;
|
|
|
|
|
|
public PageQuery<TeacherOpenCourseMergeTeacher>queryByCondition(PageQuery query){
|
|
|
PageQuery ret = teacherOpenCourseMergeTeacherDao.queryByCondition(query);
|
|
|
queryListAfter(ret.getList());
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
public PageQuery<TeacherOpenCourseMergeTeacher>queryByConditionQuery(PageQuery query){
|
|
|
PageQuery ret = teacherOpenCourseMergeTeacherDao.queryByConditionQuery(query);
|
|
|
queryListAfter(ret.getList());
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
public void deleteByList(List list){
|
|
|
String ids = "";
|
|
|
ToolUtils.deleteNullList(list);
|
|
|
for(int i=0;null != list && i<list.size();i++){
|
|
|
ids += list.get(i).toString()+(i==list.size()-1?"":",");
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(ids)){
|
|
|
teacherOpenCourseMergeTeacherDao.deleteTeacherOpenCourseMergeTeacherByIds(ids);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void deleteTeacherOpenCourseMergeTeacher(String ids){
|
|
|
try {
|
|
|
teacherOpenCourseMergeTeacherDao.deleteTeacherOpenCourseMergeTeacherByIds(ids);
|
|
|
} catch (Exception e) {
|
|
|
throw new PlatformException("批量删除课程开课关联教师失败", e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String addAll(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
String msg = "";
|
|
|
List<TeacherOpenCourseMergeTeacher> teacherOpenCourseMergeTeacherList = new ArrayList<>();
|
|
|
try {
|
|
|
teacherOpenCourseMergeTeacherList = JSON.parseArray(teacherOpenCourseMergeTeacherQuery.getTeacherOpenCourseMergeTeacherJsonStr(), TeacherOpenCourseMergeTeacher.class);
|
|
|
} catch (Exception e) {
|
|
|
try {
|
|
|
teacherOpenCourseMergeTeacherList.add(JSONObject.parseObject(teacherOpenCourseMergeTeacherQuery.getTeacherOpenCourseMergeTeacherJsonStr(), TeacherOpenCourseMergeTeacher.class));
|
|
|
} catch (Exception e1) {}
|
|
|
}
|
|
|
ToolUtils.deleteNullList(teacherOpenCourseMergeTeacherList);
|
|
|
if(null != teacherOpenCourseMergeTeacherList && teacherOpenCourseMergeTeacherList.size()>0){
|
|
|
for(int i=0;i<teacherOpenCourseMergeTeacherList.size();i++){
|
|
|
TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = teacherOpenCourseMergeTeacherList.get(i);
|
|
|
teacherOpenCourseMergeTeacher.setUserId(teacherOpenCourseMergeTeacherQuery.getUserId());
|
|
|
teacherOpenCourseMergeTeacher.setOrgId(teacherOpenCourseMergeTeacherQuery.getOrgId());
|
|
|
}
|
|
|
insertBatch(teacherOpenCourseMergeTeacherList);
|
|
|
}
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
public JsonResult add(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
String msg = "";
|
|
|
TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = teacherOpenCourseMergeTeacherQuery.pojo();
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherAuthCode(RandomUtil.randomString(6));
|
|
|
teacherOpenCourseMergeTeacherDao.insert(teacherOpenCourseMergeTeacher);
|
|
|
teacherOpenCourseMergeTeacherQuery.setTeacherOpenCourseMergeTeacherId(teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherId());
|
|
|
JsonResult jsonResult = new JsonResult();
|
|
|
jsonResult.setData(teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherId());//自增的ID丢进去
|
|
|
jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
|
|
|
jsonResult.setMsg(msg);
|
|
|
return jsonResult;
|
|
|
}
|
|
|
|
|
|
public String edit(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
String msg = "";
|
|
|
TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = teacherOpenCourseMergeTeacherQuery.pojo();
|
|
|
teacherOpenCourseMergeTeacherDao.updateTemplateById(teacherOpenCourseMergeTeacher);
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
public String updateGivenByIds(TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
String msg = "";
|
|
|
if(StringUtils.isNotBlank(teacherOpenCourseMergeTeacherQuery.get_given())){
|
|
|
boolean flag = teacherOpenCourseMergeTeacherDao.updateGivenByIds(teacherOpenCourseMergeTeacherQuery) > 0;
|
|
|
if(!flag){
|
|
|
msg = "更新指定参数失败";
|
|
|
}
|
|
|
}else{
|
|
|
msg = "指定参数为空";
|
|
|
}
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
public List<TeacherOpenCourseMergeTeacher> getValues (Object paras){
|
|
|
return sqlManager.select(SqlId.of("jlw.teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherValues"),TeacherOpenCourseMergeTeacher.class,paras);
|
|
|
}
|
|
|
|
|
|
public List<TeacherOpenCourseMergeTeacher> getValuesByQuery (TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
List<TeacherOpenCourseMergeTeacher> valuesByQuery = teacherOpenCourseMergeTeacherDao.getValuesByQuery(teacherOpenCourseMergeTeacherQuery);
|
|
|
queryListAfter(valuesByQuery);
|
|
|
return valuesByQuery;
|
|
|
}
|
|
|
|
|
|
public TeacherOpenCourseMergeTeacher getInfo (Long teacherOpenCourseMergeTeacherId){
|
|
|
TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery = new TeacherOpenCourseMergeTeacherQuery();
|
|
|
teacherOpenCourseMergeTeacherQuery.setTeacherOpenCourseMergeTeacherId(teacherOpenCourseMergeTeacherId);
|
|
|
List<TeacherOpenCourseMergeTeacher> list = teacherOpenCourseMergeTeacherDao.getValuesByQuery(teacherOpenCourseMergeTeacherQuery);
|
|
|
if(null != list && list.size()>0){
|
|
|
return list.get(0);
|
|
|
}else{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public TeacherOpenCourseMergeTeacher getInfo (TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery){
|
|
|
List<TeacherOpenCourseMergeTeacher> list = teacherOpenCourseMergeTeacherDao.getValuesByQuery(teacherOpenCourseMergeTeacherQuery);
|
|
|
if(null != list && list.size()>0){
|
|
|
return list.get(0);
|
|
|
}else{
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@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)
|
|
|
;
|
|
|
|
|
|
switch (moveType) {
|
|
|
// 置顶
|
|
|
case MOVE_TOP: {
|
|
|
// 置顶元素
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
//批量更新,置顶元素之前的元素集合
|
|
|
updateBatchTemplate(newList);
|
|
|
} break;
|
|
|
//左移
|
|
|
case MOVE_LEFT: {
|
|
|
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
|
|
|
.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, "您已经是置顶状态!");
|
|
|
|
|
|
// 交换位置
|
|
|
Long newOrderIndex = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
Long currentOrderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(currentOrderIndex);
|
|
|
|
|
|
updateTemplate(moveLeftList.get(0));
|
|
|
updateTemplate(teacherOpenCourseMergeTeacher);
|
|
|
} break;
|
|
|
// 右移
|
|
|
case MOVE_RIGHT: {
|
|
|
List<TeacherOpenCourseMergeTeacher> moveLeftList = lambdaQuery
|
|
|
// 大于等于当前排序值
|
|
|
.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, "您已经是置底状态!");
|
|
|
|
|
|
// 交换位置
|
|
|
Long newOrderIndex = moveLeftList.get(0).getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
Long currentOrderIndex = teacherOpenCourseMergeTeacher.getTeacherOpenCourseMergeTeacherOrderIndex();
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
moveLeftList.get(0).setTeacherOpenCourseMergeTeacherOrderIndex(currentOrderIndex);
|
|
|
|
|
|
updateTemplate(moveLeftList.get(0));
|
|
|
updateTemplate(teacherOpenCourseMergeTeacher);
|
|
|
} break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 插入表,根据教师ID和开课ID。
|
|
|
* @param teacherOpenCourseId
|
|
|
* @param teacherId
|
|
|
*/
|
|
|
public void insertByTeacher(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId,
|
|
|
@NotNull(message = "教师ID不能为空!") Long teacherId) {
|
|
|
// 新建排序值,则默认是1
|
|
|
Long newOrderIndex = 1L;
|
|
|
TeacherOpenCourseMergeTeacher courseMergeTeacherList = teacherOpenCourseMergeTeacherDao.getOneByTeacherId(teacherId);
|
|
|
|
|
|
// 如果没有查询到这个老师创建的开课信息, 则不会递增
|
|
|
if(courseMergeTeacherList != null) {
|
|
|
newOrderIndex = courseMergeTeacherList.getTeacherOpenCourseMergeTeacherOrderIndex() + 1L;
|
|
|
}
|
|
|
|
|
|
TeacherOpenCourseMergeTeacher teacherOpenCourseMergeTeacher = new TeacherOpenCourseMergeTeacher();
|
|
|
teacherOpenCourseMergeTeacher.setTeacherId(teacherId);
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseId(teacherOpenCourseId);
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherAddTime(new Date());
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherStatus(1);
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherOrderIndex(newOrderIndex);
|
|
|
|
|
|
// 生成的授权码, 库里唯一
|
|
|
String tempCode = generateCodeWithVerify(RandomUtil.randomString(6));
|
|
|
// 开课授权码:新增开课记录时,则创建授权码
|
|
|
teacherOpenCourseMergeTeacher.setTeacherOpenCourseMergeTeacherAuthCode(tempCode);
|
|
|
// teacherOpenCourseMergeTeacher.setOrgId(teacherOpenCourseQuery.getOrgId());
|
|
|
// teacherOpenCourseMergeTeacher.setUserId(teacherOpenCourseQuery.getUserId());
|
|
|
teacherOpenCourseMergeTeacherDao.insert(teacherOpenCourseMergeTeacher);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生成唯一的验证码
|
|
|
* @param tempCode
|
|
|
* @return
|
|
|
*/
|
|
|
public String generateCodeWithVerify(@NotBlank(message = "验证码不能为空!") String tempCode) {
|
|
|
boolean isRepeat = teacherOpenCourseMergeTeacherDao.createLambdaQuery()
|
|
|
.andEq(TeacherOpenCourseMergeTeacher::getTeacherOpenCourseMergeTeacherAuthCode, tempCode)
|
|
|
.count() > 0L;
|
|
|
|
|
|
// 已经存在,则递归创建新的验证码
|
|
|
if(isRepeat) {
|
|
|
return generateCodeWithVerify(RandomUtil.randomString(6));
|
|
|
}
|
|
|
|
|
|
return tempCode;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void resetOperationByTeacherOpenCourseId(Long teacherOpenCourseId) {
|
|
|
log.info("不需要实现重置操作!");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deleteTeacherOpenCourseAllRelatedByTeacherOpenCourseId(Long teacherOpenCourseId) {
|
|
|
log.info("需要实现删除操作!");
|
|
|
}
|
|
|
}
|