123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- package com.xjrsoft.module.personnel.controller;
- import cn.dev33.satoken.annotation.SaCheckPermission;
- import cn.dev33.satoken.session.SaSession;
- import cn.dev33.satoken.stp.StpUtil;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.StringPool;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.github.yulichang.wrapper.MPJLambdaWrapper;
- import com.xjrsoft.common.constant.GlobalConstant;
- import com.xjrsoft.common.exception.MyException;
- import com.xjrsoft.common.model.result.R;
- import com.xjrsoft.common.page.ConventPage;
- import com.xjrsoft.common.page.PageOutput;
- import com.xjrsoft.common.utils.ImageUtil;
- import com.xjrsoft.common.utils.VoToColumnUtil;
- import com.xjrsoft.module.organization.entity.User;
- import com.xjrsoft.module.personnel.dto.*;
- import com.xjrsoft.module.personnel.entity.FaceManagement;
- import com.xjrsoft.module.personnel.service.IFaceManagementService;
- import com.xjrsoft.module.personnel.vo.FaceManagementVo;
- import com.xjrsoft.module.system.service.ICodeRuleService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import org.apache.commons.lang3.StringUtils;
- import org.jetbrains.annotations.NotNull;
- import org.springframework.http.MediaType;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- import javax.validation.Valid;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import static org.springframework.web.bind.annotation.RequestMethod.POST;
- @RestController
- @RequestMapping("/personnel" + "/facemanager")
- @Api(value = "/personnel" + "/facemanager", tags = "人脸管理")
- @AllArgsConstructor
- public class FaceManagementController {
- private final IFaceManagementService faceManagementService;
- private ICodeRuleService codeRuleService;
- @GetMapping(value = "/page")
- @ApiOperation(value = "人脸列表(分页)")
- @SaCheckPermission("facemanager:detail")
- public R Page(@Valid FaceManagementPageDto dto) {
- MPJLambdaWrapper<FaceManagement> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper
- .like(StrUtil.isNotBlank(dto.getFaceCode()), FaceManagement::getFaceCode, dto.getFaceCode())
- .like(ObjectUtil.isNotNull(dto.getName()), FaceManagement::getName, dto.getName())
- .select(FaceManagement.class, x -> VoToColumnUtil.fieldsToColumns(FaceManagementVo.class).contains(x.getProperty()))
- .select(FaceManagement::getId);
- IPage<FaceManagement> page = faceManagementService.page(ConventPage.getPage(dto), queryWrapper);
- PageOutput<FaceManagementVo> pageOutput = ConventPage.getPageOutput(page, FaceManagementVo.class);
- return R.ok(pageOutput);
- }
- @GetMapping(value = "/info")
- @ApiOperation(value = "根据id查询人脸信息")
- @SaCheckPermission("facemanager:detail")
- public R info(@RequestParam Long id) {
- FaceManagement faceManagement = faceManagementService.getByIdDeep(id);
- if (faceManagement == null) {
- return R.error("找不到此数据!");
- }
- return R.ok(BeanUtil.toBean(faceManagement, FaceManagementVo.class));
- }
- @GetMapping(value = "/detail")
- @ApiOperation(value = "根据当前用户查询人脸信息")
- @SaCheckPermission("facemanager:detail")
- public R detail() {
- SaSession tokenSession = StpUtil.getTokenSession();
- User user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
- FaceManagement faceManagement = faceManagementService.getOneDeep(Wrappers.lambdaQuery(FaceManagement.class).eq(FaceManagement::getUserId, user.getId()));
- if (faceManagement == null) {
- return R.error("找不到此数据!");
- }
- return R.ok(BeanUtil.toBean(faceManagement, FaceManagementVo.class));
- }
- @PostMapping
- @ApiOperation(value = "新增人脸")
- @SaCheckPermission("facemanager:add")
- public R add(AddFaceManagementDto dto, @RequestParam("file") MultipartFile file) {
- FaceManagement faceManagement = BeanUtil.toBean(dto, FaceManagement.class);
- try {
- faceManagement.setRegisterBase64(ImageHandler(file));
- } catch (Exception e) {
- return R.error(e.getMessage());
- }
- boolean isSuccess = faceManagementService.add(faceManagement);
- codeRuleService.useEncode("FACECODE");
- return R.ok(isSuccess);
- }
- @PutMapping
- @ApiOperation(value = "修改人脸")
- @SaCheckPermission("facemanager:edit")
- public R update(UpdateFaceManagementDto dto, @RequestParam(name = "file",required = false) MultipartFile file) {
- FaceManagement faceManagement = BeanUtil.toBean(dto, FaceManagement.class);
- if (file != null) {
- try {
- faceManagement.setRegisterBase64(ImageHandler(file));
- } catch (Exception e) {
- return R.error(e.getMessage());
- }
- }
- return R.ok(faceManagementService.update(faceManagement));
- }
- @PutMapping("/status")
- @ApiOperation(value = "修改人脸状态")
- @SaCheckPermission("facemanager:edit-status")
- public R updateEnabled(@Valid @RequestBody UpdateFaceManagementStatusDto dto) {
- //根据id修改表单enabledMark
- return R.ok(faceManagementService.update(Wrappers.<FaceManagement>update().lambda().set(FaceManagement::getEnabledMark, dto.getEnabledMark()).eq(FaceManagement::getId, dto.getId())));
- }
- @DeleteMapping
- @ApiOperation(value = "删除")
- @SaCheckPermission("facemanager:delete")
- public R delete(@Valid @RequestBody List<Long> ids) {
- return R.ok(faceManagementService.delete(ids));
- }
- // 图片处理
- public String ImageHandler(@NotNull MultipartFile file) throws IOException {
- String filename = file.getOriginalFilename();
- String suffix = StringUtils.substringAfterLast(filename, StringPool.DOT);
- String[] imgSuffix = new String[]{"png", "jpg", "jpeg"};
- if (!Arrays.asList(imgSuffix).contains(suffix)) {
- throw new MyException("图片格式不正确!");
- }
- Map<String, String> map = new HashMap<String, String>() {
- {
- put("jpg", "data:image/jpg;base64,");
- put("jpeg", "data:image/jpeg;base64,");
- put("png", "data:image/png;base64,");
- }
- };
- Long maxSize = 1048576L; // 最大文件1M
- byte[] resultImg = ImageUtil.compressUnderSize(file.getBytes(), maxSize);
- return map.get(suffix) + ImageUtil.bytesEncode2Base64(resultImg);
- }
- }
|