Эх сурвалжийг харах

账户相关功能,管理员功能,新增老师信息功能

Signed-off-by: guoWenHao <2532478980@qq.com>
guoWenHao 10 сар өмнө
parent
commit
535a1dba57
28 өөрчлөгдсөн 807 нэмэгдсэн , 15 устгасан
  1. 12 0
      teacher-common/src/main/java/com/example/exception/PasswordEditFailedException.java
  2. 19 0
      teacher-pojo/src/main/java/com/example/dto/PageQueryDTO.java
  3. 25 0
      teacher-pojo/src/main/java/com/example/dto/PasswordDTO.java
  4. 27 0
      teacher-pojo/src/main/java/com/example/dto/TeacherDTO.java
  5. 26 0
      teacher-pojo/src/main/java/com/example/dto/UserDTO.java
  6. 21 0
      teacher-pojo/src/main/java/com/example/entity/ResearchFiled.java
  7. 40 0
      teacher-pojo/src/main/java/com/example/entity/Teacher.java
  8. 3 6
      teacher-pojo/src/main/java/com/example/entity/User.java
  9. 25 0
      teacher-serve/src/main/java/com/example/config/OssConfiguration.java
  10. 40 3
      teacher-serve/src/main/java/com/example/config/WebMvcConfiguration.java
  11. 47 0
      teacher-serve/src/main/java/com/example/controller/admin/AdminController.java
  12. 35 0
      teacher-serve/src/main/java/com/example/controller/teacher/TeacherController.java
  13. 52 0
      teacher-serve/src/main/java/com/example/controller/user/CommonController.java
  14. 38 0
      teacher-serve/src/main/java/com/example/controller/user/UserController.java
  15. 45 0
      teacher-serve/src/main/java/com/example/handler/GlobalExceptionHandler.java
  16. 5 3
      teacher-serve/src/main/java/com/example/interceptor/JwtTokenAdminInterceptor.java
  17. 34 0
      teacher-serve/src/main/java/com/example/mapper/AdminMapper.java
  18. 23 0
      teacher-serve/src/main/java/com/example/mapper/TeacherMapper.java
  19. 25 2
      teacher-serve/src/main/java/com/example/mapper/UserMapper.java
  20. 26 0
      teacher-serve/src/main/java/com/example/service/AdminService.java
  21. 11 0
      teacher-serve/src/main/java/com/example/service/TeacherService.java
  22. 25 0
      teacher-serve/src/main/java/com/example/service/UserService.java
  23. 57 0
      teacher-serve/src/main/java/com/example/service/impl/AdminServiceImpl.java
  24. 40 0
      teacher-serve/src/main/java/com/example/service/impl/TeacherServiceImpl.java
  25. 68 1
      teacher-serve/src/main/java/com/example/service/impl/UserServiceImpl.java
  26. 15 0
      teacher-serve/src/main/resources/mapper/AdminMapper.xml
  27. 17 0
      teacher-serve/src/main/resources/mapper/TeacherMapper.xml
  28. 6 0
      teacher-serve/src/main/resources/mapper/UserMapper.xml

+ 12 - 0
teacher-common/src/main/java/com/example/exception/PasswordEditFailedException.java

@@ -0,0 +1,12 @@
+package com.example.exception;
+
+/**
+ * 密码修改失败异常
+ */
+public class PasswordEditFailedException extends BaseException{
+
+    public PasswordEditFailedException(String msg){
+        super(msg);
+    }
+
+}

+ 19 - 0
teacher-pojo/src/main/java/com/example/dto/PageQueryDTO.java

@@ -0,0 +1,19 @@
+package com.example.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class PageQueryDTO implements Serializable {
+
+    //名称
+    private String name;
+
+    //页码
+    private int page;
+
+    //每页显示记录数
+    private int pageSize;
+
+}

+ 25 - 0
teacher-pojo/src/main/java/com/example/dto/PasswordDTO.java

