|  |  |  | @ -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();  // 返回成功结果
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } |