diff --git a/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java b/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
index 480fc9b..d519357 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/api/controller/ConerenceApiController.java
@@ -145,17 +145,21 @@
             return mov;
         }
 
-
         TConference conference = conferenceService.getConferenceById(confid);
         if (null == conference) {
             mov.addObject("msg", "签到失败");
             mov.addObject("errorMsg", "会议不存在");
             return mov;
+        }
+        TNcDevice device=ncService.getDevInfoByDevphyid(devphyid);
+        if (null == device) {
+            mov.addObject("msg", "签到失败");
+            mov.addObject("errorMsg", "设备不存在");
+            return mov;
 
         }
-
-        TNcDevice device = conferenceService.getBindedDevice(confid);
-        if (null == device) {
+        boolean bindflag = conferenceService.checkDevBindRelationship(confid,device.getDeviceid());
+        if (!bindflag) {
             mov.addObject("msg", "签到失败");
             mov.addObject("errorMsg", "请在会议绑定的设备上打卡");
             return mov;
diff --git a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
index 3ec48c4..d58360f 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/controller/ConferenceController.java
@@ -223,10 +223,14 @@
     @GetMapping("/conference/load4detail")
     public String load4ConfDetails(@RequestParam("confid") Integer confid, Model model) {
         model.addAttribute("detailConfid", confid);
-        TNcDevice device = conferenceService.getBindedDevice(confid);
+        List<TNcDevice> device = conferenceService.getBindedDevices(confid);
         String devname = "未绑定";
-        if (null != device) {
-            devname = device.getDevname();
+        if (!StringUtil.isEmpty(device)) {
+            devname="";
+            for(TNcDevice d:device){
+                devname +=d.getDevname()+"  ";
+            }
+
         }
         model.addAttribute("deviceName", devname);
         return "conference/confdetail";
diff --git a/src/main/java/com/supwisdom/dlpay/conference/dao/ConferenceDevbindDao.java b/src/main/java/com/supwisdom/dlpay/conference/dao/ConferenceDevbindDao.java
index 78b376f..b315628 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/dao/ConferenceDevbindDao.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/dao/ConferenceDevbindDao.java
@@ -7,6 +7,8 @@
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface ConferenceDevbindDao extends JpaRepository<TConferenceDevbind, String> {
 
@@ -16,4 +18,8 @@
 
     TConferenceDevbind findByConfid(int confid);
 
+    TConferenceDevbind findByConfidAndDeviceid(int confid,int deviceid);
+
+    List<TConferenceDevbind> findAllByConfid(int confid);
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
index 0b9da22..8f1dd95 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/ConferenceService.java
@@ -32,7 +32,10 @@
     boolean deleteConfPeople(String pid) throws Exception;
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
-    TNcDevice getBindedDevice(int confid) ;
+    List<TNcDevice> getBindedDevices(int confid) ;
+
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
+    boolean checkDevBindRelationship(int confid,int deviceid) ;
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
     List<TConference> getConferenceByDateAndStatus(String confdate,String status);
diff --git a/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
index 30dbeed..56b4af9 100644
--- a/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/conference/service/impl/ConferenceServiceImpl.java
@@ -204,16 +204,29 @@
     }
 
     @Override
-    public TNcDevice getBindedDevice(int confid) {
-        TConferenceDevbind bind=conferenceDevbindDao.findByConfid(confid);
-        if(null!=bind){
-            TNcDevice dev=deviceDao.findDevById(bind.getDeviceid());
-            return dev;
+    public List<TNcDevice> getBindedDevices(int confid) {
+        List<TConferenceDevbind> bind=conferenceDevbindDao.findAllByConfid(confid);
+        List<TNcDevice> list=new ArrayList<>();
+        if(!StringUtil.isEmpty(bind)){
+            for(TConferenceDevbind b:bind){
+                TNcDevice dev=deviceDao.findDevById(b.getDeviceid());
+                list.add(dev);
+            }
+            return list;
         }
         return null;
     }
 
     @Override
+    public boolean checkDevBindRelationship(int confid, int deviceid) {
+        TConferenceDevbind bind = conferenceDevbindDao.findByConfidAndDeviceid(confid,deviceid);
+        if(null!=bind){
+            return true;
+        }
+        return false;
+    }
+
+    @Override
     public List<TConference> getConferenceByDateAndStatus(String confdate,String status) {
 
         List<TConference> conflist;
