新增员工业务代码开发

This commit is contained in:
zvv
2026-03-26 11:25:07 +08:00
parent 1f858de9c1
commit edcc7685d1
8 changed files with 98 additions and 2 deletions

View File

@@ -24,4 +24,5 @@ public class MessageConstant {
public static final String ORDER_STATUS_ERROR = "订单状态错误"; public static final String ORDER_STATUS_ERROR = "订单状态错误";
public static final String ORDER_NOT_FOUND = "订单不存在"; public static final String ORDER_NOT_FOUND = "订单不存在";
public static final String ALREADY_EXISTS = "已存在";
} }

View File

@@ -1,6 +1,7 @@
package com.sky.controller.admin; package com.sky.controller.admin;
import com.sky.constant.JwtClaimsConstant; import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.EmployeeDTO;
import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee; import com.sky.entity.Employee;
import com.sky.properties.JwtProperties; import com.sky.properties.JwtProperties;
@@ -8,6 +9,7 @@ import com.sky.result.Result;
import com.sky.service.EmployeeService; import com.sky.service.EmployeeService;
import com.sky.utils.JwtUtil; import com.sky.utils.JwtUtil;
import com.sky.vo.EmployeeLoginVO; import com.sky.vo.EmployeeLoginVO;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -38,6 +40,7 @@ public class EmployeeController {
* @return * @return
*/ */
@PostMapping("/login") @PostMapping("/login")
@ApiOperation("员工登录")
public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) { public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
log.info("员工登录:{}", employeeLoginDTO); log.info("员工登录:{}", employeeLoginDTO);
@@ -67,8 +70,24 @@ public class EmployeeController {
* @return * @return
*/ */
@PostMapping("/logout") @PostMapping("/logout")
@ApiOperation("员工退出")
public Result<String> logout() { public Result<String> logout() {
return Result.success(); return Result.success();
} }
/**
* 新增员工
* @param employeeDTO
* @return
*/
@PostMapping
@ApiOperation("新增员工")
public Result save(@RequestBody EmployeeDTO employeeDTO) {
log.info("新增员工:{}", employeeDTO);
employeeService.save(employeeDTO);
return Result.success();
}
} }

View File

@@ -1,11 +1,14 @@
package com.sky.handler; package com.sky.handler;
import com.sky.constant.MessageConstant;
import com.sky.exception.BaseException; import com.sky.exception.BaseException;
import com.sky.result.Result; import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.sql.SQLIntegrityConstraintViolationException;
/** /**
* 全局异常处理器,处理项目中抛出的业务异常 * 全局异常处理器,处理项目中抛出的业务异常
*/ */
@@ -24,4 +27,23 @@ public class GlobalExceptionHandler {
return Result.error(ex.getMessage()); 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);
}
}
} }

View File

@@ -1,6 +1,7 @@
package com.sky.interceptor; package com.sky.interceptor;
import com.sky.constant.JwtClaimsConstant; import com.sky.constant.JwtClaimsConstant;
import com.sky.context.BaseContext;
import com.sky.properties.JwtProperties; import com.sky.properties.JwtProperties;
import com.sky.utils.JwtUtil; import com.sky.utils.JwtUtil;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
@@ -47,6 +48,9 @@ public class JwtTokenAdminInterceptor implements HandlerInterceptor {
Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token); Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token);
Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString()); Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());
log.info("当前员工id", empId); log.info("当前员工id", empId);
//线程的局部变量
BaseContext.setCurrentId(empId);
//3、通过放行 //3、通过放行
return true; return true;
} catch (Exception ex) { } catch (Exception ex) {

View File

@@ -1,6 +1,7 @@
package com.sky.mapper; package com.sky.mapper;
import com.sky.entity.Employee; import com.sky.entity.Employee;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@@ -15,4 +16,13 @@ public interface EmployeeMapper {
@Select("select * from employee where username = #{username}") @Select("select * from employee where username = #{username}")
Employee getByUsername(String 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);
} }

View File

@@ -1,5 +1,6 @@
package com.sky.service; package com.sky.service;
import com.sky.dto.EmployeeDTO;
import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee; import com.sky.entity.Employee;
@@ -12,4 +13,10 @@ public interface EmployeeService {
*/ */
Employee login(EmployeeLoginDTO employeeLoginDTO); Employee login(EmployeeLoginDTO employeeLoginDTO);
/**
* 新增员工
* @param employeeDTO
*/
void save(EmployeeDTO employeeDTO);
} }

View File

@@ -1,7 +1,10 @@
package com.sky.service.impl; package com.sky.service.impl;
import com.sky.constant.MessageConstant; import com.sky.constant.MessageConstant;
import com.sky.constant.PasswordConstant;
import com.sky.constant.StatusConstant; import com.sky.constant.StatusConstant;
import com.sky.context.BaseContext;
import com.sky.dto.EmployeeDTO;
import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee; import com.sky.entity.Employee;
import com.sky.exception.AccountLockedException; import com.sky.exception.AccountLockedException;
@@ -9,10 +12,14 @@ import com.sky.exception.AccountNotFoundException;
import com.sky.exception.PasswordErrorException; import com.sky.exception.PasswordErrorException;
import com.sky.mapper.EmployeeMapper; import com.sky.mapper.EmployeeMapper;
import com.sky.service.EmployeeService; 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.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 java.time.LocalDateTime;
@Service @Service
public class EmployeeServiceImpl implements EmployeeService { 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())) { if (!password.equals(employee.getPassword())) {
//密码错误 //密码错误
throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR); throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
@@ -54,4 +62,29 @@ public class EmployeeServiceImpl implements EmployeeService {
return employee; 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);
}
} }

View File

@@ -5,4 +5,4 @@ sky:
port: 3306 port: 3306
database: sky_take_out database: sky_take_out
username: root username: root
password: root password: 1234