@@ -0,0 +1,25 @@
+package com.example.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(description = "老师修改密码时传递的数据模型")
+public class PasswordDTO implements Serializable {
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("旧密码")
+    private String oldPassword;
+
+    @ApiModelProperty("新密码")
+    private String newPassword;
+
+
+
+
+}

+ 27 - 0
teacher-pojo/src/main/java/com/example/dto/TeacherDTO.java

@@ -0,0 +1,27 @@
+package com.example.dto;
+
+import com.example.entity.ResearchFiled;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class TeacherDTO implements Serializable {
+
+    private String name;
+
+    private String profile;
+
+    private String image;
+
+    private String gradauteCourse;
+
+    private String undergradauteCourse;
+
+    private List<ResearchFiled> researchFiled;
+
+    private String email;
+
+    private String phoneNumber;
+}

+ 26 - 0
teacher-pojo/src/main/java/com/example/dto/UserDTO.java

@@ -0,0 +1,26 @@
+package com.example.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(description = "老师注册及忘记密码时传递的数据模型")
+public class UserDTO implements Serializable {
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    //忘记密码时为想修改的新密码
+    @ApiModelProperty("密码")
+    private String password;
+
+    @ApiModelProperty("手机号")
+    private String phoneNumber;
+
+}

+ 21 - 0
teacher-pojo/src/main/java/com/example/entity/ResearchFiled.java

@@ -0,0 +1,21 @@
+package com.example.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResearchFiled implements Serializable {
+
+    private Long id;
+
+    private Long teacherId;
+
+    private String information;
+}

+ 40 - 0
teacher-pojo/src/main/java/com/example/entity/Teacher.java

@@ -0,0 +1,40 @@
+package com.example.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class Teacher implements Serializable {
+
+    private Long id;
+
+    private String name;
+
+    private String profile;
+
+    private String image;
+
+    private String gradauteCourse;
+
+    private String undergradauteCourse;
+
+    private List<ResearchFiled> researchFiled;
+
+    private String email;
+
+    private String phoneNumber;
+
+    private Integer awardsNum;
+
+    private Integer workNum;
+
+    private Integer thesisNum;
+}

+ 3 - 6
teacher-pojo/src/main/java/com/example/entity/User.java

@@ -26,20 +26,17 @@ public class User implements Serializable {
     @ApiModelProperty("姓名")
     @ApiModelProperty("姓名")
     private String name;
     private String name;
 
 
-    @ApiModelProperty("jwt令牌")
-    private String token;
-
     @ApiModelProperty("创建时间")
     @ApiModelProperty("创建时间")
     private LocalDateTime createTime;
     private LocalDateTime createTime;
 
 
     @ApiModelProperty("账号状态")
     @ApiModelProperty("账号状态")
     private Integer status;
     private Integer status;
 
 
-    @ApiModelProperty("老师id")
-    private Long teacherId;
-
     @ApiModelProperty("密码")
     @ApiModelProperty("密码")
     private String password;
     private String password;
 
 
+    @ApiModelProperty("手机号")
+    private String phoneNumber;
+
 
 
 }
 }

+ 25 - 0
teacher-serve/src/main/java/com/example/config/OssConfiguration.java

@@ -0,0 +1,25 @@
+package com.example.config;
+
+import com.example.properties.AliOssProperties;
+import com.example.utils.AliOssUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 配置类,用于创建AliossUtil对象
+ */
+@Configuration
+@Slf4j
+public class OssConfiguration {
+    @Bean
+    @ConditionalOnMissingBean
+    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties) {
+        log.info("开始创建阿里云文件上传工具类对象:{}", aliOssProperties);
+        return new AliOssUtil(aliOssProperties.getEndpoint(),
+                aliOssProperties.getAccessKeyId(),
+                aliOssProperties.getAccessKeySecret(),
+                aliOssProperties.getBucketName());
+    }
+}

