Merge remote-tracking branch 'origin/copybug'

This commit is contained in:
yujicun
2023-03-29 11:42:20 +08:00
3 changed files with 144 additions and 108 deletions

View File

@@ -829,8 +829,9 @@ public class CourseManageApi extends ApiBaseController{
if(StringUtils.isBlank(id)){
return badRequest("参数错误");
}
CurrentUser cuser=getCurrent();
try {
String mess = courseService.copyCourse(id,refId,refType);
String mess = courseService.copyCourse(id,refId,refType,cuser.getAccountId(),cuser.getName());
if(StringUtils.isBlank(mess)){
return success(true);
}else{

View File

@@ -131,7 +131,7 @@ public interface ICourseService {
* 复制课程
* @param id
*/
String copyCourse(String id,String refId,String refType);
String copyCourse(String id,String refId,String refType,String aid,String aname);
/**
* 更新课程内容,是否记录修改日志

View File

@@ -21,6 +21,7 @@ import com.xboe.TempFilterConfig;
import com.xboe.account.service.IAccountService;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.common.beans.KeyValue;
import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.event.IEventDataSender;
@@ -1495,116 +1496,150 @@ public class CourseServiceImpl implements ICourseService {
@Transactional(propagation = Propagation.REQUIRED)
@Override
public String copyCourse(String id,String refId,String refType) {
public String copyCourse(String id,String refId,String refType,String aid,String aname) {
//复制课程,boe_course,boe_course_content,boe_course_homework,boe_course_section,boe_course_teacher,boe_course_exam
// insert info select
List<CourseSection> sectionList = courseSectionDao.findList("courseId", id);
if(refId==null) {
refId="";
}
if(refType==null) {
refType="";
}
boolean visible=true;
if(StringUtils.isNotBlank(refId)) {
visible=false;
}
String newId = IDGenerator.generate();
String courseName = this.courseName(id);
String mess=null;
if(courseName.length()<96) {
LocalDateTime time = LocalDateTime.now();
String sql = "insert into boe_course(id,ref_id,ref_type,visible,sys_create_aid,sys_create_by,sys_create_time,deleted,sys_update_by," +
"sys_update_time,sys_version,comments,cover_img,dead_time,device,enable_remark,enabled," +
"erasable,favorites,for_scene,for_users,is_top,keywords,name,open_object," +
"overview,pass_formula,praises,publish_time,published,res_owner1,res_owner2," +
"res_owner3,score,score_formula,shares,source,study_time,studys,summary," +
"sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,views," +
"order_study,status)" +
"select '" + newId + "','"+refId+"','"+refType+"',"+visible+",sys_create_aid,sys_create_by,'" + time + "',deleted,sys_update_by," +
"'" + time + "',sys_version,comments,cover_img,dead_time,device,enable_remark,enabled," +
"erasable,0,for_scene,for_users,0,keywords,'" + courseName + "(1)" + "',open_object," +
"overview,pass_formula,0,publish_time,0,res_owner1,res_owner2," +
"res_owner3,score,score_formula,0,source,study_time,0,summary," +
"sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,0," +
"order_study,1 from boe_course where id=?1";
courseDao.sqlUpdate(sql, id);
//课程章节复制,因为微课是没有章的,所以这里要判断
LocalDateTime contentTime = LocalDateTime.now();
if(sectionList.isEmpty()) {
//课程内容复制
String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," +
"deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," +
"content_type,course_id,csection_id,duration,sort_index)" +
"select UUID_SHORT(),sys_create_aid,sys_create_by,'" + contentTime + "'," +
"deleted,sys_update_by,'" + contentTime + "',sys_version,content," +
"content_name,content_refid,content_type,'" + newId + "','',duration,sort_index " +
"from boe_course_content where course_id=?1";
courseContentDao.sqlUpdate(sqlContent, id);
}else {
for(CourseSection csection : sectionList) {
//生成新的章的id
String newSectionId = IDGenerator.generate();
String sqlSection = "" +
"insert into boe_course_section(id,course_id,description,name,order_index,parent_id)" +
"SELECT '"+newSectionId+"','" + newId + "',description,name,order_index,parent_id " +
"from boe_course_section where id=?1";
courseSectionDao.sqlUpdate(sqlSection, csection.getId());
//课程内容复制
String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," +
"deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," +
"content_type,course_id,csection_id,duration,sort_index)" +
"select UUID_SHORT(),sys_create_aid,sys_create_by,'" + contentTime + "'," +
"deleted,sys_update_by,'" + contentTime + "',sys_version,content," +
"content_name,content_refid,content_type,'" + newId + "','"+newSectionId+"',duration,sort_index " +
"from boe_course_content where course_id=?1 and csection_id=?2";
courseContentDao.sqlUpdate(sqlContent, id,csection.getId());
}
// insert info select
List<CourseSection> sectionList = courseSectionDao.findList("courseId", id);
if(refId==null) {
refId="";
}
if(refType==null) {
refType="";
}
//课程作业复制
LocalDateTime homeWordTime = LocalDateTime.now();
String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," +
"file,name,submit_mode)" +
"SELECT UUID_SHORT(),sys_create_aid,sys_create_by,'" + homeWordTime + "'," +
"deleted,sys_update_by,'" + homeWordTime + "',sys_version,content,content_id,'" + newId + "',dead_time," +
"file,name,submit_mode from boe_course_homework where course_id=?1";
courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork, id);
boolean visible=true;
if(StringUtils.isNotBlank(refId)) {
visible=false;
}
//课程任课教师复制
LocalDateTime teacherTime = LocalDateTime.now();
String sqlTeacher = "insert into boe_course_teacher(id,sys_create_aid,sys_create_by,sys_create_time," +
"course_id,teacher_id,teacher_name)" +
"SELECT UUID_SHORT(),sys_create_aid,sys_create_by," +
"'" + teacherTime + "','" + newId + "',teacher_id," +
"teacher_name from boe_course_teacher where course_id=?1";
courseTeacherDao.sqlUpdate(sqlTeacher, id);
// 课程考试信息复制
LocalDateTime examTime = LocalDateTime.now();
String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," +
"course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," +
"scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times)" +
"select UUID_SHORT(),sys_create_aid,sys_create_by," +
"'" + examTime + "',deleted,sys_update_by,'" + examTime + "'," +
"sys_version,arrange,content_id," +
"'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," +
"random_mode,scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times from boe_course_exam where course_id=?1";
courseExamDao.sqlUpdate(sqlExam, id);
}
else{
mess="长度超出范围";
}
return mess;
String newId = IDGenerator.generate();
String courseName = this.courseName(id);
LocalDateTime time = LocalDateTime.now();
String mess=null;
if(courseName.length()<96) {
String sql = "insert into boe_course(id,org_id,copy_id,ref_id,ref_type,visible,sys_create_aid,sys_create_by,sys_create_time,deleted,sys_update_by," +
"sys_update_time,sys_version,comments,cover_img,dead_time,device,enable_remark,enabled," +
"erasable,favorites,for_scene,for_users,is_top,keywords,name,open_object," +
"overview,pass_formula,praises,publish_time,published,res_owner1,res_owner2," +
"res_owner3,score,score_formula,shares,source,study_time,studys,summary," +
"sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,views," +
"order_study,status)" +
"select '" + newId + "',org_id,'"+id+"','"+refId+"','"+refType+"',"+visible+",'"+aid+"','"+aname+"','" + time + "',0,'"+aname+"'," +
"'" + time + "',1,comments,cover_img,dead_time,device,enable_remark,enabled," +
"erasable,0,for_scene,for_users,0,keywords,'" + courseName + "(1)" + "',open_object," +
"overview,pass_formula,0,publish_time,0,res_owner1,res_owner2," +
"res_owner3,score,score_formula,0,source,study_time,0,summary," +
"sys_type1,sys_type2,sys_type3,tags,top_time,trample_count,type,value,0," +
"order_study,1 from boe_course where id=?1";
courseDao.sqlUpdate(sql, id);
//课程章节复制,因为微课是没有章的,所以这里要判断
if(sectionList.isEmpty()) {
//查出所有的内容,然后再一个一个复制(因为要复制关联的内容)
List<?> contentIds= courseContentDao.findListField("id",FieldFilters.eq("courseId", id),FieldFilters.eq("deleted", false));
for(Object obj :contentIds) {
String oldId=(String)obj;
String newContentId=IDGenerator.generate();
String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," +
"deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," +
"content_type,course_id,csection_id,duration,sort_index)" +
"select '"+newContentId+"','"+aid+"','"+aname+"','" + time + "'," +
"deleted,'"+aname+"','" + time + "',1,content," +
"content_name,content_refid,content_type,'" + newId + "','',duration,sort_index " +
"from boe_course_content where id=?1";
courseContentDao.sqlUpdate(sqlContent, oldId);
//课程作业复制
String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," +
"file,name,submit_mode)" +
"SELECT UUID_SHORT(),'"+aid+"','"+aname+"','" + time + "'," +
"deleted,'"+aname+"','" + time + "',sys_version,content,'"+newContentId+"','" + newId + "',dead_time," +
"file,name,submit_mode from boe_course_homework where content_id=?1";
courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork, oldId);
//课程考试信息复制
String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," +
"course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," +
"scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times)" +
"select UUID_SHORT(),'"+aid+"','"+aname+"'," +
"'" + time + "',deleted,'"+aname+"','" + time + "'," +
"1,arrange,'"+newContentId+"'," +
"'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," +
"random_mode,scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times from boe_course_exam where content_id=?1";
courseExamDao.sqlUpdate(sqlExam, oldId);
}
}else {
List<KeyValue> contentIdSectionIds= courseContentDao.findKeyValueList("id","csectionId", FieldFilters.eq("courseId", id),FieldFilters.eq("deleted", false));
for(CourseSection csection : sectionList) {
//生成新的章的id
String newSectionId = IDGenerator.generate();
String sqlSection = "" +
"insert into boe_course_section(id,course_id,description,name,order_index,parent_id)" +
"SELECT '"+newSectionId+"','" + newId + "',description,name,order_index,parent_id " +
"from boe_course_section where id=?1";
courseSectionDao.sqlUpdate(sqlSection, csection.getId());
//课程内容复制
for(KeyValue kv : contentIdSectionIds) {
if(!kv.getValue().equals(csection.getId())) {
continue;
}
String newContentId=IDGenerator.generate();
String sqlContent = "insert into boe_course_content(id,sys_create_aid,sys_create_by,sys_create_time," +
"deleted,sys_update_by,sys_update_time,sys_version,content,content_name,content_refid," +
"content_type,course_id,csection_id,duration,sort_index)" +
"select '"+newContentId+"','"+aid+"','"+aname+"','" + time + "'," +
"deleted,'"+aname+"','" + time + "',sys_version,content," +
"content_name,content_refid,content_type,'" + newId + "','"+newSectionId+"',duration,sort_index " +
"from boe_course_content where id=?1";
courseContentDao.sqlUpdate(sqlContent,kv.getKey());
//课程作业复制
String sqlCourseHomeWork = "insert into boe_course_homework(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,content,content_id,course_id,dead_time," +
"file,name,submit_mode)" +
"SELECT UUID_SHORT(),'"+aid+"','"+aname+"','" + time + "'," +
"deleted,'"+aname+"','" + time + "',sys_version,content,'"+newContentId+"','" + newId + "',dead_time," +
"file,name,submit_mode from boe_course_homework where content_id=?1 and course_id=?2";
courseHomeWorkDao.sqlUpdate(sqlCourseHomeWork,kv.getKey(),id);
//课程考试信息复制
String sqlExam = "insert into boe_course_exam(id,sys_create_aid,sys_create_by," +
"sys_create_time,deleted,sys_update_by,sys_update_time,sys_version,arrange,content_id," +
"course_id,info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum,random_mode," +
"scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times)" +
"select UUID_SHORT(),'"+aid+"','"+aname+"'," +
"'" + time + "',deleted,'"+aname+"','" + time + "'," +
"1,arrange,'"+newContentId+"'," +
"'" + newId + "',info,paper_content,paper_id,paper_type,pass_line,percent_score,qnum," +
"random_mode,scoring_type,show_analysis,show_answer,test_duration," +
"test_name,times from boe_course_exam where content_id=?1 and course_id=?2";
courseExamDao.sqlUpdate(sqlExam,kv.getKey(),id);
}
}
}
//课程任课教师复制
String sqlTeacher = "insert into boe_course_teacher(id,sys_create_aid,sys_create_by,sys_create_time," +
"course_id,teacher_id,teacher_name)" +
"SELECT UUID_SHORT(),'"+aid+"','"+aname+"'," +
"'" + time + "','" + newId + "',teacher_id," +
"teacher_name from boe_course_teacher where course_id=?1";
courseTeacherDao.sqlUpdate(sqlTeacher, id);
}
else{
mess="长度超出范围";
}
return mess;
}
@Override