Browse Source

优化代码

java110 5 years ago
parent
commit
b77ea84954

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/machine/MachineTranslateDto.java

@@ -94,6 +94,8 @@ public class MachineTranslateDto extends PageDto implements Serializable {
 
     private String remark;
 
+    private String isNow;
+
 
     private Date createTime;
 
@@ -255,4 +257,12 @@ public class MachineTranslateDto extends PageDto implements Serializable {
     public void setMachineName(String machineName) {
         this.machineName = machineName;
     }
+
+    public String getIsNow() {
+        return isNow;
+    }
+
+    public void setIsNow(String isNow) {
+        this.isNow = isNow;
+    }
 }

+ 2 - 0
java110-bean/src/main/java/com/java110/dto/owner/OwnerAttrDto.java

@@ -15,6 +15,8 @@ import java.util.Date;
  **/
 public class OwnerAttrDto extends PageDto implements Serializable {
 
+    public static final String SPEC_CD_MACHINE_OPEN_COUNT = "7967001983";
+
     private String attrId;
     private String specCd;
     private String communityId;

+ 13 - 0
java110-db/src/main/resources/mapper/common/MachineTranslateServiceDaoImplMapper.xml

@@ -164,6 +164,12 @@
         <if test="objId !=null and objId != ''">
             and t.obj_id= #{objId}
         </if>
+        <if test="machineCmd !=null and machineCmd != ''">
+            and t.machine_cmd= #{machineCmd}
+        </if>
+        <if test="isNow !=null and isNow == 'Y'">
+            and to_days(t.create_time) = to_days(now())
+        </if>
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
         </if>
@@ -252,6 +258,13 @@
         <if test="objId !=null and objId != ''">
             and t.obj_id= #{objId}
         </if>
+        <if test="machineCmd !=null and machineCmd != ''">
+            and t.machine_cmd= #{machineCmd}
+        </if>
+        <if test="isNow !=null and isNow == 'Y'">
+            and to_days(t.create_time) = to_days(now())
+        </if>
+
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
         </if>

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

@@ -17,12 +17,19 @@ package com.java110.common.bmo.machine.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.bmo.machine.IMachineOpenDoorBMO;
+import com.java110.dto.machine.MachineTranslateDto;
+import com.java110.dto.owner.OwnerAttrDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.intf.common.IMachineTranslateInnerServiceSMO;
 import com.java110.intf.job.IDataBusInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 设备开门功能
  *
@@ -34,6 +41,11 @@ public class MachineOpenDoorBMOImpl implements IMachineOpenDoorBMO {
 
     @Autowired
     IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineTranslateInnerServiceSMO machineTranslateInnerServiceSMOImpl;
 
     /**
      * 开门功能
@@ -43,10 +55,57 @@ public class MachineOpenDoorBMOImpl implements IMachineOpenDoorBMO {
      */
     @Override
     public ResponseEntity<String> openDoor(JSONObject reqJson) {
+        //如果是业主 限制开门次数
+        if ("owner".equals(reqJson.getString("userRole"))) {
+            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("没有权限开门");
+            }
+
+            if (!hasOpenDoorPri(ownerDtos.get(0), reqJson.getString("machineCode"))) {
+                return ResultVo.error("今日开门次数已用完,请联系物业客服人员");
+            }
+        }
         ResultVo resultVo = dataBusInnerServiceSMOImpl.openDoor(reqJson);
         return ResultVo.createResponseEntity(resultVo);
     }
 
+    private boolean hasOpenDoorPri(OwnerDto ownerDto, String machineCode) {
+
+        List<OwnerAttrDto> ownerAttrDtos = ownerDto.getOwnerAttrDtos();
+
+        if (ownerAttrDtos == null || ownerAttrDtos.size() < 1) {
+            return true;
+        }
+        long openDoorCount = -1;
+        for (OwnerAttrDto ownerAttrDto : ownerAttrDtos) {
+            if (OwnerAttrDto.SPEC_CD_MACHINE_OPEN_COUNT.equals(ownerAttrDto.getSpecCd())) {
+                openDoorCount = Long.parseLong(ownerAttrDto.getValue());
+            }
+        }
+
+        if (openDoorCount == -1) { //说明没有配置 不限制
+            return true;
+        }
+
+        MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
+        machineTranslateDto.setCommunityId(ownerDto.getCommunityId());
+        machineTranslateDto.setMachineCode(machineCode);
+        machineTranslateDto.setObjBId(ownerDto.getMemberId());
+        machineTranslateDto.setMachineCmd(MachineTranslateDto.CMD_OPEN_DOOR);
+        machineTranslateDto.setIsNow("Y");
+        long count = machineTranslateInnerServiceSMOImpl.queryMachineTranslatesCount(machineTranslateDto);
+
+        if (openDoorCount > count) {
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * 重启设备
      *