+ 40 - 3
teacher-serve/src/main/java/com/example/config/WebMvcConfiguration.java

@@ -39,8 +39,12 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport {
     protected void addInterceptors(InterceptorRegistry registry) {
     protected void addInterceptors(InterceptorRegistry registry) {
         log.info("开始注册自定义拦截器...");
         log.info("开始注册自定义拦截器...");
         registry.addInterceptor(jwtTokenAdminInterceptor)
         registry.addInterceptor(jwtTokenAdminInterceptor)
-                .addPathPatterns("/admin/**")
-                .excludePathPatterns("/admin/employee/login");
+                .addPathPatterns("/**")
+                .excludePathPatterns("/user/login")
+                .excludePathPatterns("/user/register")
+                .excludePathPatterns("/user/forget")
+                .excludePathPatterns("/open/**")
+                .excludePathPatterns("/user/download");
 
 
     }
     }
 
 
@@ -66,7 +70,40 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport {
                 .build();
                 .build();
         return docket;
         return docket;
     }
     }
-
+    @Bean
+    public Docket docket1() {
+        log.info("准备生成接口文档");
+        ApiInfo apiInfo = new ApiInfoBuilder()
+                .title("老师团队系统")
+                .version("1.0")
+                .description("老师团队系统")
+                .build();
+        Docket docket = new Docket(DocumentationType.SWAGGER_2)
+                .groupName("管理员接口")
+                .apiInfo(apiInfo)
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.example.controller.admin"))
+                .paths(PathSelectors.any())
+                .build();
+        return docket;
+    }
+    @Bean
+    public Docket docket3() {
+        log.info("准备生成接口文档");
+        ApiInfo apiInfo = new ApiInfoBuilder()
+                .title("老师团队系统")
+                .version("1.0")
+                .description("老师团队系统")
+                .build();
+        Docket docket = new Docket(DocumentationType.SWAGGER_2)
+                .groupName("老师信息接口")
+                .apiInfo(apiInfo)
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.example.controller.teacher"))
+                .paths(PathSelectors.any())
+                .build();
+        return docket;
+    }
     /**
     /**
      * 设置静态资源映射
      * 设置静态资源映射
      *
      *

+ 47 - 0
teacher-serve/src/main/java/com/example/controller/admin/AdminController.java

@@ -1,4 +1,51 @@
 package com.example.controller.admin;
 package com.example.controller.admin;
 
 
+import com.example.dto.PageQueryDTO;
+import com.example.result.PageResult;
+import com.example.result.Result;
+import com.example.service.AdminService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Results;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@Slf4j
+@Api(tags = "管理员相关接口")
+@RequestMapping("/admin")
 public class AdminController {
 public class AdminController {
+    @Autowired
+    private AdminService adminService;
+
+    /**
+     * 账号分页查询
+     *
+     * @param pageQueryDTO
+     * @return
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "账号分页查询")
+    public Result<PageResult> page(PageQueryDTO pageQueryDTO) {
+        log.info("账号分页查询,查询参数:{}", pageQueryDTO);
+        PageResult pageResult = adminService.page(pageQueryDTO);
+        return Result.success(pageResult);
+    }
+//启用禁用老师账号
+    @PostMapping("/status/{status}")
+    @ApiOperation("启用禁用老师账号")
+    public Result starOrStop(@PathVariable Integer status, Long id) {
+        log.info("启用禁用老师账号:{},{}",id,status);
+        adminService.starOrStop(id,status);
+        return Result.success();
+    }
+    //删除老师账号
+    @DeleteMapping("/{id}")
+    @ApiOperation(value = "删除老师账号")
+    public Result deleteById(@PathVariable Long id){
+        log.info("删除老师账号:{}",id);
+        adminService.deleteById(id);
+        return Result.success();
+    }
 }
 }

+ 35 - 0
teacher-serve/src/main/java/com/example/controller/teacher/TeacherController.java

@@ -0,0 +1,35 @@
+package com.example.controller.teacher;
+
+import com.example.dto.TeacherDTO;
+import com.example.result.Result;
+import com.example.service.TeacherService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+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
+@Slf4j
+@Api(tags = "老师相关接口")
+@RequestMapping("/teacher")
+public class TeacherController {
+    @Autowired
+    private TeacherService teacherService;
+
+    /**
+     * 新增老师基本信息
+     * @param teacherDTO
+     * @return
+     */
+    @PostMapping
+    @ApiOperation(value = "新增老师基本信息")
+    public Result saveTeacher(@RequestBody TeacherDTO teacherDTO) {
+        log.info("新增老师基本信息:{}",teacherDTO.getName());
+        teacherService.saveTeacher(teacherDTO);
+        return Result.success();
+    }
+}

