Переглянути джерело

1.优化会议接口,domain→deviceCode;2.新增会议设备心跳表和接口

fuyuchuan 4 днів тому
батько
коміт
c81ff1620c
18 змінених файлів з 569 додано та 275 видалено
  1. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java
  2. 43 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceHeartbeatController.java
  3. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java
  4. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SignOnOutRequestVO.java
  5. 8 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java
  6. 79 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDeviceHeartbeat.java
  7. 18 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceHeartbeatMapper.java
  8. 17 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceHeartbeatService.java
  9. 50 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceHeartbeatServiceImpl.java
  10. 95 58
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceServiceImpl.java
  11. 12 4
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingFaceServiceImpl.java
  12. 160 154
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java
  13. 37 30
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java
  14. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingDeviceRequestVO.java
  15. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingFaceRequestVO.java
  16. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java
  17. 19 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceHeartbeatMapper.xml
  18. 19 17
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceMapper.xml

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java

@@ -32,7 +32,7 @@ public class MybatisGenerator {
         projectPath+="/"+model;
         gc.setOutputDir(projectPath+ "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
         //修改为自己的名字
-        gc.setAuthor("zyj"); //设置作者
+        gc.setAuthor("fu"); //设置作者
         gc.setOpen(false);
         gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
         gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
@@ -70,7 +70,7 @@ public class MybatisGenerator {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("eg_device");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("meeting_device_heartbeat");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 43 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceHeartbeatController.java

@@ -0,0 +1,43 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.meeting.service.MeetingDeviceHeartbeatService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 会议设备心跳表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@RestController
+@RequestMapping("/meetingDeviceHeartbeat")
+public class MeetingDeviceHeartbeatController {
+    private static final Logger log = LoggerFactory.getLogger(MeetingDeviceHeartbeatController.class);
+    @Autowired
+    private MeetingDeviceHeartbeatService heartbeatService;
+
+    @PostMapping("/escalation")
+    public ApiResult<Void> heartbeatEscalation(@RequestBody MeetingDeviceHeartbeat heartbeat) {
+        try {
+            heartbeatService.heartbeatEscalation(heartbeat);
+        } catch (Exception e) {
+            log.error("设备心跳异常", e);
+            return ApiResult.error("设备心跳入库异常!");
+        }
+        return ApiResult.success();
+    }
+}
+

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java

@@ -145,8 +145,8 @@ public class MeetingRoomController {
     public ApiResult<Map<String,Object>> attendee(@RequestParam(value = "meetingId") Long meetingId,
                                                   @RequestParam(value = "userId") Long userId,
                                                   @RequestParam(value = "userName") String userName,
-                                                  @RequestParam(value = "domain",required = false) String domain){
-        return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName,domain));
+                                                  @RequestParam(value = "deviceCode",required = false) String deviceCode){
+        return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName,deviceCode));
     }
 
     /**

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SignOnOutRequestVO.java

@@ -25,8 +25,8 @@ public class SignOnOutRequestVO {
     private Integer signType;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 
 }

+ 8 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java

@@ -136,5 +136,13 @@ public class MeetingDevice implements Serializable {
     @TableField(exist = false)
     private EgDevice egDevice;
 
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
 
+    /**
+     * 设备IP
+     */
+    private String ipAddr;
 }

+ 79 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDeviceHeartbeat.java

@@ -0,0 +1,79 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议设备心跳表
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingDeviceHeartbeat implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 会议设备心跳表主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备code
+     */
+    private String deviceCode;
+
+    /**
+     * 设备ip地址
+     */
+    private String ipAddr;
+
+    /**
+     * 设备mac地址
+     */
+    private String macAddr;
+
+    /**
+     * 设备类型(1.会议屏 2.信息发布屏 3.综合屏)
+     */
+    private Boolean deviceType;
+
+    /**
+     * 创建日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 设备型号
+     */
+    private String model;
+
+    /**
+     *  设备厂商
+     */
+    private String manuFacturer;
+
+    /**
+     * 设备版本号
+     */
+    private String version;
+
+    /**
+     * 设备sdk
+     */
+    private String sdk;
+
+}

+ 18 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceHeartbeatMapper.java

@@ -0,0 +1,18 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 会议设备心跳表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Repository
+public interface MeetingDeviceHeartbeatMapper extends CrudMapper<MeetingDeviceHeartbeat> {
+
+}

+ 17 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceHeartbeatService.java

@@ -0,0 +1,17 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 会议设备心跳表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+public interface MeetingDeviceHeartbeatService extends CrudService<MeetingDeviceHeartbeat> {
+
+    void heartbeatEscalation(MeetingDeviceHeartbeat heartbeat);
+}

+ 50 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceHeartbeatServiceImpl.java

@@ -0,0 +1,50 @@
+package com.usky.meeting.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.meeting.mapper.MeetingDeviceHeartbeatMapper;
+import com.usky.meeting.service.MeetingDeviceHeartbeatService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 会议设备心跳表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Service
+public class MeetingDeviceHeartbeatServiceImpl extends AbstractCrudService<MeetingDeviceHeartbeatMapper, MeetingDeviceHeartbeat> implements MeetingDeviceHeartbeatService {
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void heartbeatEscalation(MeetingDeviceHeartbeat heartbeat) {
+        if (StringUtils.isBlank(heartbeat.getDeviceCode())) {
+            throw new BusinessException("设备编码不能为空!");
+        }
+        if (StringUtils.isBlank(heartbeat.getIpAddr())) {
+            throw new BusinessException("设备IP不能为空!");
+        }
+        if (heartbeat.getCreateTime() == null) {
+            heartbeat.setCreateTime(LocalDateTime.now());
+        }
+        if (heartbeat.getDeviceType() == null) {
+            throw new BusinessException("设备类型不能为空!");
+        }
+
+        // 删除旧数据
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> deleteWrapper = Wrappers.lambdaQuery();
+        deleteWrapper.eq(MeetingDeviceHeartbeat::getDeviceCode, heartbeat.getDeviceCode());
+        baseMapper.delete(deleteWrapper);
+
+        baseMapper.insert(heartbeat);
+    }
+}

+ 95 - 58
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceServiceImpl.java

@@ -13,11 +13,9 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.RemoteIotTaskService;
-import com.usky.meeting.domain.EgDevice;
-import com.usky.meeting.domain.MeetingDevice;
-import com.usky.meeting.domain.MeetingFloor;
-import com.usky.meeting.domain.MeetingRoom;
+import com.usky.meeting.domain.*;
 import com.usky.meeting.mapper.EgDeviceMapper;
+import com.usky.meeting.mapper.MeetingDeviceHeartbeatMapper;
 import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
 import com.usky.meeting.repository.MeetingRoomRepository;
@@ -54,77 +52,85 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
     private MeetingRoomMapper meetingRoomMapper;
     @Autowired
     private EgDeviceMapper egDeviceMapper;
-    @Autowired
-    private RemoteIotTaskService remoteIotTaskService;
+    // @Autowired
+    // private RemoteIotTaskService remoteIotTaskService;
     @Autowired
     private MeetingRoomRepository dmMeetingRoomRepository;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
+    @Autowired
+    private MeetingDeviceHeartbeatMapper heartbeatMapper;
 
     @Override
