培一个批量报名的接口

This commit is contained in:
daihh
2023-02-28 16:28:42 +08:00
parent d9f6f532f5
commit ec3feca9b8
5 changed files with 144 additions and 4 deletions

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 {
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<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));
}
}