package com.qmdx00.controller; import com.auth0.jwt.exceptions.JWTVerificationException; import com.auth0.jwt.interfaces.Claim; import com.qmdx00.entity.Account; import com.qmdx00.entity.Machine; import com.qmdx00.service.AccountService; import com.qmdx00.service.MachineService; import com.qmdx00.util.*; import com.qmdx00.util.enums.ResponseStatus; import com.qmdx00.util.enums.Role; import com.qmdx00.util.model.Response; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * @author yuanweimin * @date 19/06/17 08:37 * @description 设备 Controller */ @Slf4j @RestController @RequestMapping("/api/machine") public class MachineController extends BaseController { private final TokenUtil tokenUtil; private final AccountService accountService; private final MachineService machineService; @Autowired public MachineController(MachineService machineService, TokenUtil tokenUtil, AccountService accountService) { this.machineService = machineService; this.tokenUtil = tokenUtil; this.accountService = accountService; } /** * 获取机器设备列表 * * @param request 请求 * @return Response */ @GetMapping public Response getMachineList(HttpServletRequest request) { String token = request.getHeader("token"); if (!VerifyUtil.checkString(token)) { return ResultUtil.returnStatus(ResponseStatus.NOT_LOGIN); } else { try { // 解析token Claim claim = tokenUtil.getClaim(token, "account_id"); Account account = accountService.findAccountById(claim.asString()); // 判断角色是否有权限 if (account != null && account.getRole() == Role.ADMIN) { List<Machine> machines = machineService.findAllMachine(); log.info("machines: {}", machines); return ResultUtil.returnStatusAndData(ResponseStatus.SUCCESS, machines); } else { return ResultUtil.returnStatus(ResponseStatus.VISITED_FORBID); } } catch (JWTVerificationException e) { // 解析失败,token无效 log.error("{}", e); return ResultUtil.returnStatus(ResponseStatus.NOT_LOGIN); } } } /** * 通过 ID 获取设备信息 * * @param request 请求 * @param id 设备 ID * @return Response */ @GetMapping("/{id}") public Response getMachine(HttpServletRequest request, @PathVariable String id) { String token = request.getHeader("token"); if (!VerifyUtil.checkString(token, id)) { return ResultUtil.returnStatus(ResponseStatus.PARAMS_ERROR); } else { try { // 解析token Claim claim = tokenUtil.getClaim(token, "account_id"); Account account = accountService.findAccountById(claim.asString()); // 判断角色是否有权限 if (account != null && account.getRole() == Role.ADMIN) { Machine machine = machineService.findMachineById(id); if (machine != null) { return ResultUtil.returnStatusAndData(ResponseStatus.SUCCESS, machine); } else { return ResultUtil.returnStatus(ResponseStatus.NOT_FOUND); } } else { return ResultUtil.returnStatus(ResponseStatus.VISITED_FORBID); } } catch (JWTVerificationException e) { // 解析失败,token无效 log.error("{}", e); return ResultUtil.returnStatus(ResponseStatus.NOT_LOGIN); } } } /** * 通过 ID 修改设备信息 * * @param request 请求 * @param id 设备 ID * @param name 名称 * @param type 类型 * @param desc 描述 * @return Response */ @PutMapping("/{id}") public Response updateMachine(HttpServletRequest request, @PathVariable String id, @RequestParam("name") String name, @RequestParam("type") String type, @RequestParam("desc") String desc) { String token = request.getHeader("token"); if (!VerifyUtil.checkString(token, id, name, type, desc)) { return ResultUtil.returnStatus(ResponseStatus.PARAMS_ERROR); } else { try { // 解析token Claim claim = tokenUtil.getClaim(token, "account_id"); Account account = accountService.findAccountById(claim.asString()); // 判断角色是否有权限 if (account != null && account.getRole() == Role.ADMIN) { Integer row = machineService.updateMachine(Machine.builder() .machineId(id) .name(name) .type(type) .machineDesc(desc) .build()); log.info("update machine: {}", row); return ResultUtil.returnStatusAndData(ResponseStatus.SUCCESS, MapUtil.create("row", row + "")); } else { return ResultUtil.returnStatus(ResponseStatus.VISITED_FORBID); } } catch (JWTVerificationException e) { // 解析失败,token无效 log.error("{}", e); return ResultUtil.returnStatus(ResponseStatus.NOT_LOGIN); } } } }