diff --git a/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberImport.java b/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberImport.java index 271e06f..1477dc5 100644 --- a/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberImport.java +++ b/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberImport.java @@ -8,4 +8,6 @@ public class MemberImport { private String studentNo; private String name; private String school; + private String province; + private String level; } 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 new file mode 100644 index 0000000..9f7a82a --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamTemplateImportBiz.java @@ -0,0 +1,120 @@ +package com.tz.platform.competitiion.pc.biz; + +import com.tz.platform.common.core.base.Result; +import com.tz.platform.common.core.bo.MemberImport; +import com.tz.platform.common.core.bo.MemberInfo; +import com.tz.platform.common.core.tools.ExcelUtil; +import com.tz.platform.competitiion.pc.bo.TeamInfo; +import com.tz.platform.entity.CompetitionMember; +import com.tz.platform.entity.CompetitionTeam; +import com.tz.platform.feign.user.IFeignUser; +import com.tz.platform.repository.CompetitionMemberDao; +import com.tz.platform.repository.CompetitionTeamDao; +import lombok.extern.slf4j.Slf4j; +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.List; + +@Component +@Slf4j +public class TeamTemplateImportBiz { + + @Autowired + private IFeignUser user; + + @Autowired + private CompetitionTeamDao teamDao; + + @Autowired + private CompetitionMemberDao memberDao; + + public Result excelImport(MultipartFile file,Long userNo,Long competitionId,Integer stageId){ + if(competitionId==null||stageId == null){ + return Result.error("大赛或赛段不能为空"); + } + try { + ExcelUtil util = new ExcelUtil(file.getInputStream()); + List teamInfoList = new ArrayList<>(); + List neesSave = new ArrayList<>(); + for(int rowNo = 2;rowNo memberInfoList = new ArrayList<>(); + for(int i = 5;i<=14;i+=2){ + String member1No = util.getCellValue(row.getCell(i)); + String member1Name = util.getCellValue(row.getCell(i+1)); + MemberImport memberInfo = new MemberImport(); + if(StringUtils.isEmpty(member1No)){ + continue; + } + memberInfo.setName(member1Name); + memberInfo.setStudentNo(member1No); + memberInfo.setSchool(school); + memberInfo.setLevel(level); + memberInfo.setProvince(province); + memberInfoList.add(memberInfo); + } + if(memberInfoList.size()>0){ + neesSave.addAll(memberInfoList); + } + + teamInfo.setLevel(level); + teamInfo.setProvince(province); + teamInfo.setSchool(school); + teamInfo.setTeamName(teamName); + teamInfo.setTeacher(teacher); + teamInfo.setMemberList(memberInfoList); + teamInfoList.add(teamInfo); + } + teamInfoList.forEach(info -> { + System.out.println(info.getTeamName()+" "+info.getSchool()+" "+info.getLevel()+ " "+info.getTeacher()+" memberCount:"+info.getMemberList().size()); + }); + + List mList = user.batchInsert(neesSave); + + teamInfoList.forEach(team->{ + CompetitionTeam t = new CompetitionTeam(); + t.setCompetitionId(competitionId); + t.setStageId(stageId); + t.setTeacherName(team.getTeacher()); + t.setTeamName(team.getTeamName()); + t.setSchool(team.getSchool()); + CompetitionTeam teamInfo = teamDao.save(t); + List memberList = new ArrayList<>(); + team.getMemberList().forEach(m->{ + MemberInfo info = mList.stream().filter(m2 -> m.getStudentNo().equals(m2.getStudentNo())).findFirst().orElse(null); + if(info!=null){ + CompetitionMember member = new CompetitionMember(); + member.setCompetitionId(competitionId); + member.setName(m.getName()); + member.setSchool(m.getSchool()); + member.setStudentNo(m.getStudentNo()); + member.setUserId(info.getId()); + member.setStageId(stageId); + member.setTeamId(teamInfo.getId()); + memberList.add(member); + } + }); + memberDao.saveAll(memberList); + + }); + + System.out.println(mList.size()); + + } catch (Exception e) { + e.printStackTrace(); + return Result.error("上传失败"); + } + return Result.success("success"); + } +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamDTO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamDTO.java new file mode 100644 index 0000000..f9e71b4 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamDTO.java @@ -0,0 +1,15 @@ +package com.tz.platform.competitiion.pc.dto; + +import com.tz.platform.entity.CompetitionMember; +import com.tz.platform.entity.CompetitionTeam; +import lombok.Data; +import org.springframework.data.domain.Page; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PageTeamDTO implements Serializable { + private Page page; + private List list; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamVO.java new file mode 100644 index 0000000..78d6fc8 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamVO.java @@ -0,0 +1,11 @@ +package com.tz.platform.competitiion.pc.vo; + +import lombok.Data; + +@Data +public class PageTeamVO { + private Long competitionId; + private Integer stageId; + private Integer pageNo; + private Integer pageSize; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamInfoVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamInfoVO.java new file mode 100644 index 0000000..21e2f3d --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamInfoVO.java @@ -0,0 +1,10 @@ +package com.tz.platform.competitiion.pc.vo; + +import lombok.Data; + +@Data +public class TeamInfoVO { + private Integer id; + private String name; + private Integer type; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamMemberVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamMemberVO.java new file mode 100644 index 0000000..915ddfa --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/TeamMemberVO.java @@ -0,0 +1,8 @@ +package com.tz.platform.competitiion.pc.vo; + +import lombok.Data; + +@Data +public class TeamMemberVO { + private Integer id; +} 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 92c0518..7529c8c 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 @@ -2,13 +2,11 @@ package com.tz.platform.entity; import lombok.Data; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; @Entity @Data +@Table(indexes={@Index(columnList = "competitionId,stageId,teamId")}) public class CompetitionMember { @Id @@ -21,7 +19,4 @@ public class CompetitionMember { private String name; private String school; private Integer teamId; - - - } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionTeam.java b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionTeam.java index 3f10ba3..5bbe8d3 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionTeam.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/entity/CompetitionTeam.java @@ -2,13 +2,11 @@ package com.tz.platform.entity; import lombok.Data; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; @Data @Entity +@Table(indexes = {@Index(columnList = "teamName")}) public class CompetitionTeam { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -17,4 +15,5 @@ public class CompetitionTeam { private Integer stageId; private String teamName; private String teacherName; + private String school; } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java index ae1ed37..550402d 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionMemberDao.java @@ -4,7 +4,10 @@ import com.tz.platform.entity.CompetitionMember; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface CompetitionMemberDao extends JpaRepository { + List findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List teamIds); } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java index 21f91cf..b864a70 100644 --- a/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/repository/CompetitionTeamDao.java @@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository; @Repository public interface CompetitionTeamDao extends JpaRepository { + CompetitionTeam getById(Integer id); } diff --git a/tz/exam/exam-service/src/main/resources/bootstrap.yml b/tz/exam/exam-service/src/main/resources/bootstrap.yml index d631ffd..cb2de6d 100644 --- a/tz/exam/exam-service/src/main/resources/bootstrap.yml +++ b/tz/exam/exam-service/src/main/resources/bootstrap.yml @@ -27,7 +27,7 @@ spring: restart: enabled: true livereload: - port: 35730 + port: 35736 main: allow-bean-definition-overriding: true logging: diff --git a/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignProvince.java b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignProvince.java new file mode 100644 index 0000000..997023d --- /dev/null +++ b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignProvince.java @@ -0,0 +1,12 @@ +package com.tz.platform.feign; + +import com.tz.platform.feign.vo.ProvinceVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; +@FeignClient(value = "tz-system-service") +public interface IFeignProvince { + @RequestMapping(value = "/feign/system/province/list") + List list(); +} diff --git a/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/ProvinceVO.java b/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/ProvinceVO.java new file mode 100644 index 0000000..c1be0b6 --- /dev/null +++ b/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/ProvinceVO.java @@ -0,0 +1,10 @@ +package com.tz.platform.feign.vo; + +import lombok.Data; + +@Data +public class ProvinceVO { + private Integer id; + private String name; + private Integer regionId; +} diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignProvinceController.java b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignProvinceController.java new file mode 100644 index 0000000..8457295 --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignProvinceController.java @@ -0,0 +1,21 @@ +package com.tz.platform.system.feign; + +import com.tz.platform.feign.IFeignProvince; +import com.tz.platform.feign.vo.ProvinceVO; +import com.tz.platform.system.feign.biz.FeignProvinceBiz; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class FeignProvinceController implements IFeignProvince { + + @Autowired + private FeignProvinceBiz feignProvinceBiz; + + @Override + public List list() { + return feignProvinceBiz.list(); + } +} diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignProvinceBiz.java b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignProvinceBiz.java new file mode 100644 index 0000000..3b76b6f --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/biz/FeignProvinceBiz.java @@ -0,0 +1,23 @@ +package com.tz.platform.system.feign.biz; + +import com.tz.platform.common.core.tools.BeanUtils; +import com.tz.platform.entity.Province; +import com.tz.platform.feign.vo.ProvinceVO; +import com.tz.platform.repository.ProvinceDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class FeignProvinceBiz { + + @Autowired + private ProvinceDao provinceDao; + + public List list(){ + List provinces = provinceDao.findAll(); + List provinceVOList = BeanUtils.copyProperties(provinces,ProvinceVO.class); + return provinceVOList; + } +} diff --git a/tz/user/user-service/pom.xml b/tz/user/user-service/pom.xml index a1f1b61..29cce23 100644 --- a/tz/user/user-service/pom.xml +++ b/tz/user/user-service/pom.xml @@ -20,6 +20,10 @@ com.tz common-core + + com.tz + system-feign + org.springframework.boot diff --git a/tz/user/user-service/src/main/java/com/tz/platform/entity/User.java b/tz/user/user-service/src/main/java/com/tz/platform/entity/User.java index f1f5148..2f54d25 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/entity/User.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/entity/User.java @@ -8,7 +8,7 @@ import java.io.Serializable; import java.util.Date; @Entity -@Table(name = "user",indexes = {@Index(columnList = "studentNo"),@Index(columnList = "school"),@Index(columnList = "username")}) +@Table(name = "user",indexes = {@Index(columnList = "studentNo"),@Index(columnList = "school"),@Index(columnList = "username"),@Index(columnList = "name")}) @Data public class User implements Serializable { @@ -34,6 +34,11 @@ public class User implements Serializable { private String name; + private String province; + private Integer provinceId; + private Integer regionId; + private Integer levelId; + @JsonIgnore private String mobileSalt; diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java index 51a38f1..4865837 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/biz/PcUserInfoBiz.java @@ -4,18 +4,24 @@ import com.tz.platform.common.core.base.Result; import com.tz.platform.common.core.enmus.UserTypeEnum; import com.tz.platform.entity.User; import com.tz.platform.repository.UserDao; +import com.tz.platform.user.pc.dto.UserDTO; import com.tz.platform.user.pc.dto.UserPageDTO; +import com.tz.platform.user.pc.vo.GetUserVO; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; +import java.util.regex.Pattern; + @Component public class PcUserInfoBiz { @Autowired private UserDao userDao; + public Result listPage(Integer pageNo){ if(pageNo<0){ pageNo = 0; @@ -26,4 +32,20 @@ public class PcUserInfoBiz { userPageDTO.setUserPage(page); return Result.success(userPageDTO); } + + public Result getUser(GetUserVO vo){ + UserDTO dto = new UserDTO(); + User user = null; + if(vo.getName().matches("\\d+")){ + user = userDao.getByStudentNo(vo.getName()); + }else{ + user = userDao.getByName(vo.getName()); + } + if(user!=null){ + BeanUtils.copyProperties(user,dto); + }else{ + return Result.error("未找到用户信息"); + } + return Result.success(dto); + } } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UserDTO.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UserDTO.java new file mode 100644 index 0000000..1feef11 --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UserDTO.java @@ -0,0 +1,17 @@ +package com.tz.platform.user.pc.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserDTO implements Serializable { + private Long id; + private String studentNo; + private String school; + private String name; + private String province; + private Integer provinceId; + private Integer regionId; + private Integer levelId; +} diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/GetUserVO.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/GetUserVO.java new file mode 100644 index 0000000..dcc2fb3 --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/GetUserVO.java @@ -0,0 +1,8 @@ +package com.tz.platform.user.pc.vo; + +import lombok.Data; + +@Data +public class GetUserVO { + private String name; +} diff --git a/tz/user/user-service/src/main/resources/bootstrap.yml b/tz/user/user-service/src/main/resources/bootstrap.yml index 06c437d..7cc30ee 100644 --- a/tz/user/user-service/src/main/resources/bootstrap.yml +++ b/tz/user/user-service/src/main/resources/bootstrap.yml @@ -17,3 +17,6 @@ spring: namespace: ${spring.profiles.active} main: allow-bean-definition-overriding: true + devtools: + livereload: + port: 35738