From 1d5c92d8f42584c4fdc87d69c9cc28d7cd75ec3a Mon Sep 17 00:00:00 2001 From: slhaf <2998813882@qq.com> Date: Mon, 9 Sep 2024 15:06:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sky/constant/MessageConstant.java | 1 + .../com/sky/config/WebMvcConfiguration.java | 5 +++ .../controller/admin/EmployeeController.java | 14 +++++++ .../sky/handler/GlobalExceptionHandler.java | 16 ++++++++ .../interceptor/JwtTokenAdminInterceptor.java | 4 +- .../java/com/sky/mapper/EmployeeMapper.java | 8 ++++ .../java/com/sky/service/EmployeeService.java | 6 +++ .../sky/service/impl/EmployeeServiceImpl.java | 34 +++++++++++++++- .../src/main/resources/application-dev.yml | 8 ---- sky-server/src/main/resources/application.yml | 39 ------------------- 10 files changed, 86 insertions(+), 49 deletions(-) delete mode 100644 sky-server/src/main/resources/application-dev.yml delete mode 100644 sky-server/src/main/resources/application.yml diff --git a/sky-common/src/main/java/com/sky/constant/MessageConstant.java b/sky-common/src/main/java/com/sky/constant/MessageConstant.java index c6b645d..4379791 100644 --- a/sky-common/src/main/java/com/sky/constant/MessageConstant.java +++ b/sky-common/src/main/java/com/sky/constant/MessageConstant.java @@ -7,6 +7,7 @@ public class MessageConstant { public static final String PASSWORD_ERROR = "密码错误"; public static final String ACCOUNT_NOT_FOUND = "账号不存在"; + public static final String ALREADY_EXISTS = "已存在"; public static final String ACCOUNT_LOCKED = "账号被锁定"; public static final String UNKNOWN_ERROR = "未知错误"; public static final String USER_NOT_LOGIN = "用户未登录"; diff --git a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java index 98fc764..5799baa 100644 --- a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java +++ b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java @@ -43,14 +43,18 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport { */ @Bean public Docket docket() { + log.info("准备生成接口文档..."); ApiInfo apiInfo = new ApiInfoBuilder() .title("苍穹外卖项目接口文档") .version("2.0") .description("苍穹外卖项目接口文档") .build(); + //指定版本 Docket docket = new Docket(DocumentationType.SWAGGER_2) + //上文设置的信息 .apiInfo(apiInfo) .select() + //指定生成接口需要扫描的包 .apis(RequestHandlerSelectors.basePackage("com.sky.controller")) .paths(PathSelectors.any()) .build(); @@ -62,6 +66,7 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport { * @param registry */ protected void addResourceHandlers(ResourceHandlerRegistry registry) { + log.info("开始设置静态资源映射..."); registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } diff --git a/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java b/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java index 5857f07..d3873e2 100644 --- a/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java +++ b/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java @@ -1,6 +1,7 @@ package com.sky.controller.admin; import com.sky.constant.JwtClaimsConstant; +import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; import com.sky.properties.JwtProperties; @@ -8,6 +9,8 @@ import com.sky.result.Result; import com.sky.service.EmployeeService; import com.sky.utils.JwtUtil; import com.sky.vo.EmployeeLoginVO; +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; @@ -24,6 +27,7 @@ import java.util.Map; @RestController @RequestMapping("/admin/employee") @Slf4j +@Api(tags = "员工相关接口") public class EmployeeController { @Autowired @@ -38,6 +42,7 @@ public class EmployeeController { * @return */ @PostMapping("/login") + @ApiOperation(value = "员工登录") public Result login(@RequestBody EmployeeLoginDTO employeeLoginDTO) { log.info("员工登录:{}", employeeLoginDTO); @@ -67,8 +72,17 @@ public class EmployeeController { * @return */ @PostMapping("/logout") + @ApiOperation("员工退出") public Result logout() { return Result.success(); } + @PostMapping + @ApiOperation("新增员工") + public Result save(@RequestBody EmployeeDTO employeeDTO) { + log.info("新增员工:{}",employeeDTO); + employeeService.save(employeeDTO); + return Result.success(); + } + } diff --git a/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java index 1a48598..a6633ee 100644 --- a/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java +++ b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java @@ -1,11 +1,14 @@ package com.sky.handler; +import com.sky.constant.MessageConstant; import com.sky.exception.BaseException; import com.sky.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; + /** * 全局异常处理器,处理项目中抛出的业务异常 */ @@ -24,4 +27,17 @@ public class GlobalExceptionHandler { return Result.error(ex.getMessage()); } + @ExceptionHandler + public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){ + //Duplicate entry 'lisi' for key 'employee.idx_username' + String message = ex.getMessage(); + if (message.contains("Duplicate entry")){ + String username = message.split(" ")[2]; + String msg = username + MessageConstant.ALREADY_EXISTS; + return Result.error(msg); + }else { + return Result.error(MessageConstant.UNKNOWN_ERROR); + } + } + } diff --git a/sky-server/src/main/java/com/sky/interceptor/JwtTokenAdminInterceptor.java b/sky-server/src/main/java/com/sky/interceptor/JwtTokenAdminInterceptor.java index e7c50b6..e7ca98f 100644 --- a/sky-server/src/main/java/com/sky/interceptor/JwtTokenAdminInterceptor.java +++ b/sky-server/src/main/java/com/sky/interceptor/JwtTokenAdminInterceptor.java @@ -1,6 +1,7 @@ package com.sky.interceptor; import com.sky.constant.JwtClaimsConstant; +import com.sky.context.BaseContext; import com.sky.properties.JwtProperties; import com.sky.utils.JwtUtil; import io.jsonwebtoken.Claims; @@ -46,7 +47,8 @@ public class JwtTokenAdminInterceptor implements HandlerInterceptor { log.info("jwt校验:{}", token); Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token); Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString()); - log.info("当前员工id:", empId); + BaseContext.setCurrentId(empId); + log.info("当前员工id:{}", empId); //3、通过,放行 return true; } catch (Exception ex) { diff --git a/sky-server/src/main/java/com/sky/mapper/EmployeeMapper.java b/sky-server/src/main/java/com/sky/mapper/EmployeeMapper.java index 550eda5..e5bcda9 100644 --- a/sky-server/src/main/java/com/sky/mapper/EmployeeMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/EmployeeMapper.java @@ -1,6 +1,7 @@ package com.sky.mapper; import com.sky.entity.Employee; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -15,4 +16,11 @@ public interface EmployeeMapper { @Select("select * from employee where username = #{username}") Employee getByUsername(String username); + /** + * 插入员工数据 + * @param employee + */ + @Insert("insert into employee (name, username, password, phone, sex, id_number, status, create_time, update_time, create_user, update_user) " + + "values (#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{status},#{createTime},#{updateTime},#{createUser},#{updateUser})") + void insert(Employee employee); } diff --git a/sky-server/src/main/java/com/sky/service/EmployeeService.java b/sky-server/src/main/java/com/sky/service/EmployeeService.java index d3e2ab2..4ee32a7 100644 --- a/sky-server/src/main/java/com/sky/service/EmployeeService.java +++ b/sky-server/src/main/java/com/sky/service/EmployeeService.java @@ -1,5 +1,6 @@ package com.sky.service; +import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; @@ -12,4 +13,9 @@ public interface EmployeeService { */ Employee login(EmployeeLoginDTO employeeLoginDTO); + /** + * 新增员工 + * @param employeeDTO + */ + void save(EmployeeDTO employeeDTO); } diff --git a/sky-server/src/main/java/com/sky/service/impl/EmployeeServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/EmployeeServiceImpl.java index cc98c98..6ea877e 100644 --- a/sky-server/src/main/java/com/sky/service/impl/EmployeeServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/EmployeeServiceImpl.java @@ -1,7 +1,10 @@ package com.sky.service.impl; import com.sky.constant.MessageConstant; +import com.sky.constant.PasswordConstant; import com.sky.constant.StatusConstant; +import com.sky.context.BaseContext; +import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; import com.sky.exception.AccountLockedException; @@ -9,10 +12,13 @@ import com.sky.exception.AccountNotFoundException; import com.sky.exception.PasswordErrorException; import com.sky.mapper.EmployeeMapper; import com.sky.service.EmployeeService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; +import java.time.LocalDateTime; + @Service public class EmployeeServiceImpl implements EmployeeService { @@ -39,7 +45,8 @@ public class EmployeeServiceImpl implements EmployeeService { } //密码比对 - // TODO 后期需要进行md5加密,然后再进行比对 + //进行md5加密,然后再进行比对 + password = DigestUtils.md5DigestAsHex(password.getBytes()); if (!password.equals(employee.getPassword())) { //密码错误 throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR); @@ -54,4 +61,29 @@ public class EmployeeServiceImpl implements EmployeeService { return employee; } + /** + * 新增员工 + * @param employeeDTO + */ + @Override + public void save(EmployeeDTO employeeDTO) { + Employee employee = new Employee(); + + //拷贝属性 + BeanUtils.copyProperties(employeeDTO, employee); + + //设置属性 + employee.setStatus(StatusConstant.ENABLE); + employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes())); + employee.setCreateTime(LocalDateTime.now()); + employee.setUpdateTime(LocalDateTime.now()); + + // 设置为当前登录用户的ID + employee.setCreateUser(BaseContext.getCurrentId()); + employee.setUpdateUser(BaseContext.getCurrentId()); + BaseContext.removeCurrentId(); + + employeeMapper.insert(employee); + } + } diff --git a/sky-server/src/main/resources/application-dev.yml b/sky-server/src/main/resources/application-dev.yml deleted file mode 100644 index 0339477..0000000 --- a/sky-server/src/main/resources/application-dev.yml +++ /dev/null @@ -1,8 +0,0 @@ -sky: - datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - host: localhost - port: 3306 - database: sky_take_out - username: root - password: root diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml deleted file mode 100644 index 24df577..0000000 --- a/sky-server/src/main/resources/application.yml +++ /dev/null @@ -1,39 +0,0 @@ -server: - port: 8080 - -spring: - profiles: - active: dev - main: - allow-circular-references: true - datasource: - druid: - driver-class-name: ${sky.datasource.driver-class-name} - url: jdbc:mysql://${sky.datasource.host}:${sky.datasource.port}/${sky.datasource.database}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true - username: ${sky.datasource.username} - password: ${sky.datasource.password} - -mybatis: - #mapper配置文件 - mapper-locations: classpath:mapper/*.xml - type-aliases-package: com.sky.entity - configuration: - #开启驼峰命名 - map-underscore-to-camel-case: true - -logging: - level: - com: - sky: - mapper: debug - service: info - controller: info - -sky: - jwt: - # 设置jwt签名加密时使用的秘钥 - admin-secret-key: itcast - # 设置jwt过期时间 - admin-ttl: 7200000 - # 设置前端传递过来的令牌名称 - admin-token-name: token