feat:人脸同步

This commit is contained in:
dzc committed 2025-01-14 14:03:37 +08:00
1 parent b5262330a6
commit a49b913e9f
8 files changed
+70 -34

No files matched your search

@@ -38,7 +38,7 @@ public class HardManagerEntity extends Model<HardManagerEntity> {
private Long merchantId;
/**
* 商家部门id
* 部门id
*/
@Schema(description="商家部门id")
private Long deptId;
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.hard.api.dto.HardInvoiceDto;
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
@@ -31,16 +33,16 @@ import java.util.List;
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/hard-manager" )
@Tag(description = "hard-manager" , name = "设备管理管理" )
@RequestMapping("/hard-manager")
@Tag(description = "hard-manager", name = "设备管理管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class HardManagerController {
private final HardManagerService hardManagerService;
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')" )
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')")
public R getHardManagerPage(@ParameterObject Page page, @ParameterObject HardManagerEntity hardManager) {
LambdaQueryWrapper<HardManagerEntity> wrapper = Wrappers.lambdaQuery();
return R.ok(hardManagerService.page(page, wrapper));
@@ -53,42 +55,43 @@ public class HardManagerController {
return R.ok(hardManagerService.scopePageList(page, dto));
}
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')" )
public R getById(@PathVariable("id" ) Long id) {
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('hard_hardManager_view')")
public R getById(@PathVariable("id") Long id) {
return R.ok(hardManagerService.getById(id));
}
@Operation(summary = "新增设备管理" , description = "新增设备管理" )
@SysLog("新增设备管理" )
@Operation(summary = "新增设备管理", description = "新增设备管理")
@SysLog("新增设备管理")
@PostMapping
@PreAuthorize("@pms.hasPermission('hard_hardManager_add')" )
@PreAuthorize("@pms.hasPermission('hard_hardManager_add')")
public R save(@RequestBody HardManagerDto dto) {
return R.ok(hardManagerService.create(dto));
PjcloudUser user = SecurityUtils.getUser();
return R.ok(hardManagerService.create(dto, user));
}
@Operation(summary = "修改设备管理" , description = "修改设备管理" )
@SysLog("修改设备管理" )
@Operation(summary = "修改设备管理", description = "修改设备管理")
@SysLog("修改设备管理")
@PutMapping
@PreAuthorize("@pms.hasPermission('hard_hardManager_edit')" )
@PreAuthorize("@pms.hasPermission('hard_hardManager_edit')")
public R updateById(@RequestBody HardManagerDto dto) {
hardManagerService.edit(dto);
return R.ok();
}
@Operation(summary = "通过id删除设备管理" , description = "通过id删除设备管理" )
@SysLog("通过id删除设备管理" )
@Operation(summary = "通过id删除设备管理", description = "通过id删除设备管理")
@SysLog("通过id删除设备管理")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('hard_hardManager_del')" )
@PreAuthorize("@pms.hasPermission('hard_hardManager_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(hardManagerService.removeBatchByIds(CollUtil.toList(ids)));
}
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('hard_hardManager_export')" )
public List<HardManagerEntity> export(HardManagerEntity hardManager,Long[] ids) {
@PreAuthorize("@pms.hasPermission('hard_hardManager_export')")
public List<HardManagerEntity> export(HardManagerEntity hardManager, Long[] ids) {
return hardManagerService.list(Wrappers.lambdaQuery(hardManager).in(ArrayUtil.isNotEmpty(ids), HardManagerEntity::getId, ids));
}
}
@@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
@@ -13,7 +14,7 @@ public interface HardManagerService extends IService<HardManagerEntity> {
Page<HardManagerVo> scopePageList(Page page, HardManagerDto dto);
Long create(HardManagerDto dto);
Long create(HardManagerDto dto, PjcloudUser user);
void edit(HardManagerDto dto);
@@ -10,6 +10,7 @@ import com.bsd.pjcloud.admin.api.utils.DataUtil;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
@@ -98,10 +99,10 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
}
@Override
public Long create(HardManagerDto dto) {
public Long create(HardManagerDto dto, PjcloudUser user) {
R<MchManageVo> mch = mchService.getById(dto.getMerchantId());
Long deptId = Optional.of(mch).map(R::getData).map(MchManageVo::getDeptId).orElseThrow(() -> new RuntimeException("商户不存在"));
dto.setDeptId(deptId);
Long mchDeptId = Optional.of(mch).map(R::getData).map(MchManageVo::getDeptId).orElseThrow(() -> new RuntimeException("商户不存在"));
dto.setDeptId(user.getDeptId());
// mq地址和端口
dto.setMqSocketAddress(mqttConfig.getAndroidAddress());
dto.setMqSocketPort(mqttConfig.getAndroidPort());
@@ -109,13 +110,13 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
baseMapper.insert(dto);
// topic
HardManagerEntity updateObj = HardManagerEntity.builder().id(dto.getId()).build();
String topic = createMqConfigByAction(dto.getDeptId(), null, 1) + "/#";
String topic = createMqConfigByAction(mchDeptId, null, 1) + "/#";
updateObj.setMainTopic(topic);
// client id
String clientId = createMqConfigByAction(dto.getDeptId(), dto.getId(), 2);
String clientId = createMqConfigByAction(mchDeptId, dto.getId(), 2);
updateObj.setMqClientId(clientId);
// username TODO 密码9位随机数字加字母
String mqUsername = createMqConfigByAction(dto.getDeptId(), dto.getId(), 3);
String mqUsername = createMqConfigByAction(mchDeptId, dto.getId(), 3);
updateObj.setMqUsername(mqUsername);
updateObj.setMqPassword(RandomUtil.randomString(9));
baseMapper.updateById(updateObj);
@@ -128,6 +129,19 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
if (ObjectUtil.isEmpty(detail)) {
throw new RuntimeException("设备不存在");
}
R<MchManageVo> mch = mchService.getById(dto.getMerchantId());
Long mchDeptId = Optional.of(mch).map(R::getData).map(MchManageVo::getDeptId).orElseThrow(() -> new RuntimeException("商户不存在"));
if (!ObjectUtil.equals(dto.getMerchantId(), detail.getMerchantId())) {
// topic
String topic = createMqConfigByAction(mchDeptId, null, 1) + "/#";
dto.setMainTopic(topic);
// client id
String clientId = createMqConfigByAction(mchDeptId, dto.getId(), 2);
dto.setMqClientId(clientId);
// username TODO 密码9位随机数字加字母
String mqUsername = createMqConfigByAction(mchDeptId, dto.getId(), 3);
dto.setMqUsername(mqUsername);
}
baseMapper.updateById(dto);
// 更新mq
remoteMqttEventService.sendConfigChangeMsg(detail.getDeptId());
@@ -148,7 +162,10 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
public HardManagerVo getById(Long hardId) {
HardManagerEntity hard = baseMapper.selectById(hardId);
HardManagerVo vo = BeanUtils.toBean(hard, HardManagerVo.class);
vo.setMerchantDeptId(hard.getDeptId());
MchManageVo mch = mchService.getById(hard.getMerchantId()).getData();
if (ObjectUtil.isNotEmpty(mch)) {
vo.setMerchantDeptId(mch.getDeptId());
}
return vo;
}
@@ -12,4 +12,6 @@ public class SysUserFaceDto extends SysUserFaceEntity {
private List<Long> userIds;
private List<Long> deptIds;
}
@@ -85,9 +85,10 @@ public class SysUserFaceController {
/* ************************************* start android start ************************************* */
@Operation(summary = "android查询人脸数据库", description = "android查询人脸数据库")
@GetMapping("/ad/find-face")
public R adFinFace(@ParameterObject Page page, @RequestParam(required = false) Long userId) {
public R adFinFace(@ParameterObject Page page, @RequestParam(required = false) Long userId, @RequestParam(required = false) Long merchantDeptId) {
SysUserFaceDto dto = new SysUserFaceDto();
dto.setUserId(userId);
dto.setMerchantDeptId(merchantDeptId);
return R.ok(sysUserFaceService.pageJoin(page, dto).getRecords());
}
/* ************************************* start android start ************************************* */
@@ -41,10 +41,11 @@ public interface SysUserFaceMapper extends PjcloudBaseMapper<SysUserFaceEntity>
.selectAs(SysUser::getPhone, SysUserFaceVo::getUserMobile)
.selectAs(SysDept::getName, SysUserFaceVo::getDeptName)
.selectAs(SysDept::getDeptId, SysUserFaceVo::getDeptId)
.leftJoin(SysUser.class, SysUser::getUserId, SysUserFaceEntity::getUserId)
.leftJoin(SysDept.class, SysDept::getDeptId, SysUser::getDeptId)
.innerJoin(SysUser.class, SysUser::getUserId, SysUserFaceEntity::getUserId)
.innerJoin(SysDept.class, SysDept::getDeptId, SysUser::getDeptId)
.eq(ObjectUtil.isNotEmpty(dto.getUserId()), SysUserFaceEntity::getUserId, dto.getUserId())
.in(ObjectUtil.isNotEmpty(dto.getUserIds()), SysUserFaceEntity::getUserId, dto.getUserIds());
.in(ObjectUtil.isNotEmpty(dto.getUserIds()), SysUserFaceEntity::getUserId, dto.getUserIds())
.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), SysUser::getDeptId, dto.getDeptIds());
return selectJoinPage(page, SysUserFaceVo.class, wrapper);
}
}
@@ -1,15 +1,18 @@
package com.bsd.pjcloud.admin.service.impl;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.SysDept;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.entity.SysUserFaceEntity;
import com.bsd.pjcloud.admin.api.utils.DataUtil;
import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo;
import com.bsd.pjcloud.admin.mapper.SysUserFaceMapper;
import com.bsd.pjcloud.admin.service.SysDeptService;
import com.bsd.pjcloud.admin.service.SysUserFaceService;
import com.bsd.pjcloud.admin.service.SysUserService;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
@@ -37,6 +40,7 @@ import java.util.List;
public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUserFaceEntity> implements SysUserFaceService {
private final SysUserService sysUserService;
private final SysDeptService sysDeptService;
@Override
public Long create(SysUserFaceEntity sysUserFace) {
@@ -76,6 +80,13 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
@Override
public Page<SysUserFaceVo> pageJoin(Page page, SysUserFaceDto dto) {
if (ObjectUtil.isNotEmpty(dto.getMerchantDeptId())) {
List<SysDept> deptList = sysDeptService.listDescendant(dto.getMerchantDeptId());
if (ObjectUtil.isNotEmpty(deptList)) {
List<Long> deptIds = deptList.stream().map(SysDept::getDeptId).toList();
dto.setDeptIds(deptIds);
}
}
return baseMapper.pageJoin(page, dto);
}