package com.ruoyi.web.controller.api; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.system.domain.Employee; import com.ruoyi.system.domain.SysVisitorMachine; import com.ruoyi.system.dto.ApiVisitorMachineRequest; import com.ruoyi.system.dto.CardVerifyRequest; import com.ruoyi.system.dto.EmployeeDto; import com.ruoyi.system.dto.SysVisitorMachineDetailRequest; import com.ruoyi.system.mapper.EmployeeMapper; import com.ruoyi.system.mapper.SysVisitorMachineMapper; import com.ruoyi.system.service.EmployeeVerifyService; import com.ruoyi.system.service.ISysVisitorMachineService; import com.ruoyi.system.vo.SysVisitorMachineVO; import com.ruoyi.web.controller.tool.ImageUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 接待人(被访者)刷卡验证接口。 * 数据源:t_employee 员工管理表(含内部员工及已授权的外部人员)。 */ @Api(tags = "接待人验证接口-查询所有员工接口") @RestController @RequestMapping("/api/employee/verify") public class EmployeeVerifyController extends BaseController { @Resource private EmployeeVerifyService employeeVerifyService; @Resource private EmployeeMapper employeeMapper; @Autowired private SysVisitorMachineMapper visitorMachineMapper; /** * 刷卡验证:现场读卡器读取卡号后调用本接口,与接待人绑定的卡号比对。 */ @PostMapping("/card") @ApiOperation(value = "接待人刷卡验证", notes = "根据传入的卡号与接待人(employeeId)绑定的卡号进行比对," + "仅对启用且未删除的接待人生效") public AjaxResult verifyByCard(@RequestBody @Valid CardVerifyRequest request) { return employeeVerifyService.verifyByCard(request); } /** * 刷卡验证:现场读卡器读取卡号后调用本接口,与接待人绑定的卡号比对。 */ @PostMapping("/allEmployee") @ApiOperation(value = "查询所有员工接口", notes = "必传设备ID") public AjaxResult getAllEmployee(@RequestBody @Valid ApiVisitorMachineRequest request) { SysVisitorMachine detail = visitorMachineMapper.checkDeviceIdUnique(request.getMachineId(),null); if (detail == null || !detail.getEnabled()) { throw new ServiceException("未找到有效设备"); } List employees = employeeMapper.selectAllEnabled(); if (employees == null || employees.isEmpty()) { return success(new ArrayList<>()); } List employeeDtoList = employees.stream() .map(employee -> { EmployeeDto dto = new EmployeeDto(); BeanUtils.copyProperties(employee, dto); // 将图片地址转为 Base64 if (StringUtils.isNotEmpty(employee.getFaceImage())) { String base64 = ImageUtil.imageUrlToBase64(employee.getFaceImage()); dto.setFaceImage(base64); } return dto; }) .collect(Collectors.toList()); return success(employeeDtoList); } }