From 1a63ec533d1f66f02ca1904a2ad0b045a896e5e7 Mon Sep 17 00:00:00 2001 From: tianea Date: Thu, 3 Mar 2022 21:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E8=B5=9B=E7=94=A8=E6=88=B7=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E8=B5=9B=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/base/BaseController.java | 23 +++ .../common/core/config/SystemUtil.java | 2 + .../src/main/resources/system.properties | 3 +- .../pc/CompetitionTeamController.java | 6 + .../pc/dto/PageTeamMemberDTO.java | 12 ++ .../competitiion/pc/vo/PageTeamMemberVO.java | 12 ++ .../repository/CompetitionMemberDao.java | 4 + .../platform/exam/pc/dto/QuestionContDTO.java | 12 ++ .../tz/platform/pc/PCQuestionController.java | 11 +- .../platform/pc/biz/PCMuiltQuestionBiz.java | 53 +++++-- .../com/tz/platform/pc/biz/PCQuestionBiz.java | 13 ++ .../tz/platform/repository/QuestionDao.java | 1 + .../com/tz/platform/feign/IFeignRegion.java | 13 ++ .../com/tz/platform/feign/vo/RegionVO.java | 9 ++ .../platform/system/pc/RegionController.java | 22 +++ .../platform/system/pc/biz/PCRegionBiz.java | 24 +++ .../com/tz/platform/repository/UserDao.java | 5 +- .../user/api/biz/ApiUserLoginBiz.java | 4 +- .../user/pc/PcUserInfoController.java | 16 +- .../platform/user/pc/biz/PcUserInfoBiz.java | 146 +++++++++++++++++- .../user/pc/dto/ListUploadUserDTO.java | 11 ++ .../platform/user/pc/dto/UploadUserDTO.java | 15 ++ .../com/tz/platform/user/pc/vo/UserVO.java | 21 +++ 23 files changed, 408 insertions(+), 30 deletions(-) create mode 100644 tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamMemberDTO.java create mode 100644 tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamMemberVO.java create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionContDTO.java create mode 100644 tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignRegion.java create mode 100644 tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/RegionVO.java create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/RegionController.java create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCRegionBiz.java create mode 100644 tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/ListUploadUserDTO.java create mode 100644 tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UploadUserDTO.java create mode 100644 tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/UserVO.java diff --git a/tz/common/common-core/src/main/java/com/tz/platform/common/core/base/BaseController.java b/tz/common/common-core/src/main/java/com/tz/platform/common/core/base/BaseController.java index 6bcd8a0..8dd02c3 100644 --- a/tz/common/common-core/src/main/java/com/tz/platform/common/core/base/BaseController.java +++ b/tz/common/common-core/src/main/java/com/tz/platform/common/core/base/BaseController.java @@ -1,6 +1,7 @@ package com.tz.platform.common.core.base; import com.auth0.jwt.interfaces.DecodedJWT; +import com.tz.platform.common.core.enmus.UserTypeEnum; import com.tz.platform.common.core.tools.JSUtil; import com.tz.platform.common.core.tools.JWTUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -62,6 +63,28 @@ public class BaseController extends Base { } } + public UserTypeEnum getUserType(){ + String token = request.getHeader("Tz-Token"); + if(StringUtils.isEmpty(token)){ + throw new BaseException("没有权限"); + } + try { + DecodedJWT d = JWTUtil.verify(token); + int userType = JWTUtil.getUserType(d); + if(userType == UserTypeEnum.TEACHER.getCode()){ + return UserTypeEnum.TEACHER; + }else if(userType == UserTypeEnum.ADMIN.getCode()){ + return UserTypeEnum.ADMIN; + }else{ + return UserTypeEnum.USER; + } + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + throw new BaseException("权限认证失败"); + } + } + public static String getString(HttpServletRequest request) { DataInputStream in = null; try { diff --git a/tz/common/common-core/src/main/java/com/tz/platform/common/core/config/SystemUtil.java b/tz/common/common-core/src/main/java/com/tz/platform/common/core/config/SystemUtil.java index 817b63d..e5262ad 100644 --- a/tz/common/common-core/src/main/java/com/tz/platform/common/core/config/SystemUtil.java +++ b/tz/common/common-core/src/main/java/com/tz/platform/common/core/config/SystemUtil.java @@ -24,4 +24,6 @@ public class SystemUtil { public static final String PIC_PATH = getProperty("pic_path"); public static final String PIC_RESOURCE_URL= getProperty("pic_recourse_url"); + + public static final String INIT_PASSWORD= getProperty("initPwd"); } diff --git a/tz/common/common-core/src/main/resources/system.properties b/tz/common/common-core/src/main/resources/system.properties index ab627ab..820ec0d 100644 --- a/tz/common/common-core/src/main/resources/system.properties +++ b/tz/common/common-core/src/main/resources/system.properties @@ -1,2 +1,3 @@ pic_path=/Volumes/Lexar/www/pic/ -pic_recourse_url=http://localhost:8899/pic/ \ No newline at end of file +pic_recourse_url=http://localhost:8899/pic/ +initPwd=tz2022 \ No newline at end of file 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 index b4fb516..63d5aa5 100644 --- 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 @@ -4,6 +4,7 @@ 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.dto.PageTeamMemberDTO; import com.tz.platform.competitiion.pc.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -42,4 +43,9 @@ public class CompetitionTeamController extends BaseController { public Result addTeam(@RequestBody AddTeamVO vo){ return teamBiz.addTeam(vo); } + + @PostMapping(value = "listTeamMember") + public Result listTeamMember(@RequestBody PageTeamMemberVO vo){ + return teamBiz.listTeamMember(vo); + } } diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamMemberDTO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamMemberDTO.java new file mode 100644 index 0000000..638093d --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/dto/PageTeamMemberDTO.java @@ -0,0 +1,12 @@ +package com.tz.platform.competitiion.pc.dto; + +import com.tz.platform.entity.CompetitionMember; +import lombok.Data; +import org.springframework.data.domain.Page; + +import java.io.Serializable; + +@Data +public class PageTeamMemberDTO implements Serializable { + private Page page; +} diff --git a/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamMemberVO.java b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamMemberVO.java new file mode 100644 index 0000000..127da65 --- /dev/null +++ b/tz/competition/competition-service/src/main/java/com/tz/platform/competitiion/pc/vo/PageTeamMemberVO.java @@ -0,0 +1,12 @@ +package com.tz.platform.competitiion.pc.vo; + +import lombok.Data; + +@Data +public class PageTeamMemberVO { + private Integer pageSize; + private Integer pageNo; + private Long competitionId; + private Integer stageId; + +} 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 4ac8086..7a7a902 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 @@ -1,6 +1,8 @@ package com.tz.platform.repository; import com.tz.platform.entity.CompetitionMember; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -12,4 +14,6 @@ public interface CompetitionMemberDao extends JpaRepository findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List teamIds); List findAllByCompetitionIdAndStageIdAndUserIdIn(Long cmpId,Integer stageId,List ids); + + Page findAllByCompetitionIdAndStageId(Long cmpid, Integer stageId , Pageable pageable); } diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionContDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionContDTO.java new file mode 100644 index 0000000..53f076b --- /dev/null +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionContDTO.java @@ -0,0 +1,12 @@ +package com.tz.platform.exam.pc.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class QuestionContDTO implements Serializable { + private Integer singleCount; + private Integer multiCount; + private Integer judgeCount; +} diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java index 172eed0..e225422 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java @@ -1,16 +1,14 @@ package com.tz.platform.pc; import com.tz.platform.common.core.base.Result; +import com.tz.platform.exam.pc.dto.QuestionContDTO; import com.tz.platform.pc.biz.PCQuestionBiz; import com.tz.platform.pc.dto.ListQuestionDTO; import com.tz.platform.pc.dto.PageQuestionDTO; import com.tz.platform.pc.dto.QuestionDTO; import com.tz.platform.pc.vo.*; 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; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(value = "/pc/question") @@ -53,4 +51,9 @@ public class PCQuestionController { public Result listByIds(@RequestBody ListQuestionVO vo){ return questionBiz.listByIds(vo); } + + @GetMapping(value = "getCount") + public Result getCount(){ + return questionBiz.getCount(); + } } diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java index 74a6b7d..bacbd38 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCMuiltQuestionBiz.java @@ -9,12 +9,13 @@ import com.tz.platform.pc.vo.*; import com.tz.platform.repository.QuestionDao; 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.data.domain.*; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; +import java.util.ArrayList; +import java.util.List; + @Component public class PCMuiltQuestionBiz { @@ -23,17 +24,45 @@ public class PCMuiltQuestionBiz { public Result list(PageQuestionVO questionVO){ PageMuiltQuestionDTO questionDTO = new PageMuiltQuestionDTO(); - Pageable pageable = PageRequest.of(questionVO.getPageNo(),20); +// Pageable pageable = PageRequest.of(questionVO.getPageNo(),20); +// Page questions =null; +// if((questionVO.getCourseId() == null|| questionVO.getCourseId() == 0) && StringUtils.isEmpty(questionVO.getStem())){ +// questions = questionDao.findAllByType(1,pageable); +// }else if(questionVO.getCourseId()>0&&StringUtils.hasText(questionVO.getStem())){ +// questions = questionDao.findAllByCourseIdAndStemAndType(questionVO.getCourseId(),questionVO.getStem(),1,pageable); +// }else if(questionVO.getCourseId()>0){ +// questions = questionDao.findAllByCourseIdAndType(questionVO.getCourseId(),1,pageable); +// }else { +// questions = questionDao.findAllByStemAndType(questionVO.getStem(), 1,pageable); +// } + Integer pageNo = questionVO.getPageNo()-1; + if(pageNo< 0){ + pageNo = 0; + } + if(questionVO.getPageSize()==null){ + questionVO.setPageSize(20); + } + Pageable pageable = PageRequest.of(pageNo,questionVO.getPageSize()); Page questions =null; - if((questionVO.getCourseId() == null|| questionVO.getCourseId() == 0) && StringUtils.isEmpty(questionVO.getStem())){ - questions = questionDao.findAllByType(1,pageable); - }else if(questionVO.getCourseId()>0&&StringUtils.hasText(questionVO.getStem())){ - questions = questionDao.findAllByCourseIdAndStemAndType(questionVO.getCourseId(),questionVO.getStem(),1,pageable); - }else if(questionVO.getCourseId()>0){ - questions = questionDao.findAllByCourseIdAndType(questionVO.getCourseId(),1,pageable); - }else { - questions = questionDao.findAllByStemAndType(questionVO.getStem(), 1,pageable); + Long questionId = 0L; + if(StringUtils.hasText(questionVO.getStem())){ + String regex = "\\d+"; + if(questionVO.getStem().matches(regex)){ + questionId = Long.parseLong(questionVO.getStem()); + List ids = new ArrayList<>(); + ids.add(questionId); + questions = questionDao.findAllByIdIn(ids,pageable); + return Result.success(questionDTO.setPage(questions)); + } + } + Question question = new Question(); + BeanUtils.copyProperties(questionVO,question); + ExampleMatcher exampleMatcher = ExampleMatcher.matching().withIgnoreNullValues(); + if(StringUtils.isEmpty(questionVO.getStem())){ + exampleMatcher = exampleMatcher.withIgnorePaths("stem"); } + Example example = Example.of(question,exampleMatcher); + questions = questionDao.findAll( example ,pageable); return Result.success(questionDTO.setPage(questions)); } diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCQuestionBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCQuestionBiz.java index 0db233b..44ecea9 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCQuestionBiz.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCQuestionBiz.java @@ -1,7 +1,9 @@ package com.tz.platform.pc.biz; import com.tz.platform.common.core.base.Result; +import com.tz.platform.common.core.enmus.QuestionTypeEnum; import com.tz.platform.entity.Question; +import com.tz.platform.exam.pc.dto.QuestionContDTO; import com.tz.platform.feign.user.IFeignUser; import com.tz.platform.feign.user.vo.UserVo; import com.tz.platform.pc.dto.ListQuestionDTO; @@ -157,4 +159,15 @@ public class PCQuestionBiz { dto.setList(list); return Result.success(dto); } + + public Result getCount(){ + int singleCount = questionDao.countByQuestionTypeAndType(QuestionTypeEnum.SINGLE.getCode(),0); + int multiCount = questionDao.countByQuestionTypeAndType(QuestionTypeEnum.MULTY.getCode(),0); + int judgeCount = questionDao.countByQuestionTypeAndType(QuestionTypeEnum.JUDGE.getCode(),0); + QuestionContDTO dto = new QuestionContDTO(); + dto.setJudgeCount(judgeCount); + dto.setMultiCount(multiCount); + dto.setSingleCount(singleCount); + return Result.success(dto); + } } diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java index 1d081d5..cd4e9ac 100644 --- a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java +++ b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/QuestionDao.java @@ -33,6 +33,7 @@ public interface QuestionDao extends JpaRepository { List findAllByIdIn(List ids); + int countByQuestionTypeAndType(Integer qtype,Integer type); @Transactional @Modifying diff --git a/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignRegion.java b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignRegion.java new file mode 100644 index 0000000..86eec72 --- /dev/null +++ b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignRegion.java @@ -0,0 +1,13 @@ +package com.tz.platform.feign; + +import com.tz.platform.feign.vo.RegionVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; + +@FeignClient(value = "tz-system-service") +public interface IFeignRegion { + @RequestMapping(value = "/feign/system/region/list") + List list(); +} diff --git a/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/RegionVO.java b/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/RegionVO.java new file mode 100644 index 0000000..974ba2d --- /dev/null +++ b/tz/system/system-feign/src/main/java/com/tz/platform/feign/vo/RegionVO.java @@ -0,0 +1,9 @@ +package com.tz.platform.feign.vo; + +import lombok.Data; + +@Data +public class RegionVO { + private Integer id; + private String name; +} diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/RegionController.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/RegionController.java new file mode 100644 index 0000000..5d62dde --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/RegionController.java @@ -0,0 +1,22 @@ +package com.tz.platform.system.pc; + +import com.tz.platform.common.core.base.BaseController; +import com.tz.platform.common.core.base.Result; +import com.tz.platform.system.pc.biz.PCRegionBiz; +import com.tz.platform.system.pc.dto.RegionDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "/pc/system/region") +public class RegionController extends BaseController { + + @Autowired + private PCRegionBiz biz; + @GetMapping( value = "list") + public Result list(){ + return biz.list(); + } +} diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCRegionBiz.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCRegionBiz.java new file mode 100644 index 0000000..73f52c2 --- /dev/null +++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCRegionBiz.java @@ -0,0 +1,24 @@ +package com.tz.platform.system.pc.biz; + +import com.tz.platform.common.core.base.Result; +import com.tz.platform.entity.Region; +import com.tz.platform.repository.RegionDao; +import com.tz.platform.system.pc.dto.RegionDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class PCRegionBiz { + @Autowired + private RegionDao regionDao; + + public Result list(){ + List regionList = regionDao.findAll(); + RegionDTO dto = new RegionDTO(); + dto.setList(regionList); + return Result.success(dto); + } + +} 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 07f1d05..a99cc50 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,12 +4,13 @@ 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.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; import java.util.List; @Repository -public interface UserDao extends JpaRepository { +public interface UserDao extends JpaRepository , JpaSpecificationExecutor { /** * 依据手机号获取用户 * @param mobile 手机号 @@ -43,4 +44,6 @@ public interface UserDao extends JpaRepository { List findAllByStudentNoIn(List studentNoList); List findAllByIdIn(List ids); + + Page findAllByUsernameOrName(String username,String name,Pageable pageable); } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/api/biz/ApiUserLoginBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/api/biz/ApiUserLoginBiz.java index 9a08644..114cc41 100644 --- a/tz/user/user-service/src/main/java/com/tz/platform/user/api/biz/ApiUserLoginBiz.java +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/api/biz/ApiUserLoginBiz.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.Date; +import java.util.concurrent.TimeUnit; @Component public class ApiUserLoginBiz { @@ -55,7 +56,6 @@ public class ApiUserLoginBiz { // 放入缓存,错误次数+1 return Result.error("账号或者密码不正确"); } - // 登录日志 loginLog(LoginStatusEnum.SUCCESS, userLoginPasswordBO.getIp(),user.getUsername(), userLoginPasswordBO.getClient()); @@ -63,8 +63,6 @@ public class ApiUserLoginBiz { dto.setUserNo(user.getId()); dto.setUsername(user.getUsername()); dto.setToken(JWTUtil.create(user.getId(),user.getUserType(), JWTUtil.DATE)); - - // 登录成功,存入缓存,单点登录使用 // redisTemplate.opsForValue().set(dto.getUserNo().toString(), dto.getToken(), 1, TimeUnit.DAYS); 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 689a9ea..4ec9f68 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 @@ -7,6 +7,7 @@ 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 com.tz.platform.user.pc.vo.UserVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -20,7 +21,7 @@ public class PcUserInfoController extends BaseController { @PostMapping(path = "list") public Result listUser(@RequestBody UserPageBO bo){ - return pcUserInfoBiz.listPage(bo.getPageNo()); + return pcUserInfoBiz.listPage(bo); } public Result importUser(MultipartFile file){ @@ -32,4 +33,17 @@ public class PcUserInfoController extends BaseController { return pcUserInfoBiz.getUser(vo); } + public Result listUserByStudentNoOrSchool(@RequestBody UserPageBO bo){ + return pcUserInfoBiz.listByStudentNoOrSchool(bo); + } + + @PostMapping(value = "deleteUser") + public Result deletUser(@RequestBody UserVO vo){ + return pcUserInfoBiz.deleteUser(vo); + } + + @PostMapping(value = "addUser") + public Result addUser(@RequestBody UserVO vo){ + return pcUserInfoBiz.saveUser(vo); + } } \ No newline at end of file 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 4865837..05a35cb 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 @@ -1,19 +1,29 @@ 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.StrUtil; import com.tz.platform.entity.User; import com.tz.platform.repository.UserDao; +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 com.tz.platform.user.pc.vo.UserVO; 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.data.domain.*; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.util.Date; import java.util.regex.Pattern; @Component @@ -22,12 +32,59 @@ public class PcUserInfoBiz { private UserDao userDao; - public Result listPage(Integer pageNo){ - if(pageNo<0){ - pageNo = 0; + public Result listPage(UserPageBO bo){ + if(bo.getPageNo()<=0){ + bo.setPageNo(0); + }else{ + bo.setPageNo(bo.getPageNo()-1); + } + if(bo.getPageSize() <=0){ + bo.setPageSize(20); + } + + if(bo.getUserType()<=0){ + bo.setUserType(UserTypeEnum.USER.getCode()); + } + + Pageable pageable = PageRequest.of(bo.getPageNo(),bo.getPageSize()); + User user = new User(); + user.setUserType(bo.getUserType()); + if(StringUtils.hasText(bo.getName())){ + if(bo.getName().matches("\\d+")){ + user.setStudentNo(bo.getName()); + }else{ + user.setSchool(bo.getName()); + } } - Pageable pageable = PageRequest.of(pageNo,20); - Page page = userDao.findAllByUserType(UserTypeEnum.USER.getCode(), pageable); + ExampleMatcher matcher = ExampleMatcher.matching().withIgnoreNullValues(); + Example example = Example.of(user,matcher); + Page page = userDao.findAll(example,pageable); // userDao.findAllByUserType(bo.getUserType(), pageable); + UserPageDTO userPageDTO = new UserPageDTO(); + userPageDTO.setUserPage(page); + return Result.success(userPageDTO); + } + + public Result listByStudentNoOrSchool(UserPageBO bo){ + if(bo.getPageNo()<=0){ + bo.setPageNo(0); + }else{ + bo.setPageNo(bo.getPageNo()-1); + } + if(bo.getPageSize() <=0){ + bo.setPageSize(20); + } + + if(bo.getUserType()<=0){ + bo.setUserType(UserTypeEnum.USER.getCode()); + } + Pageable pageable = PageRequest.of(bo.getPageNo(),bo.getPageSize()); + Specification specification = new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { + return null; + } + }; + Page page = userDao.findAll(specification,pageable); UserPageDTO userPageDTO = new UserPageDTO(); userPageDTO.setUserPage(page); return Result.success(userPageDTO); @@ -48,4 +105,77 @@ public class PcUserInfoBiz { } return Result.success(dto); } + + public Result saveUser(UserVO vo){ + + if(vo.getLevelId() == null||vo.getLevelId()<=0){ + return Result.error("层次不能为空"); + } + if(vo.getProvinceId() == null||vo.getProvinceId()<=0){ + return Result.error("省份不能为空"); + } + if(StringUtils.isEmpty(vo.getStudentNo())){ + return Result.error("学号不能为空"); + } + if(StringUtils.isEmpty(vo.getName())){ + return Result.error("姓名不能为空"); + } + if(StringUtils.isEmpty(vo.getSchool())){ + return Result.error("学校不能为空"); + } + User creator = userDao.getById(vo.getUserNo()); + + User user = new User(); + BeanUtils.copyProperties(vo,user); + user.setGmtCreate(new Date()); + user.setUsername(user.getStudentNo()); + user.setGmtModified(new Date()); + if(user.getId()== null){ + user.setMobileSalt(StrUtil.get32UUID()); + user.setMobilePsw(DigestUtil.sha1Hex(user.getMobileSalt() + SystemUtil.INIT_PASSWORD)); + } + + if(user.getUserType().equals(UserTypeEnum.ADMIN.getCode())&&creator.getUserType()!=3){ + return Result.error("无权添加该用户"); + } + user = userDao.save(user); + + return Result.success(user.getId()); + } + + public Result deleteUser(UserVO vo){ + if(vo.getId()==null){ + return Result.error("无该用户信息"); + } + userDao.deleteById(vo.getId()); + return Result.success("成功"); + } + + public Result saveAdmin(UserVO vo){ + + if(StringUtils.isEmpty(vo.getName())){ + return Result.error("姓名不能为空"); + } + if(StringUtils.isEmpty(vo.getUserNo())){ + return Result.error("用户名不能为空"); + } + if(StringUtils.isEmpty(vo.getPassword())){ + return Result.error("密码不能为空"); + } + User creator = userDao.getById(vo.getUserNo()); + + User user = new User(); + BeanUtils.copyProperties(vo,user); + user.setGmtCreate(new Date()); + user.setUsername(user.getStudentNo()); + user.setGmtModified(new Date()); + user.setMobileSalt(StrUtil.get32UUID()); + user.setMobilePsw(DigestUtil.sha1Hex(user.getMobileSalt() + vo.getPassword())); + if(!user.getUserType().equals(UserTypeEnum.USER.getCode())&&creator.getUserType()!=3){ + return Result.error("无权添加该用户"); + } + user = userDao.save(user); + + return Result.success(user.getId()); + } } diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/ListUploadUserDTO.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/ListUploadUserDTO.java new file mode 100644 index 0000000..3f90a0e --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/ListUploadUserDTO.java @@ -0,0 +1,11 @@ +package com.tz.platform.user.pc.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class ListUploadUserDTO implements Serializable { + List list; +} diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UploadUserDTO.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UploadUserDTO.java new file mode 100644 index 0000000..e0a02c4 --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/dto/UploadUserDTO.java @@ -0,0 +1,15 @@ +package com.tz.platform.user.pc.dto; + +import lombok.Data; + +@Data +public class UploadUserDTO { + private String studentNo; + private String name; + private String school; + private String mobile; + private String province; + private String region; + private String level; + private String status; +} diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/UserVO.java b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/UserVO.java new file mode 100644 index 0000000..64d926f --- /dev/null +++ b/tz/user/user-service/src/main/java/com/tz/platform/user/pc/vo/UserVO.java @@ -0,0 +1,21 @@ +package com.tz.platform.user.pc.vo; + +import lombok.Data; + +@Data +public class UserVO { + private Long userNo; + private Long id; + private String studentNo; + private String password; + private String name; + private String school; + private String mobile; + private Integer provinceId; + private Integer regionId; + private Integer levelId; + private String province; + private String region; + private String level; + private Integer userType; +}