diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserFaceDto.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserFaceDto.java new file mode 100644 index 000000000..f25e474e2 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserFaceDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.admin.api.dto; + +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import lombok.Data; + +@Data +public class SysUserFaceDto extends SysUserFaceEntity { +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUserFaceEntity.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUserFaceEntity.java new file mode 100644 index 000000000..cdb9c62dd --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUserFaceEntity.java @@ -0,0 +1,85 @@ +package com.bsd.pjcloud.admin.api.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDateTime; + +/** + * 人脸样本表 + * + * @author pjcloud + * @date 2024-12-31 11:20:04 + */ +@Data +@TenantTable +@TableName("sys_user_face") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "人脸样本表") +public class SysUserFaceEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description="编号") + private Long id; + + /** + * 用户ID + */ + @Schema(description="用户ID") + private Long userId; + + /** + * 人脸图片 + */ + @Schema(description="人脸图片") + private String faceImg; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description="创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description="修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description="删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description="租户ID") + private Long tenantId; +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserFaceVo.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserFaceVo.java new file mode 100644 index 000000000..a40ff55bb --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserFaceVo.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.admin.api.vo; + +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import lombok.Data; + +@Data +public class SysUserFaceVo extends SysUserFaceEntity { + + private String username; + +} diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java new file mode 100644 index 000000000..da64b360f --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserFaceController.java @@ -0,0 +1,135 @@ +package com.bsd.pjcloud.admin.controller; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.dto.SysUserFaceDto; +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import com.bsd.pjcloud.admin.service.SysUserFaceService; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.log.annotation.SysLog; +import org.springframework.security.access.prepost.PreAuthorize; +import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 人脸样本表 + * + * @author pjcloud + * @date 2024-12-31 11:20:04 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/user-face") +@Tag(description = "sysUserFace", name = "人脸样本表管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysUserFaceController { + + private final SysUserFaceService sysUserFaceService; + + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysUserFace 人脸样本表 + * @return + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") + public R getSysUserFacePage(@ParameterObject Page page, @ParameterObject SysUserFaceEntity sysUserFace) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + return R.ok(sysUserFaceService.page(page, wrapper)); + } + + @Operation(summary = "分页复杂查询", description = "分页复杂查询") + @GetMapping("/page-join") + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") + public R getSysUserFacePageJoin(@ParameterObject Page page, @ParameterObject SysUserFaceDto dto) { + return R.ok(sysUserFaceService.pageJoin(page, dto)); + } + + + /** + * 通过id查询人脸样本表 + * + * @param id id + * @return R + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_view')") + public R getById(@PathVariable("id") Long id) { + return R.ok(sysUserFaceService.getById(id)); + } + + /** + * 新增人脸样本表 + * + * @param sysUserFace 人脸样本表 + * @return R + */ + @Operation(summary = "新增人脸样本表", description = "新增人脸样本表") + @SysLog("新增人脸样本表") + @PostMapping + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_add')") + public R save(@RequestBody SysUserFaceEntity sysUserFace) { + return R.ok(sysUserFaceService.create(sysUserFace)); + } + + /** + * 修改人脸样本表 + * + * @param sysUserFace 人脸样本表 + * @return R + */ + @Operation(summary = "修改人脸样本表", description = "修改人脸样本表") + @SysLog("修改人脸样本表") + @PutMapping + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_edit')") + public R updateById(@RequestBody SysUserFaceEntity sysUserFace) { + sysUserFaceService.edit(sysUserFace); + return R.ok(true); + } + + /** + * 通过id删除人脸样本表 + * + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除人脸样本表", description = "通过id删除人脸样本表") + @SysLog("通过id删除人脸样本表") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_del')") + public R removeById(@RequestBody Long[] ids) { + sysUserFaceService.delByIds(CollUtil.toList(ids)); + return R.ok(true); + } + + + /** + * 导出excel 表格 + * + * @param sysUserFace 查询条件 + * @param ids 导出指定ID + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('userFace_sysUserFace_export')") + public List export(SysUserFaceEntity sysUserFace, Long[] ids) { + return sysUserFaceService.list(Wrappers.lambdaQuery(sysUserFace).in(ArrayUtil.isNotEmpty(ids), SysUserFaceEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysUserFaceMapper.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysUserFaceMapper.java new file mode 100644 index 000000000..33f99d236 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/mapper/SysUserFaceMapper.java @@ -0,0 +1,25 @@ +package com.bsd.pjcloud.admin.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.dto.SysUserFaceDto; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo; +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysUserFaceMapper extends PjcloudBaseMapper { + + default IPage pageJoin(Page page, SysUserFaceDto dto) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(SysUserFaceEntity.class) + .selectAs(SysUser::getName, SysUserFaceVo::getUsername) + .leftJoin(SysUser.class, SysUser::getUserId, SysUserFaceEntity::getUserId) + .eqIfExists(SysUserFaceEntity::getUserId, dto.getUserId()); + return selectJoinPage(page, SysUserFaceVo.class, wrapper); + } + +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserFaceService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserFaceService.java new file mode 100644 index 000000000..b6512f86b --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserFaceService.java @@ -0,0 +1,22 @@ +package com.bsd.pjcloud.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.admin.api.dto.SysUserFaceDto; +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo; + +import java.util.ArrayList; + +public interface SysUserFaceService extends IService { + + + Long create(SysUserFaceEntity sysUserFace); + + void edit(SysUserFaceEntity sysUserFace); + + void delByIds(ArrayList list); + + IPage pageJoin(Page page, SysUserFaceDto dto); +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserFaceServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserFaceServiceImpl.java new file mode 100644 index 000000000..ced4c5144 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserFaceServiceImpl.java @@ -0,0 +1,57 @@ +package com.bsd.pjcloud.admin.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bsd.pjcloud.admin.api.dto.SysUserFaceDto; +import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity; +import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo; +import com.bsd.pjcloud.admin.mapper.SysUserFaceMapper; +import com.bsd.pjcloud.admin.service.SysUserFaceService; +import com.bsd.pjcloud.common.core.exception.CheckedException; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * 人脸样本表 + * + * @author pjcloud + * @date 2024-12-31 11:20:04 + */ +@Service +public class SysUserFaceServiceImpl extends ServiceImpl implements SysUserFaceService { + + @Override + public Long create(SysUserFaceEntity sysUserFace) { + // 插入 + baseMapper.insert(sysUserFace); + + return sysUserFace.getId(); + } + + @Override + public void edit(SysUserFaceEntity sysUserFace) { + SysUserFaceEntity userFace = baseMapper.selectById(sysUserFace.getId()); + if (userFace == null) { + throw new CheckedException("人脸样本表不存在"); + } + baseMapper.selectById(userFace.getUserId()); + } + + @Override + public void delByIds(ArrayList list) { + if (ObjectUtil.isEmpty(list)) return; + baseMapper.deleteBatchIds(list); + list.forEach(v -> { + // 发送mq给硬件设备 + }); + } + + @Override + public IPage pageJoin(Page page, SysUserFaceDto dto) { + return baseMapper.pageJoin(page, dto); + } +} \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserFaceMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserFaceMapper.xml new file mode 100644 index 000000000..3b3e8af33 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserFaceMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file