+ 52 - 0
teacher-serve/src/main/java/com/example/controller/user/CommonController.java

@@ -0,0 +1,52 @@
+package com.example.controller.user;
+
+import com.example.constant.MessageConstant;
+import com.example.result.Result;
+import com.example.utils.AliOssUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.UUID;
+
+/*
+通用接口
+ */
+@RestController
+@RequestMapping("/user")
+@Api(tags = "通用接口")
+@Slf4j
+public class CommonController {
+
+    @Autowired
+    private AliOssUtil aliOssUtil;
+
+    /*
+    文件上传
+     */
+    @PostMapping("/upload")
+    @ApiOperation("文件上传")
+    public Result<String> upload(MultipartFile file) {
+        log.info("文件上传:{}", file);
+        try {
+            //获取原始文件名
+            String originalFilename = file.getOriginalFilename();
+            //截取原始文件名的后缀
+            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
+            //构建新文件名称
+            String objectName = UUID.randomUUID().toString() + extension;
+            //文件请求路径
+            String filePath = aliOssUtil.upload(file.getBytes(), objectName);
+            return Result.success(filePath);
+        } catch (IOException e) {
+            log.info("文件上传失败:{}",e);
+        }
+        return Result.error(MessageConstant.UPLOAD_FAILED);
+    }
+}

+ 38 - 0
teacher-serve/src/main/java/com/example/controller/user/UserController.java

@@ -1,6 +1,8 @@
 package com.example.controller.user;
 package com.example.controller.user;
 
 
 import com.example.constant.JwtClaimsConstant;
 import com.example.constant.JwtClaimsConstant;
+import com.example.dto.PasswordDTO;
+import com.example.dto.UserDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.entity.User;
 import com.example.entity.User;
 import com.example.properties.JwtProperties;
 import com.example.properties.JwtProperties;
@@ -58,4 +60,40 @@ public class UserController {
                 .token(token).build();
                 .token(token).build();
         return Result.success(userLoginVO);
         return Result.success(userLoginVO);
     }
     }
+
+    /**
+     * 退出
+     *
+     * @return
+     */
+    @PostMapping("/logout")
+    @ApiOperation("老师退出")
+    public Result<String> logout() {
+        return Result.success();
+    }
+
+    @PostMapping("/register")
+    @ApiOperation("老师注册")
+    private Result register(@RequestBody UserDTO userDTO) {
+        log.info("老师注册:{}", userDTO);
+        userService.register(userDTO);
+        return Result.success();
+    }
+
+    @PostMapping("/password")
+    @ApiOperation(value = "修改密码")
+    public Result update(@RequestBody PasswordDTO passwordDTO) {
+        log.info("修改密码:{}", passwordDTO.getId());
+        userService.update(passwordDTO);
+
+        return Result.success();
+    }
+
+    @PostMapping("/forget")
+    @ApiOperation(value = "忘记密码")
+    public Result forget(@RequestBody UserDTO userDTO) {
+        log.info("修改密码:{}", userDTO.getUserName());
+        userService.forget(userDTO);
+        return Result.success();
+    }
 }
 }

