Merge branch 'master' of codeup.aliyun.com:6265f483e4166464dc2f9c14/boeu/baseservers

This commit is contained in:
dongruihua
2023-03-03 17:53:30 +08:00
12 changed files with 229 additions and 35 deletions

View File

@@ -817,13 +817,20 @@ public class CourseManageApi extends ApiBaseController{
}
//@PostMapping("/copy")
/**
* 后续做的调整,增加反向关联
* @param id
* @param refId
* @param refType
* @return
*/
@RequestMapping(value="/copy",method = {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<Boolean> copyCourse(String id){
public JsonResponse<Boolean> copyCourse(String id,String refId,String refType){
if(StringUtils.isBlank(id)){
return badRequest("参数错误");
}
try {
String mess = courseService.copyCourse(id);
String mess = courseService.copyCourse(id,refId,refType);
if(StringUtils.isBlank(mess)){
return success(true);
}else{

View File

@@ -109,4 +109,9 @@ public class CourseQueryDto {
* 是否是超级管理员
*/
private Boolean isSystemAdmin;
private Boolean visible;
private String refId;
private String refType;
}

View File

@@ -349,6 +349,18 @@ public class Course extends BaseEntity {
@Column(name = "open_course", length = 1,columnDefinition = "int comment '是否公开课0表非公开课1表公开课'")
private Integer openCourse;
/**
* 是否可见
*/
@Column(name = "visible",columnDefinition = "bit comment '是否可见'")
private Boolean visible;
@Column(name = "ref_id",length=32,columnDefinition="varchar(32) comment '反向关联的id'")
private String refId;
@Column(name = "ref_type",length=32,columnDefinition="varchar(32) comment '反向关联的类型'")
private String refType;
@Transient
private String orgName;

View File

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

View File

@@ -148,6 +148,16 @@ public class CourseServiceImpl implements ICourseService {
filters.add(FieldFilters.eq("resOwner1",dto.getResOwner1()));
}
if(StringUtils.isNotBlank(dto.getRefId())){
filters.add(FieldFilters.eq("refId",dto.getRefId()));
}
if(StringUtils.isNotBlank(dto.getRefType())){
filters.add(FieldFilters.eq("refType",dto.getRefType()));
}
// if(dto.getVisible()!=null) {
// filters.add(FieldFilters.eq("visible",dto.getVisible()));
// }
if(dto.getDevice()!=null){
if(dto.getDevice()==Course.DEVICE_PC) {
filters.add(FieldFilters.in("device",Course.DEVICE_PC,Course.DEVICE_ALL));
@@ -244,15 +254,16 @@ public class CourseServiceImpl implements ICourseService {
List<IFieldFilter> filters = createFilters(dto);
//有权限的查询,也同时查询出创建人的数据,在权限上
if(TempFilterConfig.Manager_CourseFile_ByOrgIds && StringUtils.isNotBlank(dto.getOrgAid())) {
if(TempFilterConfig.Manager_CourseFile_ByOrgIds) {
if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) {
if(StringUtil.isNotBlank(dto.getOrgIds())){
if(dto.getOrgIds().contains(",")){
String[] split = dto.getOrgIds().split(",");
List<String> strings = Arrays.asList(split);
//filters.add(FieldFilters.in("orgId",strings));
filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
}else {
//filters.add(FieldFilters.eq("orgId",dto.getOrgIds()));
filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid())));
}
}else {
@@ -260,6 +271,7 @@ public class CourseServiceImpl implements ICourseService {
filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid()));
}
}
}
//自动添加过滤已删除
filters.add(FieldFilters.eq("deleted",false));
@@ -461,6 +473,9 @@ public class CourseServiceImpl implements ICourseService {
if(course.getSource()==null) {
course.setSource(1);//来源内部
}
if(course.getVisible()==null) {
course.setVisible(true);
}
courseDao.save(course);
}
@@ -638,7 +653,9 @@ public class CourseServiceImpl implements ICourseService {
updateLog.setLogData(strJson);
updateLogDao.save(updateLog);
}
if(c.getVisible()==null) {
c.setVisible(true);
}
courseDao.update(c);
c.setSysVersion(courseDao.getVersion(c.getId()));
full.getCourse().setSysVersion(c.getSysVersion());
@@ -672,6 +689,9 @@ public class CourseServiceImpl implements ICourseService {
public void submit(CourseFullDto full) throws Exception {
Course c=full.getCourse();//当前的课程信息
if(c.getVisible()==null) {
c.setVisible(true);
}
//提交审核,不再记录修改日志
// Course nowCourse=courseDao.get(c.getId());//修改之前的课程信息
// //审核不保存日志了
@@ -948,7 +968,6 @@ public class CourseServiceImpl implements ICourseService {
}
}else {
courseDao.updateMultiFieldById(id,UpdateBuilder.create("published", pass));
if(this.fullTextSearch!=null) {
Object fullId=courseDao.findField("fullTextId", FieldFilters.eq("id", id));
if(fullId!=null) {
@@ -1471,30 +1490,40 @@ public class CourseServiceImpl implements ICourseService {
@Transactional(propagation = Propagation.REQUIRED)
@Override
public String copyCourse(String id) {
public String copyCourse(String id,String refId,String refType) {
//复制课程,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,sys_create_aid,sys_create_by,sys_create_time,deleted,sys_update_by," +
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 + "',sys_create_aid,sys_create_by,'" + time + "',deleted,sys_update_by," +
"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,favorites,for_scene,for_users,0,keywords,'" + courseName + "(1)" + "',open_object," +
"overview,pass_formula,praises,publish_time,0,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," +
"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);

View File

@@ -59,7 +59,10 @@ public class PublishCourseUtil {
CourseFullText cft=CourseToCourseFullText.convert(c);
try {
//不可见的不会对课程发布到ES中
if(c.getVisible()!=null && !c.getVisible()) {
return;
}
//计算课程时长
int duration=courseContentDao.sumDurationByCourseId(c.getId());
cft.setDuration(duration);

View File

@@ -1,7 +1,6 @@
package com.xboe.school.study.api;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import org.apache.commons.lang3.StringUtils;
@@ -143,7 +142,6 @@ public class StudyCourseESApi extends ApiBaseController{
}
}
return success(true);
}
}

View File

@@ -1,6 +1,7 @@
package com.xboe.school.study.api;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -17,9 +18,12 @@ import org.springframework.web.bind.annotation.RestController;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.common.beans.IdName;
import com.xboe.common.beans.KeyValue;
import com.xboe.core.CurrentUser;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.school.study.dto.BatchSignup;
import com.xboe.school.study.entity.StudySignup;
import com.xboe.school.study.service.IStudySignupService;
@@ -96,8 +100,75 @@ public class StudySignupApi extends ApiBaseController{
signup.setSignTime(LocalDateTime.now());
try {
StudySignup has=signupService.getByCidAndAid(signup.getCourseId(), signup.getAid());
if(has!=null) {
return success(has);
}else {
signupService.selfSignup(signup);
return success(signup);
}
}catch(Exception e) {
log.error("报名处理失败",e);
return error("报名失败,请与管理员联系",e.getMessage());
}
}
/**
* 批量添加学员
* @param signup
* @return
*/
@PostMapping("/batch-add")
public JsonResponse<Integer> BatchAdd(@RequestBody BatchSignup batch){
if(StringUtils.isBlank(batch.getCourseId())){
return error("无课程信息");
}
if(StringUtils.isBlank(batch.getCourseName())){
return error("无课程名称信息");
}
if(batch.getUsers()==null || batch.getUsers().isEmpty()) {
return error("无报名人员信息");
}
//如果没有,就直接设置为录播课
if(batch.getCourseType()==null) {
batch.setCourseType(20);
}
try {
List<String> aids=new ArrayList<String>();
for(IdName u : batch.getUsers()) {
aids.add(u.getId());
}
List<KeyValue> hasList=signupService.findByCourseAndUsers(batch.getCourseId(), aids);
Map<String,String> hasMap=new HashMap<String,String>();
for(KeyValue has : hasList) {
hasMap.put((String)has.getValue(),has.getKey());
}
List<StudySignup> list=new ArrayList<StudySignup>();
int n=0;
for(IdName u : batch.getUsers()) {
//如果报名已经存在,就不再添加
if(hasMap.containsKey(u.getId())) {
continue;
}
StudySignup signup =new StudySignup();
signup.setAid(u.getId());
signup.setCourseId(batch.getCourseId());
signup.setCourseName(batch.getCourseName());
signup.setCourseType(batch.getCourseType());
signup.setName(u.getName());
signup.setSignTime(LocalDateTime.now());
signup.setSignType(StudySignup.SIGNTYPE_ADD);
signup.setSignInfo("");
list.add(signup);
n++;
}
signupService.addList(list);
return success(n);
}catch(Exception e) {
log.error("报名处理失败",e);
return error("报名失败,请与管理员联系",e.getMessage());

View File

@@ -0,0 +1,43 @@
package com.xboe.school.study.dto;
import java.util.List;
import com.xboe.common.beans.IdName;
import lombok.Data;
/**
* 批量报名
* @author seastar
*
*/
@Data
public class BatchSignup {
/**
* 课程id
*/
private String courseId;
/**
* 课程名称
*/
private String courseName;
/**
* 课程类型
*/
private Integer courseType;
/**
* 报名说明
*/
private String signInfo;
/**
* 报名人员
*/
private List<IdName> users;
}

View File

@@ -122,5 +122,15 @@ public class StudySignup extends IdEntity {
@Transient
private String studyId;
public StudySignup() {
}
public StudySignup(String id,String courseId,String aid) {
this.setId(id);
this.courseId=courseId;
this.aid=aid;
}
}

View File

@@ -4,6 +4,7 @@ import java.util.List;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.common.beans.KeyValue;
import com.xboe.school.study.entity.StudySignup;
/**
@@ -25,6 +26,14 @@ public interface IStudySignupService {
*/
StudySignup getByCidAndAid(String cid,String aid);
/**
* 根据课程的用户查询
* @param cid
* @param aid
* @return
*/
List<KeyValue> findByCourseAndUsers(String cid,List<String> aids);
/**
* 统计报名人数及未通过人数
* @param courseId

View File

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.common.beans.KeyValue;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.FieldUpdateType;
import com.xboe.core.orm.QueryBuilder;
@@ -85,7 +86,7 @@ public class StudySignupServiceImpl implements IStudySignupService{
LocalDateTime now=LocalDateTime.now();
StudyCourse sc=new StudyCourse();
sc.setAddTime(LocalDateTime.now());
sc.setAddTime(now);
sc.setAid(signup.getAid());
sc.setAname(signup.getName());
sc.setCourseId(signup.getCourseId());
@@ -100,6 +101,7 @@ public class StudySignupServiceImpl implements IStudySignupService{
sc.setLastTime(sc.getAddTime());
sc.setTotalDuration(0);
studyCourseDao.save(sc);
//courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION));
}
@Override
@@ -108,7 +110,6 @@ public class StudySignupServiceImpl implements IStudySignupService{
for(StudySignup ss : list) {
addSignup(ss);
}
}
@Override
@@ -200,4 +201,10 @@ public class StudySignupServiceImpl implements IStudySignupService{
return rs;
}
@Override
public List<KeyValue> findByCourseAndUsers(String cid,List<String> aids){
return signupDao.findKeyValueList("id","aid",FieldFilters.eq("courseId",cid),FieldFilters.in("aid",aids));
}
}