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<String> addTeam(@RequestBody AddTeamVO vo){
         return teamBiz.addTeam(vo);
     }
+
+    @PostMapping(value = "listTeamMember")
+    public Result<PageTeamMemberDTO> 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<CompetitionMember> 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<CompetitionMember,In
     List<CompetitionMember> findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List<Integer> teamIds);
 
     List<CompetitionMember> findAllByCompetitionIdAndStageIdAndUserIdIn(Long cmpId,Integer stageId,List<Long> ids);
+
+    Page<CompetitionMember> 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<ListQuestionDTO> listByIds(@RequestBody ListQuestionVO vo){
         return questionBiz.listByIds(vo);
     }
+
+    @GetMapping(value = "getCount")
+    public Result<QuestionContDTO> 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<PageMuiltQuestionDTO> list(PageQuestionVO questionVO){
         PageMuiltQuestionDTO questionDTO = new PageMuiltQuestionDTO();
-        Pageable pageable = PageRequest.of(questionVO.getPageNo(),20);
+//        Pageable pageable = PageRequest.of(questionVO.getPageNo(),20);
+//        Page<Question> 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<Question> 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<Long> 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<QuestionContDTO> 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<Question,Long> {
 
     List<Question> findAllByIdIn(List<Long> 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<RegionVO> 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<RegionDTO> 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<RegionDTO> list(){
+        List<Region> 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<User,Long> {
+public interface UserDao extends JpaRepository<User,Long> , JpaSpecificationExecutor<User> {
     /**
      * 依据手机号获取用户
      * @param mobile 手机号
@@ -43,4 +44,6 @@ public interface UserDao extends JpaRepository<User,Long> {
     List<User> findAllByStudentNoIn(List<String> studentNoList);
 
     List<User> findAllByIdIn(List<Long> ids);
+
+    Page<User> 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<UserPageDTO> listUser(@RequestBody UserPageBO bo){
-        return  pcUserInfoBiz.listPage(bo.getPageNo());
+        return  pcUserInfoBiz.listPage(bo);
     }
 
     public Result<String> importUser(MultipartFile file){
@@ -32,4 +33,17 @@ public class PcUserInfoController extends BaseController {
         return pcUserInfoBiz.getUser(vo);
     }
 
+    public Result<UserPageDTO> listUserByStudentNoOrSchool(@RequestBody UserPageBO bo){
+        return  pcUserInfoBiz.listByStudentNoOrSchool(bo);
+    }
+
+    @PostMapping(value = "deleteUser")
+    public Result<String> deletUser(@RequestBody UserVO vo){
+        return  pcUserInfoBiz.deleteUser(vo);
+    }
+
+    @PostMapping(value = "addUser")
+    public Result<Long> 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<UserPageDTO> listPage(Integer pageNo){
-        if(pageNo<0){
-            pageNo = 0;
+    public Result<UserPageDTO> 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<User> page = userDao.findAllByUserType(UserTypeEnum.USER.getCode(), pageable);
+        ExampleMatcher matcher = ExampleMatcher.matching().withIgnoreNullValues();
+        Example<User> example = Example.of(user,matcher);
+        Page<User> page =  userDao.findAll(example,pageable); // userDao.findAllByUserType(bo.getUserType(), pageable);
+        UserPageDTO userPageDTO = new UserPageDTO();
+        userPageDTO.setUserPage(page);
+        return Result.success(userPageDTO);
+    }
+
+    public Result<UserPageDTO> 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<User> specification = new Specification<User>() {
+            @Override
+            public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
+                return null;
+            }
+        };
+        Page<User> 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<Long> 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<String> deleteUser(UserVO vo){
+        if(vo.getId()==null){
+            return Result.error("无该用户信息");
+        }
+        userDao.deleteById(vo.getId());
+        return Result.success("成功");
+    }
+
+    public Result<Long> 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<UploadUserDTO> 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;
+}