+ 45 - 0
teacher-serve/src/main/java/com/example/handler/GlobalExceptionHandler.java

@@ -0,0 +1,45 @@
+package com.example.handler;
+
+import com.example.exception.BaseException;
+import com.example.constant.MessageConstant;
+import com.example.exception.BaseException;
+import com.example.result.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import java.sql.SQLIntegrityConstraintViolationException;
+
+/**
+ * 全局异常处理器,处理项目中抛出的业务异常
+ */
+@RestControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+
+    /**
+     * 捕获业务异常
+     * @param ex
+     * @return
+     */
+    @ExceptionHandler
+    public Result exceptionHandler(BaseException ex){
+        log.error("异常信息:{}", ex.getMessage());
+        return Result.error(ex.getMessage());
+    }
+    //处理SQL异常
+    @ExceptionHandler
+    public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){
+        // Duplicate entry '2532478980' for key 'employee.idx_username'
+        String message = ex.getMessage();
+        if(message.contains("Duplicate entry")){
+            String[] split = message.split(" ");
+            String username = split[2];
+            String msg = username + MessageConstant.ALREADY_EXISTS;
+            return Result.error(msg);
+        }else {
+            return Result.error(MessageConstant.UNKNOWN_ERROR);
+        }
+    }
+
+}

+ 5 - 3
teacher-serve/src/main/java/com/example/interceptor/JwtTokenAdminInterceptor.java

