Forráskód Böngészése

feature: 门锁对接
1.远程开门接口

luo.yibo@datuai.com 1 éve
szülő
commit
38632fdf18

+ 30 - 15
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/lock/LockBusiness.java

@@ -33,11 +33,11 @@ public class LockBusiness {
     public R<String> getWriteCardData(RoomCardBo bo) {
         Integer cardType = bo.getCardType();
         String cardData = "";
-        Map<String, Object> formMap = new HashMap<>();
+        Map<String, Object> formMap;
         switch (cardType) {
             case 0:
                 formMap = setPwdCardParam(bo);
-                cardData= lockUtils.getPwdCardData(formMap);
+                cardData = lockUtils.getPwdCardData(formMap);
                 break;
             case 1:
                 formMap = setGuestCardParam(bo);
@@ -48,13 +48,25 @@ public class LockBusiness {
                 cardData = lockUtils.getWriteCardData(formMap);
                 break;
         }
-        if(ObjectUtil.isNotEmpty(cardData)){
+        if (ObjectUtil.isNotEmpty(cardData)) {
             bo.setCardData(cardData);
-            return R.ok(cardData,cardData);
+            return R.ok(cardData, cardData);
         }
         return R.fail();
     }
 
+    public R<String> remoteOpenDoor(String lockId) {
+        Map<String, Object> formMap = new HashMap<>();
+        formMap.put("DEVICE_ID", lockId);
+        formMap.put("OPENCLOSEACTION", "1");
+        String openResult = lockUtils.sendPost(formMap, "openRemoteDeviceLock");
+        String flag = JSONUtil.parseObj(openResult).getStr("result");
+        if (ObjectUtil.equals(flag, "0")) {
+            return R.ok("远程开门成功","远程开门成功");
+        }
+        return R.fail("远程开门失败","远程开门失败");
+    }
+
     private Map<String, Object> setGuestCardParam(RoomCardBo bo) {
         Map<String, Object> formMap = new HashMap<>();
         formMap.put("cardSenderLockId", LockConstants.YY_CARD_SENDER_ID);
@@ -62,27 +74,30 @@ public class LockBusiness {
         formMap.put("endDate", DateUtil.format(bo.getEndTime(), DefaultConstants.DATE_TIME_FORMAT));
         formMap.put("startDate", DateUtil.format(bo.getStartTime(), DefaultConstants.DATE_TIME_FORMAT));
         formMap.put("userPhone", bo.getPhone());
-        if (ObjectUtil.isNotEmpty(bo.getLockId())) {
-            formMap.put("lockId", bo.getLockId());
-        } else {
-            // TODO 2024-11-20 13:59:09 luoyibo 根据roomCode查lockId
-        }
+        formMap.put("lockId", bo.getLockId());
+
         return formMap;
     }
+
     private Map<String, Object> setManageCardParam(RoomCardBo bo) {
         Map<String, Object> formMap = this.setGuestCardParam(bo);
 
         return formMap;
     }
+
     private Map<String, Object> setPwdCardParam(RoomCardBo bo) {
         int randomPwd = RandomUtil.randomInt(1000, 10000);
         Map<String, Object> formMap = new HashMap<>();
-        formMap.put("CARDTYPE", "2"); // 类型(参考字典表),值建议限制为: 2(自定义密码),3(M1卡片),4(指纹),5,30,31,当类型为30和31时候,为学卡类型,
-        formMap.put("OPERATETYPE", "1"); // 1:添加
-        formMap.put("KEYUSERID", bo.getPhone()); // 授权的用户手机号
-        formMap.put("STARTDATE", bo.getStartTime());
-        formMap.put("ENDDATE", bo.getEndTime());
-        formMap.put("CARDPSWID", randomPwd); // 自定义密码
+        // 类型(参考字典表),值建议限制为: 2(自定义密码),3(M1卡片),4(指纹),5,30,31,当类型为30和31时候,为学卡类型,
+        formMap.put("CARDTYPE", "2");
+        // 1:添加
+        formMap.put("OPERATETYPE", "1");
+        // 授权的用户手机号
+        formMap.put("KEYUSERID", bo.getPhone());
+        formMap.put("STARTDATE", DateUtil.format(bo.getStartTime(), DefaultConstants.DATE_TIME_FORMAT));
+        formMap.put("ENDDATE", DateUtil.format(bo.getEndTime(), DefaultConstants.DATE_TIME_FORMAT));
+        // 自定义密码
+        formMap.put("CARDPSWID", randomPwd);
         formMap.put("KEYLOCKID", bo.getLockId());
 
         return formMap;

+ 19 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/lock/LockController.java

@@ -7,6 +7,8 @@ import org.dromara.backstage.domain.bo.lock.RoomCardBo;
 import org.dromara.backstage.util.LockUtils;
 import org.dromara.common.core.api.ResponseResult;
 import org.dromara.common.core.api.ReturnResult;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.enums.ResultCodeEnum;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -33,6 +35,7 @@ public class LockController {
 
     /**
      * 查询门锁状态
+     *
      * @param lockId 门锁Id
      * @return 状态
      */
@@ -44,8 +47,24 @@ public class LockController {
         return ReturnResult.success(result);
     }
 
+    /**
+     * 请求发卡数据
+     *
+     * @param bo 发卡业务对象
+     * @return 发卡数据
+     */
     @GetMapping(value = "/card/data")
     ReturnResult getRoomCardData(@RequestBody RoomCardBo bo) {
         return ReturnResult.success(lockBusiness.getWriteCardData(bo));
     }
+
+    @GetMapping(value = "/remote/open")
+    ReturnResult remoteOpen(@RequestParam("lockId") String lockId) {
+        R<String> result = lockBusiness.remoteOpenDoor(lockId);
+        if (R.isSuccess(result)) {
+            return ReturnResult.success(result.getData());
+        } else {
+            return ReturnResult.failure(ResultCodeEnum.INTERFACE_OUTER_INVOKE_ERROR, result.getMsg());
+        }
+    }
 }