diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudySignupApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudySignupApi.java index 34a4d02e..0af37245 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudySignupApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudySignupApi.java @@ -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 { - signupService.selfSignup(signup); - return success(signup); + + 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 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 aids=new ArrayList(); + for(IdName u : batch.getUsers()) { + aids.add(u.getId()); + } + + List hasList=signupService.findByCourseAndUsers(batch.getCourseId(), aids); + Map hasMap=new HashMap(); + for(KeyValue has : hasList) { + hasMap.put((String)has.getValue(),has.getKey()); + } + + List list=new ArrayList(); + 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()); diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/dto/BatchSignup.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/dto/BatchSignup.java new file mode 100644 index 00000000..ac3fb4cc --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/dto/BatchSignup.java @@ -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 users; + + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudySignup.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudySignup.java index 58dfd90c..420d6448 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudySignup.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudySignup.java @@ -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; + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudySignupService.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudySignupService.java index f12b3498..fabcc2bd 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudySignupService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudySignupService.java @@ -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 findByCourseAndUsers(String cid,List aids); + /** * 统计报名人数及未通过人数 * @param courseId diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudySignupServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudySignupServiceImpl.java index bec4fde4..84ff563c 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudySignupServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudySignupServiceImpl.java @@ -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 findByCourseAndUsers(String cid,List aids){ + + return signupDao.findKeyValueList("id","aid",FieldFilters.eq("courseId",cid),FieldFilters.in("aid",aids)); + } + }