diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java index 5b4eea7..9990474 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java @@ -3,6 +3,7 @@ package com.tz.platform.competitiion.pc.biz; import com.tz.platform.common.core.base.Result; import com.tz.platform.common.core.bo.MemberInfo; import com.tz.platform.competitiion.pc.dto.PageTeamDTO; +import com.tz.platform.competitiion.pc.dto.PageTeamMemberDTO; import com.tz.platform.competitiion.pc.vo.*; import com.tz.platform.entity.CompetitionMember; import com.tz.platform.entity.CompetitionTeam; @@ -97,6 +98,7 @@ public class TeamBiz { member.setUserId(m.getId()); member.setStageId(team.getStageId()); member.setTeamId(team.getId()); + member.setTeamName(team.getTeamName()); memberList.add(member); }); @@ -127,14 +129,20 @@ public class TeamBiz { @Transactional public Result addTeam(AddTeamVO vo){ - CompetitionTeam team = teamDao.getByTeamName(vo.getTeamName()); - if(team !=null){ + CompetitionTeam teamT = teamDao.getByTeamName(vo.getTeamName()); + if(teamT !=null){ return Result.error("团队名称已存在"); } if(vo.getIds() == null||vo.getIds().size() == 0){ return Result.error("请选择团队成员"); } - + if(vo.getCompetitionId() == null ||vo.getCompetitionId()<=0){ + return Result.error("大赛信息不能为空"); + } + if(vo.getStageId() == null||vo.getStageId()<=0){ + return Result.error("阶段信息不能为空"); + } + CompetitionTeam team = new CompetitionTeam(); team.setTeamName(vo.getTeamName()); team.setTeacherName(vo.getTeacher()); team.setCompetitionId(vo.getCompetitionId()); @@ -150,14 +158,33 @@ public class TeamBiz { member.setCompetitionId(teamInfo.getCompetitionId()); member.setName(m.getName()); member.setSchool(m.getSchool()); + team.setSchool(m.getSchool()); member.setStudentNo(m.getStudentNo()); member.setUserId(m.getId()); member.setStageId(teamInfo.getStageId()); member.setTeamId(teamInfo.getId()); + member.setTeamName(teamInfo.getTeamName()); memberList.add(member); }); memberDao.saveAll(memberList); return Result.success("success"); } + + + public Result listTeamMember(PageTeamMemberVO vo){ + if(vo.getPageNo() <= 0){ + vo.setPageNo(0); + }else{ + vo.setPageNo(vo.getPageNo() -1); + } + if(vo.getPageSize()<= 0){ + vo.setPageSize(20); + } + Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize()); + Page onePage = memberDao.findAllByCompetitionIdAndStageId(vo.getCompetitionId(),vo.getStageId(),pageable); + PageTeamMemberDTO dto = new PageTeamMemberDTO(); + dto.setPage(onePage); + return Result.success(dto); + } } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java index 9f7a82a..4b78e0f 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java @@ -102,6 +102,7 @@ public class TeamTemplateImportBiz { member.setUserId(info.getId()); member.setStageId(stageId); member.setTeamId(teamInfo.getId()); + member.setTeamName(teamInfo.getTeamName()); memberList.add(member); } }); diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java index 7529c8c..64f1c43 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionMember.java @@ -19,4 +19,10 @@ public class CompetitionMember { private String name; private String school; private Integer teamId; + private String teamName; + private String accountId; + private String accountPwd; + private Long examSore; + private Long financeSore; + private Long examCostTime; } diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignRegionController.java b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignRegionController.java new file mode 100644 index 0000000..bea47a6 --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignRegionController.java @@ -0,0 +1,17 @@ +package com.tz.platform.system.feign; + +import com.tz.platform.feign.IFeignRegion; +import com.tz.platform.feign.vo.RegionVO; +import com.tz.platform.system.feign.biz.FeignRegionBiz; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class FeignRegionController implements IFeignRegion { + private FeignRegionBiz biz; + @Override + public List list() { + return biz.list(); + } +} diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignRegionBiz.java b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignRegionBiz.java new file mode 100644 index 0000000..3fa3806 --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignRegionBiz.java @@ -0,0 +1,21 @@ +package com.tz.platform.system.feign.biz; + +import com.tz.platform.common.core.tools.BeanUtils; +import com.tz.platform.entity.Region; +import com.tz.platform.feign.vo.RegionVO; +import com.tz.platform.repository.RegionDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class FeignRegionBiz { + @Autowired + private RegionDao regionDao; + + public List list(){ + List regionList = regionDao.findAll(); + return BeanUtils.copyProperties(regionList,RegionVO.class); + } +} diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/UploadUserController.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/UploadUserController.java new file mode 100644 index 0000000..bfa0d78 --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/UploadUserController.java @@ -0,0 +1,24 @@ +package com.tz.platform.user.pc; + +import com.tz.platform.common.core.base.BaseController; +import com.tz.platform.common.core.base.Result; +import com.tz.platform.user.pc.biz.ImportUserBiz; +import com.tz.platform.user.pc.dto.ListUploadUserDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@RestController +@RequestMapping("/api/user/upload") +public class UploadUserController extends BaseController { + + @Autowired + private ImportUserBiz biz; + + @PostMapping(value = "importUser") + public Result importUser(MultipartFile file){ + return biz.importUser(file,getUserNo()); + } +} diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/ImportUserBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/ImportUserBiz.java new file mode 100644 index 0000000..a792101 --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/ImportUserBiz.java @@ -0,0 +1,127 @@ +package com.tz.platform.user.pc.biz; + +import cn.hutool.crypto.digest.DigestUtil; +import com.tz.platform.common.core.base.Result; +import com.tz.platform.common.core.config.SystemUtil; +import com.tz.platform.common.core.enmus.UserTypeEnum; +import com.tz.platform.common.core.tools.ExcelUtil; +import com.tz.platform.common.core.tools.StrUtil; +import com.tz.platform.entity.User; +import com.tz.platform.feign.IFeignProvince; +import com.tz.platform.feign.IFeignRegion; +import com.tz.platform.feign.IFeignStudentLevel; +import com.tz.platform.feign.vo.ProvinceVO; +import com.tz.platform.feign.vo.RegionVO; +import com.tz.platform.feign.vo.StudentLevelVo; +import com.tz.platform.repository.UserDao; +import com.tz.platform.user.pc.dto.ListUploadUserDTO; +import com.tz.platform.user.pc.dto.UploadUserDTO; +import org.apache.poi.ss.usermodel.Row; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Component +public class ImportUserBiz { + + @Autowired + private UserDao userDao; + + @Autowired + private IFeignProvince feignProvince; + + @Autowired + private IFeignStudentLevel feignStudentLevel; + + + + public Result importUser(MultipartFile file, Long userNo){ + if(userNo == null|| userNo<=0){ + return Result.error("无权操作"); + } + List provinceList = feignProvince.list(); + List levelList = feignStudentLevel.list(); + try { + ExcelUtil util = new ExcelUtil(file.getInputStream()); + List uploadList = new ArrayList<>(); + List studentNoList =new ArrayList<>(); + for(int rowNo = 1;rowNo <=util.getLastRowNum();rowNo++) { + Row row = util.getRow(rowNo); + UploadUserDTO d = new UploadUserDTO(); + String studentNo = util.getCellValue(row.getCell(0)); + String name = util.getCellValue(row.getCell(1)); + String school = util.getCellValue(row.getCell(2)); + String mobile = util.getCellValue(row.getCell(3)); + String province = util.getCellValue(row.getCell(4)); + String level = util.getCellValue(row.getCell(5)); + if(StringUtils.isEmpty(studentNo)){ + d.setStatus("空学号"); + continue; + }else{ + if(studentNoList.contains(studentNo)){ + d.setStatus("学号重复"); + }else{ + studentNoList.add(studentNo); + } + } + d.setStudentNo(studentNo); + d.setName(name); + d.setSchool(school); + d.setMobile(mobile); + d.setProvince(province); + d.setLevel(level); + uploadList.add(d); + } + List existList = userDao.findAllByStudentNoIn(studentNoList); + List tmpList = existList.stream().map(User::getStudentNo).collect(Collectors.toList()); + List willAddList = uploadList.stream().filter(uploadUserDTO -> { + boolean rs =!tmpList.contains(uploadUserDTO.getStudentNo()); + if(rs ==false){ + uploadUserDTO.setStatus("已存在"); + } + return rs; + }).collect(Collectors.toList()); + List userList = new ArrayList<>(); + willAddList.forEach(dto->{ + User user = new User(); + user.setUsername(dto.getStudentNo()); + user.setStudentNo(dto.getStudentNo()); + user.setGmtCreate(new Date()); + user.setGmtModified(new Date()); + user.setSchool(dto.getSchool()); + user.setProvince(dto.getProvince()); + user.setName(dto.getName()); + user.setMobile(dto.getMobile()); + StudentLevelVo level = levelList.stream().filter(l -> l.getName().equals(dto.getLevel())).findFirst().orElse(null); + if(level !=null){ + user.setLevelId(level.getId()); + } + ProvinceVO province = provinceList.stream().filter(p-> p.getName().contains(dto.getProvince())).findFirst().orElse(null); + if(province!=null){ + user.setProvince(dto.getProvince()); + user.setProvinceId(province.getId()); + user.setRegionId(province.getRegionId()); + } + user.setUserType(UserTypeEnum.USER.getCode()); + user.setMobileSalt(StrUtil.get32UUID()); + user.setMobilePsw(DigestUtil.sha1Hex(user.getMobileSalt() + SystemUtil.INIT_PASSWORD)); + user.setUserType(UserTypeEnum.USER.getCode()); + userList.add(user); + }); + userDao.saveAll(userList); + ListUploadUserDTO dto = new ListUploadUserDTO(); + dto.setList(uploadList); + return Result.success(dto); + + } catch (Exception e) { + e.printStackTrace(); + return Result.error("文件解析失败"); + } + } +}