feat:人脸下发
This commit is contained in:
1 parent
a49b913e9f
commit
79be68e8dc
10 files changed
+99
-13
No files matched your search
+1
-1
@@ -58,5 +58,5 @@ public interface RemoteMqttEventService {
|
||||
*/
|
||||
@NoToken
|
||||
@GetMapping("/mqtt/send-face-change-msg")
|
||||
R<Boolean> sendFaceChangeMsg(@RequestParam Long mchDeptId);
|
||||
R<Boolean> sendFaceChangeMsg(@RequestParam List<Long> parentDeptList, @RequestParam Long userId);
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ import com.bsd.pjcloud.mqtt.constant.MqttActionEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MqttBaseDto<T> {
|
||||
public class MqttBaseDto<T extends MqttHardBaseMsg> {
|
||||
// 商户id
|
||||
private Long merchantDeptId;
|
||||
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.bsd.pjcloud.mqtt.dto.hard;
|
||||
|
||||
import com.bsd.pjcloud.mqtt.dto.MqttHardBaseMsg;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HardCustomerMsg extends MqttHardBaseMsg {
|
||||
|
||||
private String userId;
|
||||
|
||||
}
|
||||
@@ -79,6 +79,12 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.bsd</groupId>
|
||||
<artifactId>pjcloud-wallet-api</artifactId>
|
||||
<version>5.7.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<profiles>
|
||||
<profile>
|
||||
|
||||
+18
-3
@@ -5,13 +5,20 @@ import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.mqtt.constant.MqttActionEnum;
|
||||
import com.bsd.pjcloud.mqtt.dto.MqttBaseDto;
|
||||
import com.bsd.pjcloud.mqtt.dto.hard.HardCustomerMsg;
|
||||
import com.bsd.pjcloud.mqtt.service.MqttEventService;
|
||||
import com.bsd.pjcloud.wallet.api.feign.RemoteMchService;
|
||||
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/mqtt")
|
||||
@@ -21,6 +28,8 @@ public class MqttEventController {
|
||||
|
||||
private final MqttEventService mqttEventService;
|
||||
|
||||
private final RemoteMchService remoteMchService;
|
||||
|
||||
@Inner
|
||||
@PostMapping("/send-default-msg")
|
||||
public R<Boolean> sendDefaultMsg(@RequestBody MqttBaseDto dto) {
|
||||
@@ -100,10 +109,16 @@ public class MqttEventController {
|
||||
*/
|
||||
@Inner
|
||||
@GetMapping("/send-face-change-msg")
|
||||
public R<Boolean> sendFaceChangeMsg(@RequestParam Long mchDeptId) {
|
||||
MqttBaseDto dto = new MqttBaseDto<>();
|
||||
dto.setMerchantDeptId(mchDeptId);
|
||||
public R<Boolean> sendFaceChangeMsg(@RequestParam List<Long> parentDeptList, @RequestParam Long userId) {
|
||||
MqttBaseDto dto = new MqttBaseDto();
|
||||
MchManageVo mchDept = remoteMchService.getFirstMch(parentDeptList).getData();
|
||||
if (ObjectUtil.isNotEmpty(mchDept)) {
|
||||
dto.setMerchantDeptId(mchDept.getDeptId());
|
||||
}
|
||||
dto.setAction(MqttActionEnum.FACE);
|
||||
HardCustomerMsg msg = new HardCustomerMsg();
|
||||
msg.setUserId(String.valueOf(userId));
|
||||
dto.setData(msg);
|
||||
return R.ok(mqttEventService.defaultAction(dto));
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -14,8 +14,9 @@ public class MqttEventService {
|
||||
|
||||
private final MqttService mqttService;
|
||||
|
||||
|
||||
public <T extends MqttBaseDto> Boolean defaultAction(T dto) {
|
||||
MqttHardBaseMsg msg = new MqttHardBaseMsg();
|
||||
MqttHardBaseMsg msg = dto.getData();
|
||||
msg.setAction(dto.getAction());
|
||||
mqttService.publish(dto.getQos(), false, dto.getTopic(), JSON.toJSONString(msg));
|
||||
return true;
|
||||
|
||||
@@ -204,6 +204,12 @@
|
||||
<groupId>com.bsd</groupId>
|
||||
<artifactId>pjcloud-common-idempotent</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.bsd</groupId>
|
||||
<artifactId>pjcloud-mqtt-api</artifactId>
|
||||
<version>5.7.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
+9
@@ -68,6 +68,14 @@ public interface SysDeptService extends IService<SysDept> {
|
||||
*/
|
||||
List<SysDept> listDescendant(Long deptId);
|
||||
|
||||
/**
|
||||
* 获得指定部门的所有父部门
|
||||
*
|
||||
* @param deptId 部门编号
|
||||
* @return 父部门列表
|
||||
*/
|
||||
List<SysDept> getParentDeptList(Long deptId);
|
||||
|
||||
/**
|
||||
* 获取部门负责人
|
||||
*
|
||||
@@ -103,6 +111,7 @@ public interface SysDeptService extends IService<SysDept> {
|
||||
|
||||
/**
|
||||
* 根据部门名查询部门
|
||||
*
|
||||
* @param names 部门名
|
||||
* @return
|
||||
*/
|
||||
|
||||
+18
@@ -220,6 +220,24 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
return resDeptList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDept> getParentDeptList(Long deptId) {
|
||||
LinkedList<SysDept> parentList = new LinkedList<>();
|
||||
findParentDeptList(deptId, parentList);
|
||||
return parentList;
|
||||
}
|
||||
|
||||
private void findParentDeptList(Long id, LinkedList<SysDept> parentList) {
|
||||
SysDept currentDept = baseMapper.selectById(id);
|
||||
if (currentDept != null) {
|
||||
parentList.add(currentDept);
|
||||
Long parentId = currentDept.getParentId();
|
||||
if (parentId != null) {
|
||||
findParentDeptList(parentId, parentList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门负责人
|
||||
* <p>
|
||||
|
||||
+27
-7
@@ -1,6 +1,5 @@
|
||||
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;
|
||||
@@ -9,16 +8,14 @@ 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;
|
||||
import com.bsd.pjcloud.common.core.exception.CheckedException;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.mqtt.api.feign.RemoteMqttEventService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -42,6 +39,8 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
private final SysUserService sysUserService;
|
||||
private final SysDeptService sysDeptService;
|
||||
|
||||
private final RemoteMqttEventService remoteMqttEventService;
|
||||
|
||||
@Override
|
||||
public Long create(SysUserFaceEntity sysUserFace) {
|
||||
// 插入
|
||||
@@ -52,6 +51,8 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
updateObj.setId(sysUserFace.getId());
|
||||
updateObj.setAutoCode(String.valueOf(count));
|
||||
baseMapper.updateById(updateObj);
|
||||
// 发送mq
|
||||
sendFaceMq(List.of(sysUserFace.getUserId()));
|
||||
return sysUserFace.getId();
|
||||
}
|
||||
|
||||
@@ -62,15 +63,21 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
throw new CheckedException("人脸样本表不存在");
|
||||
}
|
||||
baseMapper.selectById(userFace.getUserId());
|
||||
// 发送mq
|
||||
sendFaceMq(List.of(sysUserFace.getUserId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delByIds(ArrayList<Long> list) {
|
||||
if (ObjectUtil.isEmpty(list)) return;
|
||||
// 发送mq
|
||||
List<SysUserFaceEntity> faceList = baseMapper.selectList(new LambdaQueryWrapper<SysUserFaceEntity>()
|
||||
.in(SysUserFaceEntity::getId, list)
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(faceList)) {
|
||||
sendFaceMq(faceList.stream().map(SysUserFaceEntity::getUserId).toList());
|
||||
}
|
||||
baseMapper.deleteBatchIds(list);
|
||||
list.forEach(v -> {
|
||||
// 发送mq给硬件设备
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,4 +101,17 @@ public class SysUserFaceServiceImpl extends ServiceImpl<SysUserFaceMapper, SysUs
|
||||
public SysUserFaceVo join(Long id) {
|
||||
return baseMapper.join(id);
|
||||
}
|
||||
|
||||
// 发送mq
|
||||
private void sendFaceMq(List<Long> userIds) {
|
||||
if (ObjectUtil.isEmpty(userIds)) return;
|
||||
List<SysUser> list = sysUserService.list(new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIds));
|
||||
if (ObjectUtil.isEmpty(list)) return;
|
||||
for (SysUser v : list) {
|
||||
List<SysDept> parentDeptList = sysDeptService.getParentDeptList(v.getDeptId());
|
||||
if (ObjectUtil.isEmpty(parentDeptList)) continue;
|
||||
List<Long> deptIds = parentDeptList.stream().map(SysDept::getDeptId).toList();
|
||||
remoteMqttEventService.sendFaceChangeMsg(deptIds, v.getUserId());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user