You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tianze-pro/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeTeach...

306 lines
15 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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("需要实现删除操作!");
}
}