diff --git a/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberInfo.java b/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberInfo.java new file mode 100644 index 0000000..e4ac4fa --- /dev/null +++ b/tz/common/common-core/src/main/java/com/tz/platform/common/core/bo/MemberInfo.java @@ -0,0 +1,15 @@ +package com.tz.platform.common.core.bo; + +import lombok.Data; + +@Data +public class MemberInfo { + private String studentNo; + private Long id; + private String school; + private String name; + private String province; + private Integer provinceId; + private Integer regionId; + private Integer levelId; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/CompetitionTeamController.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/CompetitionTeamController.java new file mode 100644 index 0000000..4e2f257 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/CompetitionTeamController.java @@ -0,0 +1,43 @@ +package com.tz.platform.competitiion.pc; + +import com.tz.platform.common.core.base.BaseController; +import com.tz.platform.common.core.base.Result; +import com.tz.platform.competitiion.pc.biz.TeamBiz; +import com.tz.platform.competitiion.pc.dto.PageTeamDTO; +import com.tz.platform.competitiion.pc.vo.AddTeamMemberVO; +import com.tz.platform.competitiion.pc.vo.PageTeamVO; +import com.tz.platform.competitiion.pc.vo.TeamInfoVO; +import com.tz.platform.competitiion.pc.vo.TeamMemberVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "/pc/competition/team") +public class CompetitionTeamController extends BaseController { + + @Autowired + private TeamBiz teamBiz; + + @PostMapping(value = "list") + public Result list(@RequestBody PageTeamVO vo){ + return teamBiz.list(vo); + } + + @PostMapping(value = "deleteMember") + public Result deleteMember(@RequestBody TeamMemberVO vo){ + return teamBiz.deleteMember(vo); + } + + @PostMapping(value = "editTeamInfo") + public Result editTeamInfo(@RequestBody TeamInfoVO vo){ + return teamBiz.updateTeamInfo(vo); + } + + @PostMapping(value = "addMember") + public Result addTeamMember(@RequestBody AddTeamMemberVO vo){ + return teamBiz.addTeamMember(vo); + } +} 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 new file mode 100644 index 0000000..183bf9c --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/biz/TeamBiz.java @@ -0,0 +1,100 @@ +package com.tz.platform.competitiion.pc.biz; + +import com.tz.platform.common.core.base.Result; +import com.tz.platform.competitiion.pc.dto.PageTeamDTO; +import com.tz.platform.competitiion.pc.vo.AddTeamMemberVO; +import com.tz.platform.competitiion.pc.vo.PageTeamVO; +import com.tz.platform.competitiion.pc.vo.TeamInfoVO; +import com.tz.platform.competitiion.pc.vo.TeamMemberVO; +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.*; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.stream.Collectors; + +@Component +public class TeamBiz { + @Autowired + private CompetitionTeamDao teamDao; + + @Autowired + private CompetitionMemberDao memberDao; + + @Autowired + private IFeignUser feignUser; + + public Result list(PageTeamVO vo){ + + if(vo.getPageSize() == null || vo.getPageSize()<0){ + vo.setPageSize(20); + } + vo.setPageNo(vo.getPageNo() -1); + if(vo.getPageNo() == null||vo.getPageNo()<0){ + vo.setPageNo(1); + } + if(vo.getCompetitionId() == null){ + return Result.error("大赛id不能为空"); + } + if(vo.getStageId() == null){ + return Result.error("赛段id不能为空"); + } + ExampleMatcher matcher = ExampleMatcher.matching().withIgnoreNullValues(); + CompetitionTeam team = new CompetitionTeam(); + team.setStageId(vo.getStageId()); + team.setCompetitionId(vo.getCompetitionId()); + Example example = Example.of(team,matcher); + Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize()); + Page onePage = teamDao.findAll(example,pageable); + List teamIds = onePage.getContent().stream().mapToInt(CompetitionTeam::getId).boxed().collect(Collectors.toList()); + List memberList = memberDao.findAllByCompetitionIdAndStageIdAndTeamIdIn(vo.getCompetitionId(),vo.getStageId(),teamIds); + PageTeamDTO dto = new PageTeamDTO(); + dto.setList(memberList); + dto.setPage(onePage); + return Result.success(dto); + } + + public Result deleteMember(TeamMemberVO vo){ + memberDao.deleteById(vo.getId()); + return Result.success("success"); + } + + public Result addTeamMember(AddTeamMemberVO vo){ + CompetitionTeam team = teamDao.getById(vo.getTeamId()); + if(team == null){ + return Result.error("未找到团队信息"); + } + if(vo.getStageId() == null){ + return Result.error("阶段信息不能为空"); + } + + + return Result.success(""); + } + + public Result updateTeamInfo(TeamInfoVO vo){ + if(vo.getId() == null){ + return Result.error("团队id不能这空"); + } + if(StringUtils.isEmpty(vo.getName())){ + return Result.error("名称不能为空"); + } + CompetitionTeam team = teamDao.getById(vo.getId()); + if(team == null){ + return Result.error("未找到团队信息"); + } + if(vo.getType() == 1){ + team.setTeamName(vo.getName()); + }else{ + team.setTeacherName(vo.getName()); + } + teamDao.save(team); + return Result.success("success"); + } +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/AddTeamMemberVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/AddTeamMemberVO.java new file mode 100644 index 0000000..d9bad69 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/AddTeamMemberVO.java @@ -0,0 +1,13 @@ +package com.tz.platform.competitiion.pc.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class AddTeamMemberVO { + private Integer teamId; + private Long competitionId; + private Integer stageId; + private List ids; +} diff --git a/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/IFeignUser.java b/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/IFeignUser.java index e7786f1..c29df6d 100644 --- a/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/IFeignUser.java +++ b/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/IFeignUser.java @@ -1,5 +1,7 @@ package com.tz.platform.feign.user; +import com.tz.platform.common.core.bo.MemberImport; +import com.tz.platform.common.core.bo.MemberInfo; import com.tz.platform.feign.user.vo.UserVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -20,4 +22,9 @@ public interface IFeignUser { @PostMapping(value = "feign/user/batchInsert") int batchInser(@RequestBody List userVoList); + @PostMapping(value = "feign/user/batchSave") + List batchInsert(@RequestBody List list); + + List listByIds(@RequestBody List ids); + } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java b/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java index 57f20e3..07f1d05 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/repository/UserDao.java @@ -4,8 +4,6 @@ import com.tz.platform.entity.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -22,6 +20,10 @@ public interface UserDao extends JpaRepository { User getById(Long id); + User getByStudentNo(String studentNo); + + User getByName(String name); + /** * 依据用户名获取用户 * @param username 用户名 @@ -39,4 +41,6 @@ public interface UserDao extends JpaRepository { Page findAllByUserType(Integer type,Pageable pageable); List findAllByStudentNoIn(List studentNoList); + + List findAllByIdIn(List ids); } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/FeignUserController.java b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/FeignUserController.java index ff31a22..0244413 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/FeignUserController.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/FeignUserController.java @@ -1,5 +1,7 @@ package com.tz.platform.user.feign; +import com.tz.platform.common.core.bo.MemberImport; +import com.tz.platform.common.core.bo.MemberInfo; import com.tz.platform.user.feign.biz.FeignUserBiz; import com.tz.platform.feign.user.IFeignUser; import com.tz.platform.feign.user.vo.UserVo; @@ -29,4 +31,14 @@ public class FeignUserController implements IFeignUser { public int batchInser(List userVoList) { return 0; } + + @Override + public List batchInsert(List list) { + return feignUserBiz.batchSave(list); + } + + @Override + public List listByIds(List ids) { + return feignUserBiz.findByIds(ids); + } } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java index cf7b28e..3018971 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java @@ -1,19 +1,39 @@ package com.tz.platform.user.feign.biz; +import cn.hutool.crypto.digest.DigestUtil; import com.tz.platform.common.core.base.BaseException; +import com.tz.platform.common.core.bo.MemberImport; +import com.tz.platform.common.core.bo.MemberInfo; +import com.tz.platform.common.core.enmus.UserTypeEnum; import com.tz.platform.common.core.tools.BeanUtils; +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.IFeignStudentLevel; +import com.tz.platform.feign.vo.ProvinceVO; +import com.tz.platform.feign.vo.StudentLevelVo; import com.tz.platform.repository.UserDao; import com.tz.platform.feign.user.vo.UserVo; import net.bytebuddy.implementation.bytecode.Throw; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + @Component public class FeignUserBiz { @Autowired private UserDao userDao; + @Autowired + private IFeignProvince feignProvince; + + @Autowired + private IFeignStudentLevel feignStudentLevel; + public UserVo getByUserNo(Long userNo){ User user = userDao.findById(userNo).orElse(null); if(user == null) { @@ -26,4 +46,51 @@ public class FeignUserBiz { User user = userDao.findByMobile(mobile); return BeanUtils.copyProperties(user,UserVo.class); } + + public List findByIds(List ids){ + List userList = userDao.findAllByIdIn(ids); + return BeanUtils.copyProperties(userList,MemberInfo.class); + } + + public List batchSave(List list){ + if(list.size()==0){ + throw new BaseException("导入数据为空"); + } + List provinceVOList = feignProvince.list(); + List levelList = feignStudentLevel.list(); + + List userList = new ArrayList<>(); + List nos = list.stream().map(MemberImport::getStudentNo).collect(Collectors.toList()); + List studentNoList = userDao.findAllByStudentNoIn(nos); + List existedList = studentNoList.stream().map(User::getStudentNo).collect(Collectors.toList()); + List needSaveList =list.stream().filter(m -> !existedList.contains(m.getStudentNo())).collect(Collectors.toList()); + needSaveList.forEach(m->{ + User user = new User(); + user.setUsername(m.getStudentNo()); + user.setUserNo(m.getCreateId()); + user.setStudentNo(m.getStudentNo()); + user.setName(m.getName()); + user.setGmtCreate(new Date()); + user.setGmtModified(new Date()); + user.setSchool(m.getSchool()); + user.setMobileSalt(StrUtil.get32UUID()); + user.setMobilePsw(DigestUtil.sha1Hex(user.getMobileSalt() + "tz2022")); + user.setUserType(UserTypeEnum.USER.getCode()); + ProvinceVO provinceVO = provinceVOList.stream().filter(p -> p.getName().contains(m.getProvince())).findFirst().orElse(null); + StudentLevelVo levelVo = levelList.stream().filter(l -> l.getName().contains(m.getLevel())).findFirst().orElse(null); + if(provinceVO!=null){ + user.setProvinceId(provinceVO.getId()); + user.setProvince(provinceVO.getName()); + user.setRegionId(provinceVO.getRegionId()); + } + if(levelVo!=null){ + user.setLevelId(levelVo.getId()); + } + userList.add(user); + }); + List rsList = userDao.saveAll(userList); + studentNoList.addAll(rsList); + List memberInfoList = BeanUtils.copyProperties(studentNoList,MemberInfo.class); + return memberInfoList; + } } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java index b80a1f7..689a9ea 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/PcUserInfoController.java @@ -4,7 +4,9 @@ import com.tz.platform.common.core.base.BaseController; import com.tz.platform.common.core.base.Result; import com.tz.platform.user.pc.biz.PcUserInfoBiz; import com.tz.platform.user.pc.bo.UserPageBO; +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.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -24,4 +26,10 @@ public class PcUserInfoController extends BaseController { public Result importUser(MultipartFile file){ return Result.success("success"); } -} + + @PostMapping(value = "get") + public Result getUser(@RequestBody GetUserVO vo){ + return pcUserInfoBiz.getUser(vo); + } + +} \ No newline at end of file