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..9372410 100644 --- a/sky-common/src/main/java/com/sky/constant/MessageConstant.java +++ b/sky-common/src/main/java/com/sky/constant/MessageConstant.java @@ -24,4 +24,5 @@ public class MessageConstant { public static final String ORDER_STATUS_ERROR = "订单状态错误"; public static final String ORDER_NOT_FOUND = "订单不存在"; + public static final String ALREADY_EXISTS = "已存在"; } 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..6dda929 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,7 @@ import com.sky.result.Result; import com.sky.service.EmployeeService; import com.sky.utils.JwtUtil; import com.sky.vo.EmployeeLoginVO; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -38,6 +40,7 @@ public class EmployeeController { * @return */ @PostMapping("/login") + @ApiOperation("员工登录") public Result login(@RequestBody EmployeeLoginDTO employeeLoginDTO) { log.info("员工登录:{}", employeeLoginDTO); @@ -67,8 +70,24 @@ public class EmployeeController { * @return */ @PostMapping("/logout") + @ApiOperation("员工退出") public Result logout() { return Result.success(); } + + /** + * 新增员工 + * @param employeeDTO + * @return + */ + @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..592cced 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,23 @@ public class GlobalExceptionHandler { return Result.error(ex.getMessage()); } + + /** + * 处理SQL异常 + * @param ex + * @return + */ + @ExceptionHandler + public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){ + 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); + } + } + } 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..b54c8ce 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; @@ -47,6 +48,9 @@ public class JwtTokenAdminInterceptor implements HandlerInterceptor { Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token); Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString()); log.info("当前员工id:", empId); + + //线程的局部变量 + BaseContext.setCurrentId(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..fe49827 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,13 @@ 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, create_time, update_time, create_user, update_user)" + + "values" + + "(#{name}, #{username}, #{password}, #{phone}, #{sex}, #{idNumber}, #{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..19b7f9e 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,10 @@ 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..6a38565 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,14 @@ import com.sky.exception.AccountNotFoundException; import com.sky.exception.PasswordErrorException; import com.sky.mapper.EmployeeMapper; import com.sky.service.EmployeeService; +import io.lettuce.core.protocol.BaseRedisCommandBuilder; +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 +46,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 +62,29 @@ public class EmployeeServiceImpl implements EmployeeService { return employee; } + + /** + * 新增员工 + * @param employeeDTO + */ + public void save(EmployeeDTO employeeDTO) { + Employee employee = new Employee(); + + //对象属性拷贝 DTO和实体类的属性一致 + BeanUtils.copyProperties(employeeDTO, employee); + + //设置实体类剩下的属性 + employee.setStatus(StatusConstant.ENABLE); + employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes())); + employee.setCreateTime(LocalDateTime.now()); + employee.setUpdateTime(LocalDateTime.now()); + + // + employee.setCreateUser(BaseContext.getCurrentId()); + employee.setUpdateUser(BaseContext.getCurrentId()); + + //调用持久层 + employeeMapper.insert(employee); + } + } diff --git a/sky-server/src/main/resources/application-dev.yml b/sky-server/src/main/resources/application-dev.yml index 0339477..fa4146b 100644 --- a/sky-server/src/main/resources/application-dev.yml +++ b/sky-server/src/main/resources/application-dev.yml @@ -5,4 +5,4 @@ sky: port: 3306 database: sky_take_out username: root - password: root + password: 1234