|
|
|
@ -0,0 +1,166 @@
|
|
|
|
|
package com.sky.controller.admin;
|
|
|
|
|
|
|
|
|
|
import com.sky.constant.JwtClaimsConstant;
|
|
|
|
|
import com.sky.context.BaseContext;
|
|
|
|
|
import com.sky.dto.EmployeeDTO;
|
|
|
|
|
import com.sky.dto.EmployeeLoginDTO;
|
|
|
|
|
import com.sky.dto.EmployeePageQueryDTO;
|
|
|
|
|
import com.sky.entity.Employee;
|
|
|
|
|
import com.sky.properties.JwtProperties;
|
|
|
|
|
import com.sky.result.PageResult;
|
|
|
|
|
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.util.DigestUtils;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 员工管理控制器
|
|
|
|
|
* 该类提供了关于员工的增删改查以及登录等功能接口,支持管理端的员工操作。
|
|
|
|
|
* 使用了 Swagger 注解,提供 API 文档支持。
|
|
|
|
|
*/
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/admin/employee")
|
|
|
|
|
@Slf4j
|
|
|
|
|
@Api(tags = "员工相关接口")
|
|
|
|
|
public class EmployeeController {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private EmployeeService employeeService; // 注入员工服务类,用于处理员工相关业务
|
|
|
|
|
@Autowired
|
|
|
|
|
private JwtProperties jwtProperties; // 注入 JWT 配置类,用于生成 JWT 令牌
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 员工登录接口
|
|
|
|
|
* 接收员工登录请求,验证身份,并生成 JWT 令牌返回给前端。
|
|
|
|
|
*
|
|
|
|
|
* @param employeeLoginDTO 登录信息
|
|
|
|
|
* @return 返回登录信息以及生成的 JWT 令牌
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/login")
|
|
|
|
|
@ApiOperation(value = "员工登录")
|
|
|
|
|
public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
|
|
|
|
|
log.info("员工登录:{}", employeeLoginDTO); // 记录登录请求日志
|
|
|
|
|
|
|
|
|
|
// 调用员工服务进行登录验证
|
|
|
|
|
Employee employee = employeeService.login(employeeLoginDTO);
|
|
|
|
|
|
|
|
|
|
// 登录成功后,生成 JWT 令牌
|
|
|
|
|
Map<String, Object> claims = new HashMap<>();
|
|
|
|
|
claims.put(JwtClaimsConstant.EMP_ID, employee.getId()); // 将员工ID放入JWT的claims部分
|
|
|
|
|
String token = JwtUtil.createJWT(
|
|
|
|
|
jwtProperties.getAdminSecretKey(), // 获取密钥
|
|
|
|
|
jwtProperties.getAdminTtl(), // 获取有效期
|
|
|
|
|
claims); // 设置 JWT claims
|
|
|
|
|
|
|
|
|
|
// 将登录者的 ID 设置到当前线程上下文中,以便其他地方使用
|
|
|
|
|
BaseContext.setCurrentId(employee.getId());
|
|
|
|
|
|
|
|
|
|
// 构造员工登录响应对象
|
|
|
|
|
EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()
|
|
|
|
|
.id(employee.getId())
|
|
|
|
|
.userName(employee.getUsername())
|
|
|
|
|
.name(employee.getName())
|
|
|
|
|
.token(token)
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
return Result.success(employeeLoginVO); // 返回成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 员工退出接口
|
|
|
|
|
* 目前该接口仅用于前端退出后显示成功,后端暂未涉及退出逻辑。
|
|
|
|
|
*
|
|
|
|
|
* @return 返回退出成功的结果
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/logout")
|
|
|
|
|
@ApiOperation("员工退出")
|
|
|
|
|
public Result<String> logout() {
|
|
|
|
|
return Result.success(); // 直接返回成功
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增员工接口
|
|
|
|
|
* 用于管理员新增员工。
|
|
|
|
|
*
|
|
|
|
|
* @param employeeDTO 员工信息
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping
|
|
|
|
|
@ApiOperation("新增员工")
|
|
|
|
|
public Result save(@RequestBody EmployeeDTO employeeDTO) {
|
|
|
|
|
log.info("新增员工:{}", employeeDTO); // 记录新增员工请求日志
|
|
|
|
|
employeeService.save(employeeDTO); // 调用服务层保存员工数据
|
|
|
|
|
return Result.success(); // 返回成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 员工分页查询接口
|
|
|
|
|
* 支持根据分页参数查询员工信息。
|
|
|
|
|
*
|
|
|
|
|
* @param employeePageQueryDTO 分页查询条件
|
|
|
|
|
* @return 返回分页查询结果
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/page")
|
|
|
|
|
@ApiOperation("员工分页查询")
|
|
|
|
|
public Result<PageResult> pageQuery(EmployeePageQueryDTO employeePageQueryDTO){
|
|
|
|
|
log.info("员工分页查询,参数为:{}", employeePageQueryDTO); // 记录分页查询请求日志
|
|
|
|
|
PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO); // 调用服务层进行分页查询
|
|
|
|
|
return Result.success(pageResult); // 返回分页查询结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 启用或禁用员工账号
|
|
|
|
|
* 管理员可以通过该接口启用或禁用员工账号。
|
|
|
|
|
*
|
|
|
|
|
* @param status 启用或禁用的状态,1表示启用,0表示禁用
|
|
|
|
|
* @param id 员工ID
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/status/{status}")
|
|
|
|
|
@ApiOperation("启用或禁用员工账号")
|
|
|
|
|
public Result startOrStop(@PathVariable Integer status, Long id) {
|
|
|
|
|
log.info("启用禁用员工账号{},{}", status, id); // 记录启用禁用请求日志
|
|
|
|
|
employeeService.startOrStop(status, id); // 调用服务层启用或禁用员工账号
|
|
|
|
|
return Result.success(); // 返回成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据员工ID查询员工信息
|
|
|
|
|
* 用于获取指定员工的详细信息。
|
|
|
|
|
*
|
|
|
|
|
* @param id 员工ID
|
|
|
|
|
* @return 返回员工信息
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/{id}")
|
|
|
|
|
@ApiOperation("通过id查询员工信息")
|
|
|
|
|
public Result<Employee> getById(@PathVariable Long id) {
|
|
|
|
|
Employee employee = employeeService.getById(id); // 调用服务层查询员工
|
|
|
|
|
return Result.success(employee); // 返回查询结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编辑员工信息接口
|
|
|
|
|
* 用于修改员工信息。
|
|
|
|
|
*
|
|
|
|
|
* @param employeeDTO 员工信息
|
|
|
|
|
* @return 返回操作结果
|
|
|
|
|
*/
|
|
|
|
|
@PutMapping
|
|
|
|
|
@ApiOperation("编辑员工信息")
|
|
|
|
|
public Result update(@RequestBody EmployeeDTO employeeDTO) {
|
|
|
|
|
log.info("编辑员工信息:{}", employeeDTO); // 记录编辑员工信息请求日志
|
|
|
|
|
employeeService.update(employeeDTO); // 调用服务层更新员工信息
|
|
|
|
|
return Result.success(); // 返回成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|