diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java index f64c33b2..ee3b25d9 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseManageApi.java @@ -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{ diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java index 3fdf633c..762fa22b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java @@ -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); /** * 更新课程内容,是否记录修改日志 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java index fd0e5cff..c5f521f5 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java @@ -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 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 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 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