@@ -35,6 +35,8 @@ public class JwtTokenAdminInterceptor implements HandlerInterceptor {
      */
      */
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         //判断当前拦截到的是Controller的方法还是其他资源
         //判断当前拦截到的是Controller的方法还是其他资源
+        //同时放行公开部分
+        String uri = request.getRequestURI();
         if (!(handler instanceof HandlerMethod)) {
         if (!(handler instanceof HandlerMethod)) {
             //当前拦截到的不是动态方法,直接放行
             //当前拦截到的不是动态方法,直接放行
             return true;
             return true;
@@ -47,9 +49,9 @@ public class JwtTokenAdminInterceptor implements HandlerInterceptor {
         try {
         try {
             log.info("jwt校验:{}", token);
             log.info("jwt校验:{}", token);
             Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token);
             Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token);
-            Long teacherId = Long.valueOf(claims.get(JwtClaimsConstant.TEACHER_ID).toString());
-            log.info("当前老师id:{}",teacherId);
-            BaseContext.setCurrentId(teacherId);
+            Long id = Long.valueOf(claims.get(JwtClaimsConstant.USER_ID).toString());
+            log.info("当前老师id:{}", id);
+            BaseContext.setCurrentId(id);
             //3、通过,放行
             //3、通过,放行
             return true;
             return true;
         } catch (Exception ex) {
         } catch (Exception ex) {

+ 34 - 0
teacher-serve/src/main/java/com/example/mapper/AdminMapper.java

@@ -0,0 +1,34 @@
+package com.example.mapper;
+
+import com.example.dto.PageQueryDTO;
+import com.example.entity.User;
+import com.github.pagehelper.Page;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AdminMapper {
+    /**
+     * 账号分页查询
+     * @param pageQueryDTO
+     * @return
+     */
+    Page<User> page(PageQueryDTO pageQueryDTO);
+
+    /**
+     * 启用禁用账号
+     * @param id
+     * @param status
+     */
+    @Update("update teacherteam_system.user set status = #{status} where id = #{id}")
+    void starOrStop(@Param("id") Long id, @Param("status") Integer status);
+
+    /**
+     * 删除老师账号
+     * @param id
+     */
+    @Delete("delete from teacherteam_system.user where id=#{id}")
+    void deleteById(Long id);
+}

+ 23 - 0
teacher-serve/src/main/java/com/example/mapper/TeacherMapper.java

@@ -0,0 +1,23 @@
+package com.example.mapper;
+
+import com.example.entity.ResearchFiled;
+import com.example.entity.Teacher;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface TeacherMapper {
+    /**
+     * 新增老师基本信息
+     * @param
+     */
+    void saveTeacher(Teacher teacher);
+
+    /**
+     * 插入研究领域信息
+     * @param researchFiled
+     */
+    void saveReasearch(@Param("researchFiled") List<ResearchFiled> researchFiled);
+}

+ 25 - 2
teacher-serve/src/main/java/com/example/mapper/UserMapper.java

@@ -1,8 +1,7 @@
 package com.example.mapper;
 package com.example.mapper;
 
 
 import com.example.entity.User;
 import com.example.entity.User;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.*;
 
 
 @Mapper
 @Mapper
 public interface UserMapper {
 public interface UserMapper {
@@ -13,4 +12,28 @@ public interface UserMapper {
      */
      */
     @Select("select * from teacherteam_system.user where username = #{username}")
     @Select("select * from teacherteam_system.user where username = #{username}")
     User getByUsername(String username);
     User getByUsername(String username);
+
+    /**
+     * 老师注册
+     * @param user
+     */
+    @Insert("insert into teacherteam_system.user (name, username, password, create_time, status,phone_number)" +
+            "values (#{name},#{userName},#{password},#{createTime},#{status},#{phoneNumber})")
+    void register(User user);
+
+    /**
+     * 根据id查询密码
+     * @param id
+     * @return
+     */
+    @Select("select password from teacherteam_system.user where id=#{id}")
+    String getPassword(Long id);
+
+    /**
+     * 根据id修改密码
+     * @param id
+     * @param password
+     */
+    @Update("update teacherteam_system.user set password = #{password} where id = #{id}")
+    void update(@Param("id") Long id, @Param("password") String password);
 }
 }

+ 26 - 0
teacher-serve/src/main/java/com/example/service/AdminService.java

@@ -0,0 +1,26 @@
+package com.example.service;
+
+import com.example.dto.PageQueryDTO;
+import com.example.result.PageResult;
+
+public interface AdminService {
+    /**
+     * 账号分页查询
+     * @param pageQueryDTO
+     * @return
+     */
+    PageResult page(PageQueryDTO pageQueryDTO);
+
+    /**
+     * 启用禁用账号
+     * @param id
+     * @param status
+     */
+    void starOrStop(Long id, Integer status);
+
+    /**
+     * 删除老师账号
+     * @param id
+     */
+    void deleteById(Long id);
+}

+ 11 - 0
teacher-serve/src/main/java/com/example/service/TeacherService.java

@@ -0,0 +1,11 @@
+package com.example.service;
+
+import com.example.dto.TeacherDTO;
+
+public interface TeacherService {
+    /**
+     * 新增老师基本信息
+     * @param teacherDTO
+     */
+    void saveTeacher(TeacherDTO teacherDTO);
+}

+ 25 - 0
teacher-serve/src/main/java/com/example/service/UserService.java

@@ -1,8 +1,33 @@
 package com.example.service;
 package com.example.service;
 
 
+import com.example.dto.PasswordDTO;
+import com.example.dto.UserDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.entity.User;
 import com.example.entity.User;
 
 
 public interface UserService {
 public interface UserService {
+    /**
+     * 老师登录
+     * @param userLoginDTO
+     * @return
+     */
     User login(UserLoginDTO userLoginDTO);
     User login(UserLoginDTO userLoginDTO);
+
+    /**
+     * 老师注册
+     * @param userDTO
+     */
+    void register(UserDTO userDTO);
+
+    /**
+     * 修改密码
+     * @param passwordDTO
+     */
+    void update(PasswordDTO passwordDTO);
+
+    /**
+     * 忘记密码
+     * @param userDTO
+     */
+    void forget(UserDTO userDTO);
 }
 }

+ 57 - 0
teacher-serve/src/main/java/com/example/service/impl/AdminServiceImpl.java

@@ -0,0 +1,57 @@
+package com.example.service.impl;
+
+import com.example.dto.PageQueryDTO;
+import com.example.entity.User;
+import com.example.mapper.AdminMapper;
+import com.example.result.PageResult;
+import com.example.service.AdminService;
+import com.example.service.UserService;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class AdminServiceImpl implements AdminService {
+
+    @Autowired
+    private AdminMapper adminMapper;
+
+    /**
+     * 账号分页查询
+     *
+     * @param pageQueryDTO
+     * @return
+     */
+    @Override
+    public PageResult page(PageQueryDTO pageQueryDTO) {
+        PageHelper.startPage(pageQueryDTO.getPage(), pageQueryDTO.getPageSize());
+        Page<User> page = adminMapper.page(pageQueryDTO);
+        long total = page.getTotal();
+        List<User> result = page.getResult();
+        return new PageResult(total, result);
+    }
+
+    /**
+     * 启用禁用账号
+     *
+     * @param id
+     * @param status
+     */
+    @Override
+    public void starOrStop(Long id, Integer status) {
+        adminMapper.starOrStop(id, status);
+    }
+
+    /**
+     * 删除老师账号
+     * @param id
+     */
+    @Override
+    public void deleteById(Long id) {
+        adminMapper.deleteById(id);
+    }
+}

+ 40 - 0
teacher-serve/src/main/java/com/example/service/impl/TeacherServiceImpl.java

@@ -0,0 +1,40 @@
+package com.example.service.impl;
+
+import com.example.context.BaseContext;
+import com.example.dto.TeacherDTO;
+import com.example.entity.ResearchFiled;
+import com.example.entity.Teacher;
+import com.example.mapper.TeacherMapper;
+import com.example.service.TeacherService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class TeacherServiceImpl implements TeacherService {
+    @Autowired
+    private TeacherMapper teacherMapper;
+
+    /**
+     * 新增老师基本信息
+     *
+     * @param teacherDTO
+     */
+    @Override
+    public void saveTeacher(TeacherDTO teacherDTO) {
+        Teacher teacher = new Teacher();
+        BeanUtils.copyProperties(teacherDTO, teacher);
+        teacher.setId(BaseContext.getCurrentId());
+        teacherMapper.saveTeacher(teacher);
+        //向研究领域插入n条数据
+        List<ResearchFiled> researchFiled = teacher.getResearchFiled();
+        if (researchFiled != null && researchFiled.size() > 0) {
+            researchFiled.forEach(researchFiled1 -> {
+                researchFiled1.setTeacherId(teacher.getId());
+            });
+            teacherMapper.saveReasearch(researchFiled);
+        }
+    }
+}

+ 68 - 1
teacher-serve/src/main/java/com/example/service/impl/UserServiceImpl.java

@@ -2,17 +2,26 @@ package com.example.service.impl;
 
 
 import com.example.constant.MessageConstant;
 import com.example.constant.MessageConstant;
 import com.example.constant.StatusConstant;
 import com.example.constant.StatusConstant;
+import com.example.dto.PasswordDTO;
+import com.example.dto.UserDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.dto.UserLoginDTO;
 import com.example.entity.User;
 import com.example.entity.User;
 import com.example.exception.AccountNotFoundException;
 import com.example.exception.AccountNotFoundException;
+import com.example.exception.PasswordEditFailedException;
 import com.example.exception.PasswordErrorException;
 import com.example.exception.PasswordErrorException;
 import com.example.mapper.UserMapper;
 import com.example.mapper.UserMapper;
+import com.example.result.Result;
 import com.example.service.UserService;
 import com.example.service.UserService;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.logging.Log;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.DigestUtils;
 import org.springframework.util.DigestUtils;
+import org.springframework.web.bind.annotation.PostMapping;
 
 
 import javax.security.auth.login.AccountLockedException;
 import javax.security.auth.login.AccountLockedException;
+import java.time.LocalDateTime;
 
 
 @Service
 @Service
 public class UserServiceImpl implements UserService {
 public class UserServiceImpl implements UserService {
@@ -50,8 +59,66 @@ public class UserServiceImpl implements UserService {
             //账号被锁定
             //账号被锁定
             throw new AccountNotFoundException(MessageConstant.ACCOUNT_LOCKED);
             throw new AccountNotFoundException(MessageConstant.ACCOUNT_LOCKED);
         }
         }
-//3、返回实体对象
+        //3、返回实体对象
         return user;
         return user;
 
 
     }
     }
+
+    /**
+     * 老师注册
+     *
+     * @param userDTO
+     */
+    @Override
+    public void register(UserDTO userDTO) {
+        User user = new User();
+        //对象属性拷贝
+        BeanUtils.copyProperties(userDTO, user);
+        //设置账号状态
+        user.setStatus(StatusConstant.DISABLE);
+        user.setCreateTime(LocalDateTime.now());
+        userMapper.register(user);
+
+    }
+
+    /**
+     * 修改密码
+     *
+     * @param passwordDTO
+     */
+    @Override
+    public void update(PasswordDTO passwordDTO) {
+        Long id = passwordDTO.getId();
+        String newPassword = passwordDTO.getNewPassword();
+        String oldPassword = passwordDTO.getOldPassword();
+        System.out.println(newPassword);
+        String password = userMapper.getPassword(id);
+        //如果旧密码输入不一致则修改失败
+        if (!oldPassword.equals(password)) {
+            throw new PasswordEditFailedException(MessageConstant.PASSWORD_EDIT_FAILED);
+        }
+        //修改账号信息
+        userMapper.update(id, newPassword);
+
+    }
+
+    /**
+     * 忘记密码
+     * @param userDTO
+     */
+    @Override
+    public void forget(UserDTO userDTO) {
+        //首先调取姓名和手机号对比一致不一致
+        String username = userDTO.getUserName();
+        String phoneNumber = userDTO.getPhoneNumber();
+        String name = userDTO.getName();
+        String password = userDTO.getPassword();
+        User user = userMapper.getByUsername(username);
+        //不一致则报错
+        if (!(user.getName().equals(name) && user.getPhoneNumber().equals(phoneNumber))) {
+            throw new PasswordEditFailedException(MessageConstant.PASSWORD_EDIT_FAILED);
+        }
+        //一致则修改
+        userMapper.update(user.getId(),password);
     }
     }
+}

+ 15 - 0
teacher-serve/src/main/resources/mapper/AdminMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.example.mapper.AdminMapper">
+
+    <select id="page" resultType="com.example.entity.User">
+        select * from teacherteam_system.user
+        <where>
+            <if test="name != null and name != ''">
+                    name like concat('%',#{name},'%')
+            </if>
+                    and id != 1
+        </where>
+    </select>
+</mapper>

+ 17 - 0
teacher-serve/src/main/resources/mapper/TeacherMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.example.mapper.TeacherMapper">
+
+    <insert id="saveTeacher">
+        insert into teacherteam_system.teacher(id, name, profile, image, gradaute_course, undergradaute_course, email, phone_number)
+        VALUES
+            (#{id},#{name},#{profile},#{image},#{gradauteCourse},#{undergradauteCourse},#{email},#{phoneNumber})
+    </insert>
+    <insert id="saveReasearch">
+        insert into teacherteam_system.research_filed(teacher_id,information)values
+        <foreach collection="researchFiled" item="re" separator=",">
+            (#{re.teacherId},#{re.information})
+        </foreach>
+    </insert>
+</mapper>

+ 6 - 0
teacher-serve/src/main/resources/mapper/UserMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.example.mapper.UserMapper">
+
+</mapper>