-    public CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO){
+    public CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO) {
         Integer current = requestVO.getCurrent();
         Integer size = requestVO.getSize();
-        IPage<MeetingDevice> page = new Page<>(current,size);
-        Integer tenantId ;
+        IPage<MeetingDevice> page = new Page<>(current, size);
 
-        if(StringUtils.isNotBlank(requestVO.getDomain())){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(requestVO.getDomain());
-        }else{
+        String deviceCode = requestVO.getDeviceCode();
+        Integer tenantId;
+
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
-        //根据输入所属会议室名称刷选
+        // 根据输入所属会议室名称刷选
         List<Long> roomIdList = new ArrayList<>();
         List<MeetingRoom> meetingRoomsList = null;
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(requestVO.getRoomName())){
-            queryWrapper.like(MeetingRoom::getRoomName,requestVO.getRoomName()).eq(MeetingRoom::getTenantId,tenantId);
+        if (StringUtils.isNotBlank(requestVO.getRoomName())) {
+            queryWrapper.like(MeetingRoom::getRoomName, requestVO.getRoomName()).eq(MeetingRoom::getTenantId, tenantId);
             meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
-            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+            if (CollectionUtils.isNotEmpty(meetingRoomsList)) {
                 for (int i = 0; i < meetingRoomsList.size(); i++) {
                     roomIdList.add(meetingRoomsList.get(i).getRoomId());
                 }
             }
-        }else{
-            queryWrapper.eq(MeetingRoom::getTenantId,tenantId);
+        } else {
+            queryWrapper.eq(MeetingRoom::getTenantId, tenantId);
             meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
         }
-        //根据输入所属门禁设备名称刷选
+        // 根据输入所属门禁设备名称刷选
         List<Integer> egDeviceIdList = new ArrayList<>();
         List<EgDevice> egDeviceList = null;
         LambdaQueryWrapper<EgDevice> queryWrapper1 = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(requestVO.getEgDeviceName())){
-            queryWrapper1.like(EgDevice::getDeviceName,requestVO.getEgDeviceName()).eq(EgDevice::getTenantId,tenantId);
+        if (StringUtils.isNotBlank(requestVO.getEgDeviceName())) {
+            queryWrapper1.like(EgDevice::getDeviceName, requestVO.getEgDeviceName()).eq(EgDevice::getTenantId, tenantId);
             egDeviceList = egDeviceMapper.selectList(queryWrapper1);
-            if(CollectionUtils.isNotEmpty(egDeviceList)){
+            if (CollectionUtils.isNotEmpty(egDeviceList)) {
                 for (int i = 0; i < egDeviceList.size(); i++) {
                     egDeviceIdList.add(egDeviceList.get(i).getId());
                 }
             }
-        }else{
-            queryWrapper1.eq(EgDevice::getTenantId,tenantId);
+        } else {
+            queryWrapper1.eq(EgDevice::getTenantId, tenantId);
             egDeviceList = egDeviceMapper.selectList(queryWrapper1);
         }
 
         LambdaQueryWrapper<MeetingDevice> queryWrapper3 = Wrappers.lambdaQuery();
-        queryWrapper3.like(StringUtils.isNotBlank(requestVO.getDeviceName()),MeetingDevice::getDeviceName,requestVO.getDeviceName())
-                .like(StringUtils.isNotBlank(requestVO.getNameplate()),MeetingDevice::getNameplate,requestVO.getNameplate())
-                .like(StringUtils.isNotBlank(requestVO.getMaintainer()),MeetingDevice::getMaintainer,requestVO.getMaintainer())
-                .like(StringUtils.isNotBlank(requestVO.getContacts()),MeetingDevice::getContacts,requestVO.getContacts())
-                .like(StringUtils.isNotBlank(requestVO.getRemark()),MeetingDevice::getRemark,requestVO.getRemark())
-                .like(requestVO.getRoomId() != null,MeetingDevice::getRoomId,requestVO.getRoomId())
-                .in(CollectionUtils.isNotEmpty(roomIdList),MeetingDevice::getRoomId,roomIdList)
-                .in(CollectionUtils.isNotEmpty(egDeviceIdList),MeetingDevice::getEgDeviceId,egDeviceIdList)
-                .eq(MeetingDevice::getTenantId,tenantId)
+        queryWrapper3.like(StringUtils.isNotBlank(requestVO.getDeviceName()), MeetingDevice::getDeviceName, requestVO.getDeviceName())
+                .like(StringUtils.isNotBlank(requestVO.getNameplate()), MeetingDevice::getNameplate, requestVO.getNameplate())
+                .like(StringUtils.isNotBlank(requestVO.getMaintainer()), MeetingDevice::getMaintainer, requestVO.getMaintainer())
+                .like(StringUtils.isNotBlank(requestVO.getContacts()), MeetingDevice::getContacts, requestVO.getContacts())
+                .like(StringUtils.isNotBlank(requestVO.getRemark()), MeetingDevice::getRemark, requestVO.getRemark())
+                .like(requestVO.getRoomId() != null, MeetingDevice::getRoomId, requestVO.getRoomId())
+                .in(CollectionUtils.isNotEmpty(roomIdList), MeetingDevice::getRoomId, roomIdList)
+                .in(CollectionUtils.isNotEmpty(egDeviceIdList), MeetingDevice::getEgDeviceId, egDeviceIdList)
+                .eq(MeetingDevice::getTenantId, tenantId)
                 .orderByAsc(MeetingDevice::getDeviceUuid);
-        page = this.page(page,queryWrapper3);
-        if(page.getRecords().size()>0){
+        page = this.page(page, queryWrapper3);
+        if (page.getRecords().size() > 0) {
 
-            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+            if (CollectionUtils.isNotEmpty(meetingRoomsList)) {
                 for (int i = 0; i < page.getRecords().size(); i++) {
-                    if(Objects.nonNull(page.getRecords().get(i).getRoomId())){
+                    if (Objects.nonNull(page.getRecords().get(i).getRoomId())) {
                         Long RId = Long.valueOf(page.getRecords().get(i).getRoomId());
                         for (int j = 0; j < meetingRoomsList.size(); j++) {
-                            if(RId.equals(meetingRoomsList.get(j).getRoomId())){
+                            if (RId.equals(meetingRoomsList.get(j).getRoomId())) {
                                 page.getRecords().get(i).setMeetingRoom(meetingRoomsList.get(j));
                                 break;
                             }
@@ -134,12 +140,12 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(egDeviceList)){
+            if (CollectionUtils.isNotEmpty(egDeviceList)) {
                 for (int i = 0; i < page.getRecords().size(); i++) {
-                    if(Objects.nonNull(page.getRecords().get(i).getEgDeviceId())){
+                    if (Objects.nonNull(page.getRecords().get(i).getEgDeviceId())) {
                         Integer egDeviceId = page.getRecords().get(i).getEgDeviceId();
                         for (int j = 0; j < egDeviceList.size(); j++) {
-                            if(egDeviceId.equals(egDeviceList.get(j).getId())){
+                            if (egDeviceId.equals(egDeviceList.get(j).getId())) {
                                 page.getRecords().get(i).setEgDevice(egDeviceList.get(j));
                                 break;
                             }
@@ -150,50 +156,81 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
             }
         }
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),size,current);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), size, current);
     }
 
     @Override
-    public void add(MeetingDevice meetingDevice){
-        if(checkNameUnique(meetingDevice)){
-            throw new BusinessException("新增会议室设备失败,"+meetingDevice.getDeviceName()+"已经存在");
+    public void add(MeetingDevice meetingDevice) {
+        if (checkNameUnique(meetingDevice)) {
+            throw new BusinessException("新增会议室设备失败," + meetingDevice.getDeviceName() + "已经存在");
         }
 //        Snowflake snowflake = IdUtil.createSnowflake(1,1);
 //        meetingDevice.setDeviceId(snowflake.nextId());
+        LocalDateTime now = LocalDateTime.now();
         meetingDevice.setCreateBy(SecurityUtils.getUsername());
-        meetingDevice.setCreateTime(LocalDateTime.now());
+        meetingDevice.setCreateTime(now);
         meetingDevice.setTenantId(SecurityUtils.getTenantId());
+
+        String ipAddr = meetingDevice.getIpAddr();
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(MeetingDeviceHeartbeat::getIpAddr, ipAddr);
+        MeetingDeviceHeartbeat meetingDeviceHeartbeat = heartbeatMapper.selectOne(queryWrapper);
+        if (meetingDeviceHeartbeat == null) {
+            throw new BusinessException("设备离线!请重新输入");
+        } else {
+            LocalDateTime createTime = meetingDeviceHeartbeat.getCreateTime();
+            if (createTime.isAfter(now) || !createTime.plusMinutes(6).isAfter(now)) {
+                throw new BusinessException("设备离线!请重新输入");
+            }
+        }
+        meetingDevice.setDeviceCode(meetingDeviceHeartbeat.getDeviceCode());
+
         this.save(meetingDevice);
 
-        remoteIotTaskService.addDeviceInfo("505_USKY", meetingDevice.getDeviceUuid().toString(),"",meetingDevice.getDeviceName(),meetingDevice.getInstallAddress(),1);
+        // remoteIotTaskService.addDeviceInfo("505_USKY", meetingDevice.getDeviceUuid().toString(), "", meetingDevice.getDeviceName(), meetingDevice.getInstallAddress(), 1);
     }
 
     @Override
-    public void edit(MeetingDevice meetingDevice){
-        if(checkNameUnique(meetingDevice)){
-            throw new BusinessException("修改会议室设备失败,"+meetingDevice.getDeviceName()+"已经存在");
+    public void edit(MeetingDevice meetingDevice) {
+        LocalDateTime now = LocalDateTime.now();
+        if (checkNameUnique(meetingDevice)) {
+            throw new BusinessException("修改会议室设备失败," + meetingDevice.getDeviceName() + "已经存在");
         }
         meetingDevice.setUpdateBy(SecurityUtils.getUsername());
-        meetingDevice.setUpdateTime(LocalDateTime.now());
+        meetingDevice.setUpdateTime(now);
+
+        String ipAddr = meetingDevice.getIpAddr();
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(MeetingDeviceHeartbeat::getIpAddr, ipAddr);
+        MeetingDeviceHeartbeat meetingDeviceHeartbeat = heartbeatMapper.selectOne(queryWrapper);
+        if (meetingDeviceHeartbeat == null) {
+            throw new BusinessException("设备离线!请重新输入");
+        } else {
+            LocalDateTime createTime = meetingDeviceHeartbeat.getCreateTime();
+            if (createTime.isAfter(now) || !createTime.plusMinutes(6).isAfter(now)) {
+                throw new BusinessException("设备离线!请重新输入");
+            }
+        }
+        meetingDevice.setDeviceCode(meetingDeviceHeartbeat.getDeviceCode());
 
         this.updateById(meetingDevice);
     }
 
     @Override
-    public void remove(Long deviceId){
+    public void remove(Long deviceId) {
         MeetingDevice meetingDevice = this.getById(deviceId);
         Optional.ofNullable(meetingDevice).orElseThrow(() -> new BusinessException("该会议室设备不存在"));
         this.removeById(deviceId);
 
-        remoteIotTaskService.deleteDeviceInfo(deviceId.toString());
+        // remoteIotTaskService.deleteDeviceInfo(deviceId.toString());
     }
 
-    public boolean checkNameUnique(MeetingDevice meetingDevice){
-        Long deviceId = null == meetingDevice.getDeviceUuid()?-1:meetingDevice.getDeviceUuid();
+    public boolean checkNameUnique(MeetingDevice meetingDevice) {
+        Long deviceId = null == meetingDevice.getDeviceUuid() ? -1 : meetingDevice.getDeviceUuid();
         LambdaQueryWrapper<MeetingDevice> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingDevice::getDeviceName,meetingDevice.getDeviceName())
-                .eq(MeetingDevice::getTenantId,SecurityUtils.getTenantId());
+        queryWrapper.eq(MeetingDevice::getDeviceName, meetingDevice.getDeviceName())
+                .eq(MeetingDevice::getTenantId, SecurityUtils.getTenantId());
         MeetingDevice one = this.getOne(queryWrapper);
-        return null != one && !Objects.equals(one.getDeviceUuid(),deviceId);
+        return null != one && !Objects.equals(one.getDeviceUuid(), deviceId);
     }
 }

+ 12 - 4
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingFaceServiceImpl.java

@@ -1,14 +1,18 @@
 package com.usky.meeting.service.impl;
 
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meet.utils.JwtUtils;
 import com.usky.meet.utils.TimeUtils;
+import com.usky.meeting.domain.MeetingDevice;
 import com.usky.meeting.domain.MeetingFace;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingFaceMapper;
 import com.usky.meeting.repository.MeetingRoomRepository;
 import com.usky.meeting.server.FaceContrastServer;
+import com.usky.meeting.service.MeetingDeviceService;
 import com.usky.meeting.service.MeetingFaceService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.meeting.service.vo.FaceResultVO;
@@ -37,14 +41,18 @@ public class MeetingFaceServiceImpl extends AbstractCrudService<MeetingFaceMappe
     FaceContrastServer faceContrastServer;
     @Autowired
     private MeetingRoomRepository dmMeetingRoomRepository;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public MeetingFaceVO vef(MeetingFaceRequestVO requestVO) {
 
-        String domain = requestVO.getDomain();
+        String deviceCode = requestVO.getDeviceCode();
         Integer tenantId;
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
+        if(StringUtils.isNotBlank(deviceCode)){
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode,requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
         }else{
             tenantId = SecurityUtils.getTenantId();
         }
@@ -55,7 +63,7 @@ public class MeetingFaceServiceImpl extends AbstractCrudService<MeetingFaceMappe
         faceState.setTenantId(tenantId);
         faceState1.setTenantId(tenantId);
         // 如果人脸库为空,则第一次登录为录入人脸
-        if (faceList.size() > 0){
+        if (!faceList.isEmpty()){
             //人脸校验
             if(StringUtils.isNotBlank(requestVO.getImageBase())){
                 int faceLength = faceList.size();

+ 160 - 154
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java

@@ -24,6 +24,7 @@ import com.usky.common.core.util.DateUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meeting.controller.web.SignOnOutRequestVO;
 import com.usky.meeting.domain.*;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingFloorMapper;
 import com.usky.meeting.mapper.MeetingInfoMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
@@ -91,6 +92,8 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     private MeetingFloorMapper meetingFloorMapper;
     @Autowired
     private MeetingFileService meetingFileService;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public Map<String, Object> meetingSummary(Integer tenantId) {
@@ -98,8 +101,8 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public Map<String, Object> meetingSummaryByYear(String year,Integer tenantId) {
-        return dmMeetingRepository.meetingSummaryByYear(year,tenantId);
+    public Map<String, Object> meetingSummaryByYear(String year, Integer tenantId) {
+        return dmMeetingRepository.meetingSummaryByYear(year, tenantId);
     }
 
     @Override
@@ -112,32 +115,32 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         Date date = dtf.parse(dayTime);
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
-        //获取日期中得年
-        Integer year= cal.get(Calendar.YEAR);
-        System.out.println("year:"+year);
-        //获取日期中得月
-        Integer month= (cal.get(Calendar.MONTH) + 1);
-        System.out.println("month:"+month);
-        //获取日期中得日
-        Integer day= Integer.valueOf(String.format("%td", date));
-        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId,year,month,day,tenantId);
+        // 获取日期中得年
+        Integer year = cal.get(Calendar.YEAR);
+        System.out.println("year:" + year);
+        // 获取日期中得月
+        Integer month = (cal.get(Calendar.MONTH) + 1);
+        System.out.println("month:" + month);
+        // 获取日期中得日
+        Integer day = Integer.valueOf(String.format("%td", date));
+        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId, year, month, day, tenantId);
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
-        sysUserQuery.eq(SysUser::getTenantId,tenantId);
+        sysUserQuery.eq(SysUser::getTenantId, tenantId);
         List<SysUser> userList = sysUserService.list(sysUserQuery);
-        if(userList.size() <= 0){
+        if (userList.size() <= 0) {
             throw new BusinessException("用户信息不能为空");
         }
 
-        if(!ObjectUtil.isEmpty(dmMeetings)){
-            for(MeetingInfo dmMeeting : dmMeetings){
-                //参会人员信息
+        if (!ObjectUtil.isEmpty(dmMeetings)) {
+            for (MeetingInfo dmMeeting : dmMeetings) {
+                // 参会人员信息
                 List<SysUser> attendeeUserList = new ArrayList<>();
-                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(),null, tenantId);
-                if(attendeeList.size() > 0){
+                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(), null, tenantId);
+                if (attendeeList.size() > 0) {
                     for (int i = 0; i < attendeeList.size(); i++) {
                         Long uid = attendeeList.get(i).getUserId();
                         for (int j = 0; j < userList.size(); j++) {
-                            if(uid.equals(userList.get(j).getUserId())){
+                            if (uid.equals(userList.get(j).getUserId())) {
                                 attendeeUserList.add(userList.get(j));
                                 break;
                             }
@@ -145,9 +148,9 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     }
                 }
                 dmMeeting.setUsers(attendeeUserList);
-                //发起人信息
+                // 发起人信息
                 for (int i = 0; i < userList.size(); i++) {
-                    if(userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))){
+                    if (userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))) {
                         dmMeeting.setInitiatorUser(userList.get(i));
                         break;
                     }
@@ -161,7 +164,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                 Date meetingStartDate = new Date(meetingStartTimestamp.getTime());
                 Calendar meetingStartCal = Calendar.getInstance();
                 meetingStartCal.setTime(meetingStartDate);
-                if(cal.get(Calendar.YEAR) == meetingStartCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingStartCal.get(Calendar.DAY_OF_YEAR)) {
+                if (cal.get(Calendar.YEAR) == meetingStartCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingStartCal.get(Calendar.DAY_OF_YEAR)) {
                     int meetingStartHours = meetingStartDate.getHours();
                     meetingStartNumber = meetingStartNumber + meetingStartHours;
                     int meetingStartMinutes = meetingStartDate.getMinutes();
@@ -177,7 +180,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                 Date meetingEndDate = new Date(meetingEndTimestamp.getTime());
                 Calendar meetingEndCal = Calendar.getInstance();
                 meetingEndCal.setTime(meetingEndDate);
-                if(cal.get(Calendar.YEAR) == meetingEndCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingEndCal.get(Calendar.DAY_OF_YEAR)) {
+                if (cal.get(Calendar.YEAR) == meetingEndCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingEndCal.get(Calendar.DAY_OF_YEAR)) {
                     int meetingEndHours = meetingEndDate.getHours();
                     meetingEndNumber = meetingEndNumber + meetingEndHours;
                     int meetingEndMinutes = meetingEndDate.getMinutes();
@@ -207,10 +210,10 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         System.out.println("date:" + date);
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
-        //获取日期中得年
+        // 获取日期中得年
         Integer year = cal.get(Calendar.YEAR);
         System.out.println("year:" + year);
-        //获取日期中得月
+        // 获取日期中得月
         Integer month = (cal.get(Calendar.MONTH) + 1);
         System.out.println("month:" + month);
 
@@ -228,7 +231,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     set.add(startDay);
                     // 设置日期
                     calendar.setTime(startDate);
-                    //把日期增加一天
+                    // 把日期增加一天
                     calendar.add(Calendar.DATE, 1);
                     // 获取增加后的日期
                     startDate = calendar.getTime();
@@ -249,7 +252,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         if (meetingMode.equals("1")) {
 
         } else if (meetingMode.equals("0") || meetingMode.equals("2")) {
-            //判断指定会议室预约的时间是否与存在的预约单冲突
+            // 判断指定会议室预约的时间是否与存在的预约单冲突
             List<Map<String, String>> dmMeetingList = dmMeetingRepository.checkDmRoomMeetingDate(resources.getRoom().getRoomId(), resources.getStartDate(), resources.getEndDate(), resources.getMeetingId());
             if (dmMeetingList != null && dmMeetingList.size() > 0) {
                 throw new BusinessException("预约时间段冲突,请重设预约时间");
@@ -278,9 +281,9 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         MeetingInfo meeting = this.toEntity(resources);
         this.save(meeting);
 
-        //循环保存会议id和会议文件记录到会议文件表中
+        // 循环保存会议id和会议文件记录到会议文件表中
         Long meetingId = meeting.getMeetingId();
-        if(!ObjectUtils.isEmpty(resources.getMeetingFileList())){
+        if (!ObjectUtils.isEmpty(resources.getMeetingFileList())) {
             for (MeetingFile meetingFile : resources.getMeetingFileList()) {
                 meetingFile.setMeetingId(meetingId);
                 meetingFile.setUploadUser(SecurityUtils.getUsername());
@@ -291,7 +294,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         }
 
         if (!ObjectUtils.isEmpty(resources.getUsers())) {
-            for(SysUser dmUser : resources.getUsers()){
+            for (SysUser dmUser : resources.getUsers()) {
                 MeetingAttendee meetingAttendee = new MeetingAttendee();
                 meetingAttendee.setMeetingId(meeting.getMeetingId());
                 meetingAttendee.setUserId(dmUser.getUserId());
@@ -304,23 +307,23 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public CommonPage<MeetingInfo> meetingInfoList(MeetingInfoRequestVO requestVO){
-        Page<MeetingInfo> page = new Page<>(requestVO.getCurrent(),requestVO.getSize());
+    public CommonPage<MeetingInfo> meetingInfoList(MeetingInfoRequestVO requestVO) {
+        Page<MeetingInfo> page = new Page<>(requestVO.getCurrent(), requestVO.getSize());
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
 
-        if(StringUtils.isNotBlank(requestVO.getName())){
+        if (StringUtils.isNotBlank(requestVO.getName())) {
             List<String> initiatorIdList = new ArrayList<>();
             LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
-            sysUserQuery.like(SysUser::getNickName,requestVO.getName())
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+            sysUserQuery.like(SysUser::getNickName, requestVO.getName())
+                    .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
             List<SysUser> userList = sysUserService.list(sysUserQuery);
-            if(userList.size() > 0){
+            if (userList.size() > 0) {
                 for (int i = 0; i < userList.size(); i++) {
                     initiatorIdList.add(userList.get(i).getUserId().toString());
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(initiatorIdList)) {
+            if (CollectionUtils.isNotEmpty(initiatorIdList)) {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                         .in(MeetingInfo::getInitiatorId, initiatorIdList)
                         .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
@@ -329,7 +332,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                         .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getEndDate, requestVO.getStartDate(), requestVO.getEndDate())
                         .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingInfo::getMeetingId);
-            }else{
+            } else {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                         .in(MeetingInfo::getInitiatorId, "")
                         .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
@@ -339,7 +342,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                         .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingInfo::getMeetingId);
             }
-        }else{
+        } else {
             queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                     .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
                     .eq(null != requestVO.getApproveStatus(), MeetingInfo::getApproveStatus, requestVO.getApproveStatus())
@@ -349,46 +352,46 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     .orderByDesc(MeetingInfo::getMeetingId);
         }
 
-        page = this.page(page,queryWrapper);
-        if(page.getRecords().size() > 0){
+        page = this.page(page, queryWrapper);
+        if (page.getRecords().size() > 0) {
             List<Long> roomIdList = new ArrayList<>();
             List<Long> initIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
-                if(!roomIdList.contains(page.getRecords().get(i).getRoomId())){
+                if (!roomIdList.contains(page.getRecords().get(i).getRoomId())) {
                     roomIdList.add(page.getRecords().get(i).getRoomId());
                 }
-                if(!initIdList.contains(page.getRecords().get(i).getInitiatorId())){
+                if (!initIdList.contains(page.getRecords().get(i).getInitiatorId())) {
                     initIdList.add(Long.valueOf(page.getRecords().get(i).getInitiatorId()));
                 }
             }
-            //房间以及对应楼层信息
-            if(roomIdList.size() > 0){
+            // 房间以及对应楼层信息
+            if (roomIdList.size() > 0) {
                 LambdaQueryWrapper<MeetingRoom> meetingRoomQuery = Wrappers.lambdaQuery();
-                meetingRoomQuery.in(MeetingRoom::getRoomId,roomIdList)
-                        .eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId())
-                        .eq(MeetingRoom::getStatus,0);
+                meetingRoomQuery.in(MeetingRoom::getRoomId, roomIdList)
+                        .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
+                        .eq(MeetingRoom::getStatus, 0);
                 List<MeetingRoom> meetingRoomList = meetingRoomMapper.selectList(meetingRoomQuery);
 
                 List<Long> floorIdList = new ArrayList<>();
-                if(meetingRoomList.size() > 0){
+                if (meetingRoomList.size() > 0) {
                     for (int i = 0; i < meetingRoomList.size(); i++) {
-                        if(!floorIdList.contains(meetingRoomList.get(i).getFloorId())){
+                        if (!floorIdList.contains(meetingRoomList.get(i).getFloorId())) {
                             floorIdList.add(meetingRoomList.get(i).getFloorId());
                         }
                     }
                     LambdaQueryWrapper<MeetingFloor> floorWrapper = Wrappers.lambdaQuery();
-                    floorWrapper.in(MeetingFloor::getFloorId,floorIdList)
-                            .eq(MeetingFloor::getTenantId,SecurityUtils.getTenantId());
+                    floorWrapper.in(MeetingFloor::getFloorId, floorIdList)
+                            .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
                     List<MeetingFloor> meetingFloorList = meetingFloorMapper.selectList(floorWrapper);
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < meetingRoomList.size(); j++) {
-                            if(page.getRecords().get(i).getRoomId().equals(meetingRoomList.get(j).getRoomId())){
+                            if (page.getRecords().get(i).getRoomId().equals(meetingRoomList.get(j).getRoomId())) {
                                 page.getRecords().get(i).setRoomInfo(meetingRoomList.get(j));
                                 break;
                             }
                         }
                         for (int j = 0; j < meetingFloorList.size(); j++) {
-                            if(page.getRecords().get(i).getRoomInfo().getFloorId().equals(meetingFloorList.get(j).getFloorId())){
+                            if (page.getRecords().get(i).getRoomInfo().getFloorId().equals(meetingFloorList.get(j).getFloorId())) {
                                 page.getRecords().get(i).getRoomInfo().setMeetingFloor(meetingFloorList.get(j));
                                 break;
                             }
@@ -396,16 +399,16 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     }
                 }
             }
-            //发起人信息
-            if(initIdList.size() > 0){
+            // 发起人信息
+            if (initIdList.size() > 0) {
                 LambdaQueryWrapper<SysUser> initIdQuery = Wrappers.lambdaQuery();
-                initIdQuery.in(SysUser::getUserId,initIdList)
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+                initIdQuery.in(SysUser::getUserId, initIdList)
+                        .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
                 List<SysUser> userList = sysUserService.list(initIdQuery);
-                if(userList.size() > 0){
+                if (userList.size() > 0) {
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < userList.size(); j++) {
-                            if(page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())){
+                            if (page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())) {
                                 page.getRecords().get(i).setInitiatorUser(userList.get(j));
                                 break;
                             }
@@ -418,11 +421,11 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         }
 
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),requestVO.getSize(),requestVO.getCurrent());
+        return new CommonPage<>(page.getRecords(), page.getTotal(), requestVO.getSize(), requestVO.getCurrent());
     }
 
     @Override
-    public void cancel(Long meetingId){
+    public void cancel(Long meetingId) {
         MeetingInfo one = this.getById(meetingId);
         one.setIsCancel(1);
         one.setMeetingStatus(2);
@@ -430,10 +433,10 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO){
+    public CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO) {
         Integer current = requestVO.getCurrent();
         Integer size = requestVO.getSize();
-        Page<MeetingInfo> page = new Page<>(current,size);
+        Page<MeetingInfo> page = new Page<>(current, size);
 
         Long userId = SecurityUtils.getUserId();
         List<BigInteger> meetingIdList = new ArrayList<>();
@@ -446,34 +449,34 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
             meetingIds.add(bigInteger.longValue());
         }
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.in(CollectionUtils.isNotEmpty(meetingIds),MeetingInfo::getMeetingId,meetingIds)
-                .eq(MeetingInfo::getIsCancel,0)
-                .like(StringUtils.isNotBlank(requestVO.getMeetingName()),MeetingInfo::getMeetingName,requestVO.getMeetingName())
-                .like(StringUtils.isNotBlank(requestVO.getMeetingDescribe()),MeetingInfo::getMeetingDescribe,requestVO.getMeetingDescribe())
-                .eq(null != requestVO.getMeetingMode(),MeetingInfo::getMeetingMode,requestVO.getMeetingMode())
-                .eq(null != requestVO.getMeetingStatus(),MeetingInfo::getMeetingStatus,requestVO.getMeetingStatus())
-                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getStartDate,requestVO.getStartDate(),requestVO.getEndDate())
-                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getEndDate,requestVO.getStartDate(),requestVO.getEndDate())
-                .eq(MeetingInfo::getTenantId,SecurityUtils.getTenantId())
+        queryWrapper.in(CollectionUtils.isNotEmpty(meetingIds), MeetingInfo::getMeetingId, meetingIds)
+                .eq(MeetingInfo::getIsCancel, 0)
+                .like(StringUtils.isNotBlank(requestVO.getMeetingName()), MeetingInfo::getMeetingName, requestVO.getMeetingName())
+                .like(StringUtils.isNotBlank(requestVO.getMeetingDescribe()), MeetingInfo::getMeetingDescribe, requestVO.getMeetingDescribe())
+                .eq(null != requestVO.getMeetingMode(), MeetingInfo::getMeetingMode, requestVO.getMeetingMode())
+                .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getStartDate, requestVO.getStartDate(), requestVO.getEndDate())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getEndDate, requestVO.getStartDate(), requestVO.getEndDate())
+                .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                 .orderByDesc(MeetingInfo::getMeetingId);
-        page = this.page(page,queryWrapper);
-        if(page.getRecords().size() > 0){
+        page = this.page(page, queryWrapper);
+        if (page.getRecords().size() > 0) {
             List<Long> initIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
-                if(!initIdList.contains(page.getRecords().get(i).getInitiatorId())){
+                if (!initIdList.contains(page.getRecords().get(i).getInitiatorId())) {
                     initIdList.add(Long.valueOf(page.getRecords().get(i).getInitiatorId()));
                 }
             }
-            //发起人信息
-            if(initIdList.size() > 0){
+            // 发起人信息
+            if (initIdList.size() > 0) {
                 LambdaQueryWrapper<SysUser> initIdQuery = Wrappers.lambdaQuery();
-                initIdQuery.in(SysUser::getUserId,initIdList)
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+                initIdQuery.in(SysUser::getUserId, initIdList)
+                        .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
                 List<SysUser> userList = sysUserService.list(initIdQuery);
-                if(userList.size() > 0){
+                if (userList.size() > 0) {
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < userList.size(); j++) {
-                            if(page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())){
+                            if (page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())) {
                                 page.getRecords().get(i).setInitiatorUser(userList.get(j));
                                 break;
                             }
@@ -485,40 +488,43 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
         }
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),size,current);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), size, current);
     }
 
     @Override
-    public List<Map<String,Object>> meetingSignList(Long meetingId){
+    public List<Map<String, Object>> meetingSignList(Long meetingId) {
         Integer tenantId = SecurityUtils.getTenantId();
-        List<Map<String, Object>> signList = dmMeetingRepository.meetingSignList(meetingId,tenantId);
+        List<Map<String, Object>> signList = dmMeetingRepository.meetingSignList(meetingId, tenantId);
         return signList;
     }
 
     @Override
-    public void signOnOut(SignOnOutRequestVO requestVO){
+    public void signOnOut(SignOnOutRequestVO requestVO) {
         LambdaQueryWrapper<MeetingAttendee> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingAttendee::getMeetingId,requestVO.getMeetingId())
-                .eq(MeetingAttendee::getUserId,requestVO.getUserId());
-
-        String domain = requestVO.getDomain();
-        if(StringUtils.isNotBlank(domain)){
-            Integer tenantId = meetingRoomRepository.getTenantIdByDomain(domain);
+        queryWrapper.eq(MeetingAttendee::getMeetingId, requestVO.getMeetingId())
+                .eq(MeetingAttendee::getUserId, requestVO.getUserId());
+
+        String deviceCode = requestVO.getDeviceCode();
+        Integer tenantId;
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(MeetingDevice::getDeviceCode, requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper1).getTenantId();
             queryWrapper.eq(MeetingAttendee::getTenantId, tenantId);
-        }else{
+        } else {
             queryWrapper.eq(MeetingAttendee::getTenantId, SecurityUtils.getTenantId());
         }
 
         MeetingAttendee one = meetingAttendeeService.getOne(queryWrapper);
-        if(one != null){
-            //签到签退类别(0.签到 1.签退)
-            if(requestVO.getMothodType().equals(0)){
+        if (one != null) {
+            // 签到签退类别(0.签到 1.签退)
+            if (requestVO.getMothodType().equals(0)) {
                 one.setIsSign(1);
                 one.setSignDate(LocalDateTime.now());
-                //签到签退方式(0.人工 1.人脸)
+                // 签到签退方式(0.人工 1.人脸)
                 one.setSignType(requestVO.getSignType());
 
-            }else{
+            } else {
                 one.setIsSignOut(1);
                 one.setSignOutDate(LocalDateTime.now());
                 one.setSignOutType(requestVO.getSignType());
@@ -528,36 +534,36 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
     }
 
-    //UPDATE meeting_info SET meeting_status = 0 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date > SYSDATE;
-    //UPDATE meeting_info SET meeting_status = 1 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date <= SYSDATE AND end_date >= SYSDATE;
-    //UPDATE meeting_info SET meeting_status = 2 WHERE is_cancel = 0 AND meeting_status != 2 AND end_date < SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 0 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date > SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 1 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date <= SYSDATE AND end_date >= SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 2 WHERE is_cancel = 0 AND meeting_status != 2 AND end_date < SYSDATE;
     @Override
-    public void updateMeetingInfoStatus(){
-        //根据使用中的会议id去更新对应会议室的状态
-        //更新会议室使用状态为 1-使用中
+    public void updateMeetingInfoStatus() {
+        // 根据使用中的会议id去更新对应会议室的状态
+        // 更新会议室使用状态为 1-使用中
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingInfo::getIsCancel,0)
-                .ne(MeetingInfo::getMeetingStatus,2)
-                .le(MeetingInfo::getStartDate,LocalDateTime.now())
-                .ge(MeetingInfo::getEndDate,LocalDateTime.now());
+        queryWrapper.eq(MeetingInfo::getIsCancel, 0)
+                .ne(MeetingInfo::getMeetingStatus, 2)
+                .le(MeetingInfo::getStartDate, LocalDateTime.now())
+                .ge(MeetingInfo::getEndDate, LocalDateTime.now());
         List<MeetingInfo> list = this.list(queryWrapper);
         Set<Long> roomIdList = new HashSet<>();
-        if(list.size() > 0){
+        if (list.size() > 0) {
             for (int i = 0; i < list.size(); i++) {
                 roomIdList.add(list.get(i).getRoomId());
             }
         }
         meetingRoomRepository.updateMeetingRoomStatusOnUse(roomIdList);
-        //更新将会议室使用状态恢复为 0-未使用
+        // 更新将会议室使用状态恢复为 0-未使用
         LambdaQueryWrapper<MeetingInfo> queryWrapper1 = Wrappers.lambdaQuery();
-        queryWrapper1.eq(MeetingInfo::getIsCancel,0)
-                .ne(MeetingInfo::getMeetingStatus,2)
-                .lt(MeetingInfo::getEndDate,LocalDateTime.now());
+        queryWrapper1.eq(MeetingInfo::getIsCancel, 0)
+                .ne(MeetingInfo::getMeetingStatus, 2)
+                .lt(MeetingInfo::getEndDate, LocalDateTime.now());
         List<MeetingInfo> list1 = this.list(queryWrapper1);
         Set<Long> roomIdList1 = new HashSet<>();
-        if(list1.size() > 0){
+        if (list1.size() > 0) {
             for (int i = 0; i < list1.size(); i++) {
-                if(!roomIdList.contains(list1.get(i).getRoomId())){
+                if (!roomIdList.contains(list1.get(i).getRoomId())) {
                     roomIdList1.add(list1.get(i).getRoomId());
                 }
             }
@@ -566,17 +572,17 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
 
         UpdateWrapper<MeetingInfo> updateWrapper = Wrappers.update();
-        updateWrapper.set("meeting_status",1)
-                .eq("is_cancel",0)
-                .ne("meeting_status",2)
-                .le("start_date",LocalDateTime.now())
-                .ge("end_date",LocalDateTime.now());
+        updateWrapper.set("meeting_status", 1)
+                .eq("is_cancel", 0)
+                .ne("meeting_status", 2)
+                .le("start_date", LocalDateTime.now())
+                .ge("end_date", LocalDateTime.now());
         this.update(updateWrapper);
         UpdateWrapper<MeetingInfo> updateWrapper1 = Wrappers.update();
-        updateWrapper1.set("meeting_status",2)
-                .eq("is_cancel",0)
-                .ne("meeting_status",2)
-                .lt("end_date",LocalDateTime.now());
+        updateWrapper1.set("meeting_status", 2)
+                .eq("is_cancel", 0)
+                .ne("meeting_status", 2)
+                .lt("end_date", LocalDateTime.now());
         this.update(updateWrapper1);
     }
 
@@ -584,7 +590,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
         if (StringUtils.isNotBlank(resources.getSendType())) {
             String[] typeList = resources.getSendType().split(",");
-            if(typeList.length > 0){
+            if (typeList.length > 0) {
                 for (int i = 0; i < typeList.length; i++) {
                     String sendType = typeList[i];
 
@@ -595,17 +601,17 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                             DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
                             IAcsClient client = new DefaultAcsClient(profile);
                             SendSmsRequest request = new SendSmsRequest();
-                            request.setPhoneNumbers(dmUser.getPhonenumber());//接收短信的手机号码
-                            request.setSignName("上海永天科技股份有限公司");//短信签名名称
-                            request.setTemplateCode("SMS_465362899");//短信模板CODE
-                            request.setTemplateParam("{\"meet\":\""+resources.getMeetingName()+"\","+"\"time\":\""+resources.getStartDate()+"\","+
-                                    "\"room\":\""+resources.getRoomName()+"\"}");
+                            request.setPhoneNumbers(dmUser.getPhonenumber());// 接收短信的手机号码
+                            request.setSignName("上海永天科技股份有限公司");// 短信签名名称
+                            request.setTemplateCode("SMS_465362899");// 短信模板CODE
+                            request.setTemplateParam("{\"meet\":\"" + resources.getMeetingName() + "\"," + "\"time\":\"" + resources.getStartDate() + "\"," +
+                                    "\"room\":\"" + resources.getRoomName() + "\"}");
                             SendSmsResponse code = client.getAcsResponse(request);
-                            if(code.getCode() != null && code.getCode().equals("OK")) {
-                                //请求成功
-                            }else {
+                            if (code.getCode() != null && code.getCode().equals("OK")) {
+                                // 请求成功
+                            } else {
 //                                throw new BusinessException("发送短信失败");
-                                log.info(dmUser.getPhonenumber()+"发送短信失败");
+                                log.info(dmUser.getPhonenumber() + "发送短信失败");
                             }
                         }
 
@@ -704,7 +710,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 //    }
 
     public MeetingInfo toEntity(DmMeetingDto dto) {
-        if ( dto == null ) {
+        if (dto == null) {
             return null;
         }
 
@@ -713,27 +719,27 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         dmMeeting.setCreateBy(SecurityUtils.getUsername());
         dmMeeting.setCreateTime(LocalDateTime.now());
         dmMeeting.setTenantId(SecurityUtils.getTenantId());
-        dmMeeting.setMeetingName( dto.getMeetingName() );
+        dmMeeting.setMeetingName(dto.getMeetingName());
         dmMeeting.setRoomId(dto.getRoomId());
-        dmMeeting.setRoomName( dto.getRoomName() );
-        dmMeeting.setMeetingDescribe( dto.getMeetingDescribe() );
-        dmMeeting.setMeetingType( dto.getMeetingType() );
+        dmMeeting.setRoomName(dto.getRoomName());
+        dmMeeting.setMeetingDescribe(dto.getMeetingDescribe());
+        dmMeeting.setMeetingType(dto.getMeetingType());
         dmMeeting.setInitiatorId(dto.getInitiatorUser().getId());
-        dmMeeting.setStartDate(LocalDateTime.parse(dto.getStartDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
-        dmMeeting.setEndDate(LocalDateTime.parse(dto.getEndDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
-        dmMeeting.setApproveStatus( dto.getApproveStatus() );
-        dmMeeting.setApproveSuggest( dto.getApproveSuggest() );
-        dmMeeting.setActualCount( dto.getActualCount() );
-        dmMeeting.setPlanCount( dto.getPlanCount() );
-        dmMeeting.setIsDelay( dto.getIsDelay() );
-        dmMeeting.setRemark( dto.getRemark() );
-        dmMeeting.setMeetingStatus( dto.getMeetingStatus() );
-        dmMeeting.setTaskId( dto.getTaskId() );
-        dmMeeting.setProcInstId( dto.getProcInstId() );
-        dmMeeting.setIsCancel( dto.getIsCancel() );
-        dmMeeting.setSendType( dto.getSendType() );
-        dmMeeting.setIsApprove( dto.getIsApprove() );
-        dmMeeting.setMeetingMode( dto.getMeetingMode() );
+        dmMeeting.setStartDate(LocalDateTime.parse(dto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        dmMeeting.setEndDate(LocalDateTime.parse(dto.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        dmMeeting.setApproveStatus(dto.getApproveStatus());
+        dmMeeting.setApproveSuggest(dto.getApproveSuggest());
+        dmMeeting.setActualCount(dto.getActualCount());
+        dmMeeting.setPlanCount(dto.getPlanCount());
+        dmMeeting.setIsDelay(dto.getIsDelay());
+        dmMeeting.setRemark(dto.getRemark());
+        dmMeeting.setMeetingStatus(dto.getMeetingStatus());
+        dmMeeting.setTaskId(dto.getTaskId());
+        dmMeeting.setProcInstId(dto.getProcInstId());
+        dmMeeting.setIsCancel(dto.getIsCancel());
+        dmMeeting.setSendType(dto.getSendType());
+        dmMeeting.setIsApprove(dto.getIsApprove());
+        dmMeeting.setMeetingMode(dto.getMeetingMode());
 
         return dmMeeting;
     }

+ 37 - 30
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -15,6 +15,7 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meeting.domain.*;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
 import com.usky.meeting.repository.MeetingAttendeeRepository;
 import com.usky.meeting.repository.MeetingDeviceRepository;
@@ -64,6 +65,8 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     private MeetingInfoRepository meetingInfoRepository;
     @Autowired
     private SysUserService sysUserService;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public Map<String, Object> FirstPageStatistic(String year) {
@@ -96,14 +99,14 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(floorId)){
+            if (CollectionUtils.isNotEmpty(floorId)) {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                         .in(MeetingRoom::getFloorId, floorId)
                         .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
                         .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
                         .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingRoom::getRoomId);
-            }else{
+            } else {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                         .in(MeetingRoom::getFloorId, "")
                         .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
@@ -112,7 +115,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                         .orderByDesc(MeetingRoom::getRoomId);
             }
 
-        }else{
+        } else {
             queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                     .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
                     .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
@@ -121,7 +124,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         }
         page = this.page(page, queryWrapper);
         if (CollectionUtils.isNotEmpty(page.getRecords())) {
-            //查询楼层信息和本地存储信息
+            // 查询楼层信息和本地存储信息
             List<Long> floorIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
                 Long floorId1 = page.getRecords().get(i).getFloorId();
@@ -134,7 +137,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                     .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
             List<MeetingFloor> floorList = dmFloorService.list(floorQuery);
 
-            //会议室匹配对应楼层信息和本地存储信息
+            // 会议室匹配对应楼层信息和本地存储信息
             for (int i = 0; i < page.getRecords().size(); i++) {
                 if (CollectionUtils.isNotEmpty(floorList)) {
                     Long frId = Long.valueOf(page.getRecords().get(i).getFloorId());
@@ -154,10 +157,10 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     @Override
     public List<MeetingRoom> MeetingRoomList(String domain) {
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(domain)){
+        if (StringUtils.isNotBlank(domain)) {
             Integer tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
             queryWrapper.eq(MeetingRoom::getTenantId, tenantId);
-        }else{
+        } else {
             queryWrapper.eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId());
         }
 
@@ -209,23 +212,25 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public Map<String, Object> attendee(Long meetingId, Long userId, String userName, String domain) {
+    public Map<String, Object> attendee(Long meetingId, Long userId, String userName, String deviceCode) {
         Map<String, Object> map = new HashMap<>();
-        Integer tenantId ;
+        Integer tenantId;
 
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
-        }else{
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, deviceCode);
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
         map.put("userName", userName);
         List<MeetingAttendee> list = meetingAttendeeRepository.findMeetingAttendeeList(meetingId, userId, tenantId);
         if (org.springframework.util.CollectionUtils.isEmpty(list)) {
-            map.put("status","0");
+            map.put("status", "0");
             map.put("msg", "您当前没有需要参加的会议");
         } else {
-            map.put("status","1");
+            map.put("status", "1");
             map.put("msg", "验证成功");
         }
         return map;
@@ -237,19 +242,21 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         List<DmMeetingRoomDto> newDmMeetingRoomDtoList = new ArrayList<>();
         String meetingRoomName = reservationVO.getMeetingRoomName();
         Long meetingRoomId = reservationVO.getMeetingRoomId();
-        String domain = reservationVO.getDomain();
+        String deviceCode = reservationVO.getDeviceCode();
         Integer tenantId;
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
-        }else{
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, reservationVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
 
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(meetingRoomId != null,MeetingRoom::getRoomId,reservationVO.getMeetingRoomId())
-                .like(StringUtils.isNotBlank(meetingRoomName),MeetingRoom::getRoomName,meetingRoomName)
-                .eq(MeetingRoom::getTenantId,tenantId);
+        queryWrapper.eq(meetingRoomId != null, MeetingRoom::getRoomId, reservationVO.getMeetingRoomId())
+                .like(StringUtils.isNotBlank(meetingRoomName), MeetingRoom::getRoomName, meetingRoomName)
+                .eq(MeetingRoom::getTenantId, tenantId);
         List<MeetingRoom> list1 = this.list(queryWrapper);
         List<Long> floorIdList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list1)) {
@@ -290,18 +297,18 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
         }
-        if (list.size() > 0) {
+        if (!list.isEmpty()) {
             for (DmMeetingRoomDto dmMeetingRoomDto : list) {
                 if (ObjectUtils.isEmpty(reservationVO.getDate())) {
                     reservationVO.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                 }
-                JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(),tenantId);
+                JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(), tenantId);
 
                 JSONArray dmMeeting = meetingRoomUsageByDayV2.getJSONArray("dmMeeting");
                 dmMeetingRoomDto.setDmMeetingList(dmMeeting);
 
                 dmMeetingRoomDto.setMeetingRoomUsage(meetingRoomUsageByDayV2.getJSONArray("timeRange"));
-                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(),tenantId);
+                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(), tenantId);
                 dmMeetingRoomDto.setMeetingRoomUsageMonth(monthList);
 
                 newDmMeetingRoomDtoList.add(dmMeetingRoomDto);
@@ -313,16 +320,16 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
 
     @Override
     public MeetingRoom meetingRoomDetails(Long roomId) {
-        //查询会议室基础信息
+        // 查询会议室基础信息
         MeetingRoom meetingRoom = this.getById(roomId);
 
-        //楼层信息
+        // 楼层信息
         Long floorId = meetingRoom.getFloorId();
         MeetingFloor meetingFloor = dmFloorService.getById(floorId);
 
-        //会议室设备列表
+        // 会议室设备列表
         List<MeetingDevice> deviceList = meetingDeviceRepository.getDeviceListByRoomId(roomId);
-        //查询今天所有的会议
+        // 查询今天所有的会议
         List<MeetingInfo> meetingList = meetingInfoRepository.queryTodayMeetingByRoomId(roomId);
 
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
@@ -333,7 +340,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         }
         if (!ObjectUtil.isEmpty(meetingList)) {
             for (MeetingInfo dmMeeting : meetingList) {
-                //参会人员信息
+                // 参会人员信息
                 List<SysUser> attendeeUserList = new ArrayList<>();
                 List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(), null, SecurityUtils.getTenantId());
                 if (attendeeList.size() > 0) {
@@ -348,7 +355,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                     }
                 }
                 dmMeeting.setUsers(attendeeUserList);
-                //发起人信息
+                // 发起人信息
                 for (int i = 0; i < userList.size(); i++) {
                     if (userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))) {
                         dmMeeting.setInitiatorUser(userList.get(i));

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingDeviceRequestVO.java

@@ -60,7 +60,7 @@ public class MeetingDeviceRequestVO {
     private String egDeviceName;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 }

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingFaceRequestVO.java

@@ -10,9 +10,9 @@ public class MeetingFaceRequestVO {
     private String imageBase;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 
     /**
      * 卡号

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java

@@ -24,7 +24,7 @@ public class MeetingRoomReservationVO {
     private String date;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 }

+ 19 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceHeartbeatMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.MeetingDeviceHeartbeatMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingDeviceHeartbeat">
+        <id column="id" property="id"/>
+        <result column="device_code" property="deviceCode"/>
+        <result column="ip_addr" property="ipAddr"/>
+        <result column="mac_addr" property="macAddr"/>
+        <result column="device_type" property="deviceType"/>
+        <result column="create_time" property="createTime"/>
+        <result column="model" property="model"/>
+        <result column="manu_facturer" property="manufacturer"/>
+        <result column="version" property="version"/>
+        <result column="sdk" property="sdk"/>
+    </resultMap>
+
+</mapper>

+ 19 - 17
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceMapper.xml

@@ -4,23 +4,25 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingDevice">
-        <id column="device_uuid" property="deviceUuid" />
-        <result column="device_name" property="deviceName" />
-        <result column="storage_id" property="storageId" />
-        <result column="img_path" property="imgPath" />
-        <result column="nameplate" property="nameplate" />
-        <result column="room_id" property="roomId" />
-        <result column="register_date" property="registerDate" />
-        <result column="maintainer" property="maintainer" />
-        <result column="contacts" property="contacts" />
-        <result column="install_address" property="installAddress" />
-        <result column="remark" property="remark" />
-        <result column="create_by" property="createBy" />
-        <result column="update_by" property="updateBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="dept_id" property="deptId" />
-        <result column="tenant_id" property="tenantId" />
+        <id column="device_uuid" property="deviceUuid"/>
+        <result column="device_name" property="deviceName"/>
+        <result column="storage_id" property="storageId"/>
+        <result column="img_path" property="imgPath"/>
+        <result column="nameplate" property="nameplate"/>
+        <result column="room_id" property="roomId"/>
+        <result column="register_date" property="registerDate"/>
+        <result column="maintainer" property="maintainer"/>
+        <result column="contacts" property="contacts"/>
+        <result column="install_address" property="installAddress"/>
+        <result column="remark" property="remark"/>
+        <result column="create_by" property="createBy"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="device_code" property="deviceCode"/>
+        <result column="ip_addr" property="ipAddr"/>
     </resultMap>
 
 </mapper>