java110 лет назад: 3
Родитель
Сommit
977753d367

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/accessControl/AccessControlWhiteAuthDto.java

@@ -19,6 +19,8 @@ public class AccessControlWhiteAuthDto extends MachineDto implements Serializabl
     private String acwaId;
     private String communityId;
 
+    private String personId;
+
 
 
 
@@ -65,4 +67,12 @@ public class AccessControlWhiteAuthDto extends MachineDto implements Serializabl
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getPersonId() {
+        return personId;
+    }
+
+    public void setPersonId(String personId) {
+        this.personId = personId;
+    }
 }

+ 12 - 0
java110-bean/src/main/java/com/java110/dto/machine/MachineDto.java

@@ -26,6 +26,8 @@ public class MachineDto extends PageDto implements Serializable {
     public static final String DIRECTION_IN = "3306"; //进场
     public static final String DIRECTION_OUT = "3307"; //出场
 
+    public static final String HM_HK = "16";// 海康平台
+
     private String machineMac;
     private String machineId;
     private String machineCode;
@@ -57,6 +59,8 @@ public class MachineDto extends PageDto implements Serializable {
     private String typeId;
     private String domain;
 
+    private String hmId;
+
     private List<MachineAttrDto> machineAttrs;
 
 
@@ -339,4 +343,12 @@ public class MachineDto extends PageDto implements Serializable {
     public void setMachineTypeCds(String[] machineTypeCds) {
         this.machineTypeCds = machineTypeCds;
     }
+
+    public String getHmId() {
+        return hmId;
+    }
+
+    public void setHmId(String hmId) {
+        this.hmId = hmId;
+    }
 }

+ 12 - 0
java110-db/src/main/resources/mapper/common/AccessControlWhiteAuthV1ServiceDaoImplMapper.xml

@@ -22,6 +22,9 @@
         t.create_time createTime,m.machine_code machineCode,m.machine_name machineName
         from access_control_white_auth t
         left join machine m on t.machine_id = m.machine_id and m.status_cd = '0'
+        <if test="personId != null and personId != ''">
+            left join access_control_white acw on t.acw_id = t.acw_id and acw.status_cd = '0'
+        </if>
         where 1 =1
         <if test="machineId !=null and machineId != ''">
             and t.machine_id= #{machineId}
@@ -38,6 +41,9 @@
         <if test="communityId !=null and communityId != ''">
             and t.community_id= #{communityId}
         </if>
+        <if test="personId != null and personId != ''">
+            and acw.person_id = #{personId}
+        </if>
         order by t.create_time desc
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
@@ -72,6 +78,9 @@
     <select id="queryAccessControlWhiteAuthsCount" parameterType="Map" resultType="Map">
         select count(1) count
         from access_control_white_auth t
+        <if test="personId != null and personId != ''">
+            left join access_control_white acw on t.acw_id = t.acw_id and acw.status_cd = '0'
+        </if>
         where 1 =1
         <if test="machineId !=null and machineId != ''">
             and t.machine_id= #{machineId}
@@ -88,6 +97,9 @@
         <if test="communityId !=null and communityId != ''">
             and t.community_id= #{communityId}
         </if>
+        <if test="personId != null and personId != ''">
+            and acw.person_id = #{personId}
+        </if>
 
 
     </select>

+ 0 - 16
service-common/src/main/java/com/java110/common/api/MachineApi.java

@@ -91,22 +91,6 @@ public class MachineApi {
 
 
 
-    /**
-     * 设备二维码
-     *
-     * @param reqJson
-     * @return
-     * @serviceCode /machine/getQRcode
-     * @path /app/machine/getQRcode
-     */
-    @RequestMapping(value = "/getQRcode", method = RequestMethod.POST)
-    public ResponseEntity<String> getQRcode(@RequestBody JSONObject reqJson) {
-        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
-        Assert.hasKeyAndValue(reqJson, "userId", "请求报文中未包含用户信息");
-        Assert.hasKeyAndValue(reqJson, "machineCode", "请求报文中未包含设备信息");
-
-        return machineOpenDoorBMOImpl.getQRcode(reqJson);
-    }
 
     /**
      * 设备开门功能

+ 0 - 6
service-common/src/main/java/com/java110/common/bmo/machine/IMachineOpenDoorBMO.java

@@ -51,12 +51,6 @@ public interface IMachineOpenDoorBMO {
      */
     ResponseEntity<String> resendIot(JSONObject reqJson);
 
-    /**
-     * 获取二维码
-     * @param reqJson
-     * @return
-     */
-    ResponseEntity<String> getQRcode(JSONObject reqJson);
 
     /**
      * 手工进出场

+ 0 - 14
service-common/src/main/java/com/java110/common/bmo/machine/impl/MachineOpenDoorBMOImpl.java

@@ -152,21 +152,7 @@ public class MachineOpenDoorBMOImpl implements IMachineOpenDoorBMO {
         return ResultVo.createResponseEntity(resultVo);
     }
 
-    @Override
-    public ResponseEntity<String> getQRcode(JSONObject reqJson) {
-        //如果是业主 限制开门次数
 
-        OwnerDto ownerDto = new OwnerDto();
-        ownerDto.setMemberId(reqJson.getString("userId"));
-        ownerDto.setCommunityId(reqJson.getString("communityId"));
-        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
-        if (ownerDtos == null || ownerDtos.size() < 1) {
-            return ResultVo.error("没有权限开门");
-        }
-
-        ResultVo resultVo = dataBusInnerServiceSMOImpl.getQRcode(reqJson);
-        return ResultVo.createResponseEntity(resultVo.getCode(), resultVo.getMsg(), resultVo.getData());
-    }
 
     @Override
     public ResponseEntity<String> customCarInOut(JSONObject reqJson) {

+ 29 - 5
service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java

@@ -6,19 +6,20 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.doc.annotation.*;
+import com.java110.dto.accessControl.AccessControlWhiteAuthDto;
 import com.java110.dto.community.CommunityLocationDto;
 import com.java110.dto.machine.MachineDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
 import com.java110.dto.room.RoomDto;
 import com.java110.dto.user.UserDto;
+import com.java110.intf.common.IAccessControlWhiteAuthV1InnerServiceSMO;
 import com.java110.intf.common.IMachineV1InnerServiceSMO;
 import com.java110.intf.community.IRoomV1InnerServiceSMO;
-import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
-import com.java110.intf.user.IOwnerV1InnerServiceSMO;
-import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.intf.user.*;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
+import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.ParseException;
@@ -57,12 +58,13 @@ import java.util.List;
                 @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"),
                 @Java110ParamDoc(name = "data", type = "Object", remark = "有效数据"),
                 @Java110ParamDoc(parentNodeName = "data", name = "userName", type = "String", remark = "用户名称"),
+                @Java110ParamDoc(parentNodeName = "data", name = "openDoor", type = "boolean", remark = "开门 true 开门 false 不开门"),
         }
 )
 
 @Java110ExampleDoc(
         reqBody = "{'qrCode':'wuxw','machineCode':'admin'}",
-        resBody = "{'code':0,'msg':'成功','data':{'userName':'123123'}}"
+        resBody = "{'code':0,'msg':'成功','data':{'userName':'123123','openDoor':true}}"
 )
 /**
  * 门禁二维码核验接口
@@ -86,6 +88,10 @@ public class AccessControlQrcodeVerificationCmd extends Cmd {
     @Autowired
     private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
 
+
+    @Autowired
+    private IAccessControlWhiteAuthV1InnerServiceSMO accessControlWhiteAuthV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
@@ -95,7 +101,7 @@ public class AccessControlQrcodeVerificationCmd extends Cmd {
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
-
+        JSONObject data = new JSONObject();
         //todo 查询设备信息
         MachineDto machineDto = new MachineDto();
         machineDto.setMachineCode(reqJson.getString("machineCode"));
@@ -114,11 +120,29 @@ public class AccessControlQrcodeVerificationCmd extends Cmd {
 
         Assert.listOnlyOne(userDtos, "用户不存在");
 
+        data.put("userName", userDtos.get(0).getName());
 
         boolean openDoor = false;
         //todo 判断是否为业主
         openDoor = hasOwnerRole(machineDtos.get(0), userDtos.get(0));
+        if (openDoor) {
+            data.put("openDoor", openDoor);
+            context.setResponseEntity(ResultVo.createResponseEntity(data));
+            return;
+        }
 
+
+        AccessControlWhiteAuthDto accessControlWhiteAuthDto = new AccessControlWhiteAuthDto();
+        accessControlWhiteAuthDto.setMachineId(machineDtos.get(0).getMachineId());
+        accessControlWhiteAuthDto.setPersonId(userDtos.get(0).getUserId());
+
+        int count = accessControlWhiteAuthV1InnerServiceSMOImpl.queryAccessControlWhiteAuthsCount(accessControlWhiteAuthDto);
+
+        if (count > 0) {
+            openDoor = true;
+        }
+        data.put("openDoor", openDoor);
+        context.setResponseEntity(ResultVo.createResponseEntity(data));
     }
 
     /**

+ 92 - 0
service-common/src/main/java/com/java110/common/cmd/machine/GetQRcodeCmd.java

@@ -0,0 +1,92 @@
+package com.java110.common.cmd.machine;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.machine.MachineDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.common.IMachineInnerServiceSMO;
+import com.java110.intf.common.IMachineV1InnerServiceSMO;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * 设备 二维码生成
+ */
+@Java110Cmd(serviceCode = "/machine/getQRcode")
+public class GetQRcodeCmd extends Cmd {
+
+    @Autowired
+    IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineInnerServiceSMO machineV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
+        Assert.hasKeyAndValue(reqJson, "userId", "请求报文中未包含用户信息");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "请求报文中未包含设备信息");
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
+        ResponseEntity<String> responseEntity = null;
+
+        //todo 如果是业主 限制开门次数
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setMemberId(reqJson.getString("userId"));
+        ownerDto.setCommunityId(reqJson.getString("communityId"));
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+        if (ownerDtos == null || ownerDtos.size() < 1) {
+            throw new CmdException("没有权限开门");
+        }
+
+        //todo 校验设备到底在不在,不在就报错!!!
+        MachineDto machineDto = new MachineDto();
+        machineDto.setMachineCode(reqJson.getString("machineCode"));
+        machineDto.setCommunityId(reqJson.getString("communityId"));
+        List<MachineDto> machineDtos = machineV1InnerServiceSMOImpl.queryMachines(machineDto);
+        Assert.listOnlyOne(machineDtos, "设备不存在");
+
+        // todo 如果海康 调用海康平台,不然自己生成。
+        if (MachineDto.HM_HK.equals(machineDtos.get(0).getHmId())) {
+            ResultVo resultVo = dataBusInnerServiceSMOImpl.getQRcode(reqJson);
+            responseEntity = ResultVo.createResponseEntity(resultVo.getCode(), resultVo.getMsg(), resultVo.getData());
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+
+        //todo 调用自己算法生成 haha
+        UserDto userDto = new UserDto();
+        userDto.setTel(ownerDtos.get(0).getLink());
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+        String qrCode = "";
+        //todo 理论上这种 走不到 因为业主在手机端展示二维码,所以业主肯定认证过了
+        if (userDtos == null || userDtos.size() < 1) {
+            qrCode = userV1InnerServiceSMOImpl.generatorUserIdQrCode(reqJson.getString("userId"));
+        } else {
+            qrCode = userV1InnerServiceSMOImpl.generatorUserIdQrCode(userDtos.get(0).getUserId());
+        }
+
+        context.setResponseEntity(ResultVo.createResponseEntity(qrCode));
+    }
+}

+ 7 - 2
service-common/src/main/java/com/java110/common/smo/impl/MachineInnerServiceSMOImpl.java

@@ -76,8 +76,13 @@ public class MachineInnerServiceSMOImpl extends BaseServiceSMO implements IMachi
                 if (StringUtil.isEmpty(tMachineAttrDto.getValueName())) {
                     tMachineAttrDto.setValueName(tMachineAttrDto.getValue());
                 }
-                if (tMachineDto.getMachineId().equals(tMachineAttrDto.getMachineId())) {
-                    tMachineAttrDtos.add(tMachineAttrDto);
+                if (!tMachineDto.getMachineId().equals(tMachineAttrDto.getMachineId())) {
+                    continue;
+                }
+                tMachineAttrDtos.add(tMachineAttrDto);
+                //todo 刷入协议
+                if(MachineAttrDto.SPEC_HM.equals(tMachineAttrDto.getSpecCd())){
+                    tMachineDto.setHmId(tMachineAttrDto.getValue());
                 }
             }
             tMachineDto.setMachineAttrs(tMachineAttrDtos);

+ 1 - 0
service-common/src/main/java/com/java110/common/smo/impl/MachineV1InnerServiceSMOImpl.java

@@ -78,6 +78,7 @@ public class MachineV1InnerServiceSMOImpl extends BaseServiceSMO implements IMac
 
         List<MachineDto> machines = BeanConvertUtil.covertBeanList(machineV1ServiceDaoImpl.getMachineInfo(BeanConvertUtil.beanCovertMap(machineDto)), MachineDto.class);
 
+
         return machines;
     }