Browse Source

Merge branch 'feature/visit_zhy' into test

test
zhangyuan 3 years ago
parent
commit
9cbfa41c10
  1. 6
      epmet-plugins-common/src/main/java/com/epmet/plugin/commons/redis/RedisKeys.java
  2. 5
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/DhTokenDTO.java
  3. 27
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhAuthFormDTO.java
  4. 29
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhCardPageFormDTO.java
  5. 23
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhChannelPageFormDTO.java
  6. 27
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhDeptFormDTO.java
  7. 29
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhIdentityFormDTO.java
  8. 23
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhLoginPassFormDTO.java
  9. 39
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonCardFormDTO.java
  10. 22
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonCardListFormDTO.java
  11. 22
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonDelFormDTO.java
  12. 39
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonFormDTO.java
  13. 23
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonImgFormDTO.java
  14. 25
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonPageFormDTO.java
  15. 27
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPlanFormDTO.java
  16. 25
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPlanPageFormDTO.java
  17. 21
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPublicKeyFormDTO.java
  18. 23
      epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/result/DhChannelResultDTO.java
  19. 37
      epmet-plugins-module/pli-power-base/pli-power-base-server/pom.xml
  20. 17
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/config/DhCloudProperties.java
  21. 4
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/utils/HkDeviceUtil.java
  22. 1
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/controller/VisitVisitorController.java
  23. 10
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/VisitVisitorService.java
  24. 33
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java
  25. 704
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/DhDeviceUtil.java
  26. 142
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/DhResult.java
  27. 18
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/RSAUtils.java
  28. 1
      epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/resources/bootstrap.yml

6
epmet-plugins-common/src/main/java/com/epmet/plugin/commons/redis/RedisKeys.java

@ -23,21 +23,21 @@ public class RedisKeys {
* 海康accessToken * 海康accessToken
*/ */
public static String getHikTokenKey() { public static String getHikTokenKey() {
return "hik:token"; return rootPrefix.concat("hik:token");
} }
/** /**
* 大华publicKey * 大华publicKey
*/ */
public static String getDhPublicKey() { public static String getDhPublicKey() {
return "dh:public"; return rootPrefix.concat("dh:public");
} }
/** /**
* 大华token * 大华token
*/ */
public static String getDhToken() { public static String getDhToken() {
return "dh:token"; return rootPrefix.concat("dh:token");
} }
} }

5
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/DhToken.java → epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/DhTokenDTO.java

@ -1,8 +1,7 @@
package com.epmet.plugin.power.modules.visit.utils; package com.epmet.plugin.power.dto.visit;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable; import java.io.Serializable;
@ -13,7 +12,7 @@ import java.io.Serializable;
* @since v1.0.0 2022-04-22 * @since v1.0.0 2022-04-22
*/ */
@Data @Data
public class DhToken implements Serializable { public class DhTokenDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

27
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhAuthFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.plugin.power.dto.visit.form;
import com.epmet.plugin.power.dto.visit.result.DhChannelResultDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhAuthFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String cardNumber;
private String timeQuantumId;
private List<DhChannelResultDTO> cardPrivilegeDetails;
}

29
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhCardPageFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhCardPageFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pageNum;
private Integer pageSize;
private String personCode;
private String cardNumber;
private String cardStatus;
}

23
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhChannelPageFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhChannelPageFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pageNum;
private Integer pageSize;
}

27
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhDeptFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.plugin.power.dto.visit.form;
import com.epmet.plugin.power.dto.visit.result.DhChannelResultDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhDeptFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String description;
private Long parentId;
}

29
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhIdentityFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhIdentityFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private Double subsidyAmount;
private Integer isCashRecharge;
private Integer isMachineRecharge;
private String description;
}

23
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhLoginPassFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhLoginPassFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String loginName;
private String loginPass;
}

39
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonCardFormDTO.java

@ -0,0 +1,39 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonCardFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Long personId;
private String personName;
private String cardNumber;
private String cardType;
private String category;
private String cardStatus;
private String startDate;
private String endDate;
private String cardPassword;
private String subSystems;
}

22
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonCardListFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonCardListFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private List<DhPersonCardFormDTO> objectList;
}

22
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonDelFormDTO.java

@ -0,0 +1,22 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonDelFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private List<Integer> personIds;
}

39
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonFormDTO.java

@ -0,0 +1,39 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String paperType;
private String paperNumber;
private String name;
private String code;
private Long deptId;
private String sex;
private String birthday;
private String phone;
private String status;
private String personIdentityId;
}

23
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonImgFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonImgFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String personCode;
private String base64file;
}

25
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPersonPageFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPersonPageFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pageNum;
private Integer pageSize;
private String code;
}

27
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPlanFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPlanFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String detail;
private String memo;
private String name;
private Integer type;
}

25
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPlanPageFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPlanPageFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pageNum;
private Integer pageSize;
private String singleCondition;
}

21
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/DhPublicKeyFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.plugin.power.dto.visit.form;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhPublicKeyFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String loginName;
}

23
epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/result/DhChannelResultDTO.java

@ -0,0 +1,23 @@
package com.epmet.plugin.power.dto.visit.result;
import lombok.Data;
import java.io.Serializable;
/**
* 海康社区人员信息下放
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-20
*/
@Data
public class DhChannelResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String privilegeType;
private String resouceCode;
}

37
epmet-plugins-module/pli-power-base/pli-power-base-server/pom.xml

@ -83,6 +83,11 @@
<version>RELEASE</version> <version>RELEASE</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -170,8 +175,9 @@
<hik.cloud.client>111</hik.cloud.client> <hik.cloud.client>111</hik.cloud.client>
<hik.cloud.secret>222</hik.cloud.secret> <hik.cloud.secret>222</hik.cloud.secret>
<!--大华--> <!--大华-->
<dh.cloud.url>https://api2.hik-cloud.com</dh.cloud.url> <dh.cloud.url>http://112.6.213.175:8314</dh.cloud.url>
<dh.cloud.loginName>111</dh.cloud.loginName> <dh.cloud.loginName>shundeju</dh.cloud.loginName>
<dh.cloud.loginPass>hg123456</dh.cloud.loginPass>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -185,10 +191,10 @@
<!-- 数据库配置--> <!-- 数据库配置-->
<spring.datasource.druid.url> <spring.datasource.druid.url>
<![CDATA[jdbc:mysql://rm-bp1l2b53j508j1176xo.mysql.rds.aliyuncs.com:3306/epmet_pli_power?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]> <![CDATA[jdbc:mysql://192.168.1.140:3306/epmet_pli_power?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai]]>
</spring.datasource.druid.url> </spring.datasource.druid.url>
<spring.datasource.druid.username>root</spring.datasource.druid.username> <spring.datasource.druid.username>epmet_pli_power_user</spring.datasource.druid.username>
<spring.datasource.druid.password>Abc@123456</spring.datasource.druid.password> <spring.datasource.druid.password>EpmEt-db-UsEr</spring.datasource.druid.password>
<!-- redis配置 --> <!-- redis配置 -->
<spring.redis.index>0</spring.redis.index> <spring.redis.index>0</spring.redis.index>
<spring.redis.host>192.168.1.140</spring.redis.host> <spring.redis.host>192.168.1.140</spring.redis.host>
@ -201,7 +207,7 @@
<nacos.config.namespace></nacos.config.namespace> <nacos.config.namespace></nacos.config.namespace>
<nacos.config.group></nacos.config.group> <nacos.config.group></nacos.config.group>
<nacos.config-enabled>false</nacos.config-enabled> <nacos.config-enabled>false</nacos.config-enabled>
<nacos.ip>192.168.43.186</nacos.ip> <nacos.ip>192.168.43.33</nacos.ip>
<!--是否开启服务列表变更监听--> <!--是否开启服务列表变更监听-->
<nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable> <nacos.service-list-changed-listening.enable>false</nacos.service-list-changed-listening.enable>
@ -228,8 +234,9 @@
<hik.cloud.client>111</hik.cloud.client> <hik.cloud.client>111</hik.cloud.client>
<hik.cloud.secret>222</hik.cloud.secret> <hik.cloud.secret>222</hik.cloud.secret>
<!--大华--> <!--大华-->
<dh.cloud.url>https://api2.hik-cloud.com</dh.cloud.url> <dh.cloud.url>http://112.6.213.175:8314</dh.cloud.url>
<dh.cloud.loginName>111</dh.cloud.loginName> <dh.cloud.loginName>shundeju</dh.cloud.loginName>
<dh.cloud.loginPass>hg123456</dh.cloud.loginPass>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -290,8 +297,9 @@
<hik.cloud.client>111</hik.cloud.client> <hik.cloud.client>111</hik.cloud.client>
<hik.cloud.secret>222</hik.cloud.secret> <hik.cloud.secret>222</hik.cloud.secret>
<!--大华--> <!--大华-->
<dh.cloud.url>https://api2.hik-cloud.com</dh.cloud.url> <dh.cloud.url>http://112.6.213.175:8314</dh.cloud.url>
<dh.cloud.loginName>111</dh.cloud.loginName> <dh.cloud.loginName>shundeju</dh.cloud.loginName>
<dh.cloud.loginPass>hg123456</dh.cloud.loginPass>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -346,6 +354,10 @@
<hik.cloud.url>https://api2.hik-cloud.com</hik.cloud.url> <hik.cloud.url>https://api2.hik-cloud.com</hik.cloud.url>
<hik.cloud.client>90688b09bb9d40088f7be404ccb347c7</hik.cloud.client> <hik.cloud.client>90688b09bb9d40088f7be404ccb347c7</hik.cloud.client>
<hik.cloud.secret>7b1940707a4240be9c794c5a967a30c9</hik.cloud.secret> <hik.cloud.secret>7b1940707a4240be9c794c5a967a30c9</hik.cloud.secret>
<!--大华-->
<dh.cloud.url>http://112.6.213.175:8314</dh.cloud.url>
<dh.cloud.loginName>shundeju</dh.cloud.loginName>
<dh.cloud.loginPass>hg123456</dh.cloud.loginPass>
</properties> </properties>
</profile> </profile>
<profile> <profile>
@ -404,8 +416,9 @@
<hik.cloud.client>90688b09bb9d40088f7be404ccb347c7</hik.cloud.client> <hik.cloud.client>90688b09bb9d40088f7be404ccb347c7</hik.cloud.client>
<hik.cloud.secret>7b1940707a4240be9c794c5a967a30c9</hik.cloud.secret> <hik.cloud.secret>7b1940707a4240be9c794c5a967a30c9</hik.cloud.secret>
<!--大华--> <!--大华-->
<dh.cloud.url>https://api2.hik-cloud.com</dh.cloud.url> <dh.cloud.url>http://112.6.213.175:8314</dh.cloud.url>
<dh.cloud.loginName>111</dh.cloud.loginName> <dh.cloud.loginName>shundeju</dh.cloud.loginName>
<dh.cloud.loginPass>hg123456</dh.cloud.loginPass>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>

17
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/config/DhCloudProperties.java

@ -14,16 +14,22 @@ import org.springframework.context.annotation.Configuration;
public class DhCloudProperties { public class DhCloudProperties {
/** /**
* 应用ID * URL
*/ */
private String url; private String url;
/** /**
* 应用KEY * 账号
*/ */
private String loginName; private String loginName;
/**
* 账号密码
*/
private String loginPass;
public String getUrl() { public String getUrl() {
return url; return url;
} }
@ -40,4 +46,11 @@ public class DhCloudProperties {
this.loginName = loginName; this.loginName = loginName;
} }
public String getLoginPass() {
return loginPass;
}
public void setLoginPass(String loginPass) {
this.loginPass = loginPass;
}
} }

4
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/utils/HkDeviceUtil.java

@ -109,8 +109,8 @@ public class HkDeviceUtil {
logger.info(result.getMsg()); logger.info(result.getMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员信息下发失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员信息下发失败");
} }
Object RegisterResult = result.getData(); Object registerResult = result.getData();
JSONObject jsonObject = JSON.parseObject(RegisterResult.toString()); JSONObject jsonObject = JSON.parseObject(registerResult.toString());
return jsonObject.getString("personId"); return jsonObject.getString("personId");
} }

1
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/controller/VisitVisitorController.java

@ -86,6 +86,7 @@ public class VisitVisitorController {
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
visitVisitorService.visit(dto); visitVisitorService.visit(dto);
visitVisitorService.doorAuthority(dto);
return new Result(); return new Result();
} }

10
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/VisitVisitorService.java

@ -89,6 +89,16 @@ public interface VisitVisitorService extends BaseService<VisitVisitorEntity> {
*/ */
void visit(VisitVisitorFormDTO dto); void visit(VisitVisitorFormDTO dto);
/**
* 临时授权
*
* @param dto
* @return void
* @author generator
* @date 2022-07-26
*/
void doorAuthority(VisitVisitorFormDTO dto);
/** /**
* 人流量 * 人流量
* *

33
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java

@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.plugin.power.dto.visit.VisitVisitorDTO; import com.epmet.plugin.power.dto.visit.VisitVisitorDTO;
import com.epmet.plugin.power.dto.visit.form.DhPersonFormDTO;
import com.epmet.plugin.power.dto.visit.form.VisitVisitorChartFormDTO; import com.epmet.plugin.power.dto.visit.form.VisitVisitorChartFormDTO;
import com.epmet.plugin.power.dto.visit.form.VisitVisitorFormDTO; import com.epmet.plugin.power.dto.visit.form.VisitVisitorFormDTO;
import com.epmet.plugin.power.dto.visit.result.VisitVisitorChartResultDTO; import com.epmet.plugin.power.dto.visit.result.VisitVisitorChartResultDTO;
@ -131,6 +133,12 @@ public class VisitVisitorServiceImpl extends BaseServiceImpl<VisitVisitorDao, Vi
insert(entity); insert(entity);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void doorAuthority(VisitVisitorFormDTO dto) {
sendAuth(dto);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public List<VisitVisitorChartResultDTO> getTraffic(VisitVisitorChartFormDTO dto) { public List<VisitVisitorChartResultDTO> getTraffic(VisitVisitorChartFormDTO dto) {
@ -148,8 +156,29 @@ public class VisitVisitorServiceImpl extends BaseServiceImpl<VisitVisitorDao, Vi
* @author zhy * @author zhy
* @date 2022/7/28 9:13 * @date 2022/7/28 9:13
*/ */
private void send(VisitVisitorFormDTO dto) { private void sendAuth(VisitVisitorFormDTO dto) {
dhDeviceUtil.sendPerson(dto); DhPersonFormDTO formDTO = new DhPersonFormDTO();
formDTO.setPaperType("身份证");
formDTO.setPaperNumber(dto.getIdCard());
formDTO.setName(dto.getName());
formDTO.setCode(dto.getIdCard().substring(dto.getIdCard().length() - 10));
formDTO.setSex(NumConstant.ZERO_STR.equals(dto.getGender()) ? "女" : "男");
formDTO.setBirthday(dto.getIdCard().substring(6, 10) + "-" + dto.getIdCard().substring(10, 12) + "-" + dto.getIdCard().substring(12, 14));
formDTO.setPhone(dto.getMobile());
formDTO.setStatus("在职");
dhDeviceUtil.addPersonAuth(formDTO, dto.getFaceImg());
}
/**
* 删除权限
*
* @param idCard
* @return void
* @author zhy
* @date 2022/7/28 9:13
*/
private void delAuth(String idCard) {
dhDeviceUtil.dataHandle(idCard.substring(idCard.length() - 10));
} }
} }

704
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/DhDeviceUtil.java

@ -1,26 +1,34 @@
package com.epmet.plugin.power.modules.visit.utils; package com.epmet.plugin.power.modules.visit.utils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.plugin.commons.redis.RedisKeys; import com.epmet.plugin.commons.redis.RedisKeys;
import com.epmet.plugin.power.config.DhCloudProperties; import com.epmet.plugin.power.config.DhCloudProperties;
import com.epmet.plugin.power.dto.hik.form.HikAuthorityFormDTO; import com.epmet.plugin.power.dto.visit.DhTokenDTO;
import com.epmet.plugin.power.dto.hik.form.HikPersonFormDTO; import com.epmet.plugin.power.dto.visit.form.*;
import com.epmet.plugin.power.dto.visit.form.VisitVisitorFormDTO; import com.epmet.plugin.power.dto.visit.result.DhChannelResultDTO;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import javax.imageio.ImageIO;
import java.util.Map; import javax.xml.bind.DatatypeConverter;
import java.awt.image.BufferedImage;
import java.io.*;
import java.math.BigDecimal;
import java.net.URL;
import java.time.LocalDate;
import java.util.*;
/** /**
* 海康设备下放命令 * 海康设备下放命令
@ -40,8 +48,18 @@ public class DhDeviceUtil {
private final String GET_PUBLIC_KEY = "/WPMS/getPublicKey"; private final String GET_PUBLIC_KEY = "/WPMS/getPublicKey";
private final String GET_LOGIN_PASS = "/WPMS/login"; private final String GET_LOGIN_PASS = "/WPMS/login";
private final String SEND_PERSON = "/api/v1/estate/system/person"; private final String GET_DEPARTMENT = "/CardSolution/card/department";
private final String ISSUE_AUTHORITY = "/api/v1/estate/entranceGuard/permissions/actions/authorityIssued"; private final String GET_PERSON_IDENTITY = "/CardSolution/card/person/personidentity";
private final String GET_DOOR_PLAN = "/CardSolution/card/accessControl/timeQuantum/1/page";
private final String GET_DOOR_CHANNEL = "/CardSolution/card/accessControl/channel/bycondition/combined";
private final String ADD_PERSON = "/CardSolution/card/person";
private final String LIST_PERSON = "/CardSolution/card/person/bycondition/combined";
private final String DEL_PERSON = "/CardSolution/card/person/delete";
private final String ADD_PERSON_IMG = "/CardSolution/common/saveMobileBase64ImageToByte";
private final String ADD_AUTH = "/CardSolution/card/accessControl/doorAuthority/update";
private final String LIST_CARD = "/CardSolution/card/card/bycondition/combined";
private final String DEL_CARD = "/CardSolution/card/card/returnByNumber/";
private final String OPEN_CARD = "/CardSolution/card/card/open/batch";
/** /**
* 获取publicKey * 获取publicKey
@ -51,7 +69,7 @@ public class DhDeviceUtil {
* @author zhy * @author zhy
* @date 2022/5/20 16:40 * @date 2022/5/20 16:40
*/ */
public String getAccessToken() { public String getPublicKey() {
String key = RedisKeys.getDhPublicKey(); String key = RedisKeys.getDhPublicKey();
Object obj = redisUtils.get(key); Object obj = redisUtils.get(key);
if (null != obj) { if (null != obj) {
@ -59,22 +77,25 @@ public class DhDeviceUtil {
} }
String url = dhCloudProperties.getUrl().concat(GET_PUBLIC_KEY); String url = dhCloudProperties.getUrl().concat(GET_PUBLIC_KEY);
Map<String, Object> paramsMap = new HashMap<>(4); Map<String, String> paramsMap = new HashMap<>(4);
paramsMap.put("loginName", dhCloudProperties.getLoginName());
DhPublicKeyFormDTO dto = new DhPublicKeyFormDTO();
dto.setLoginName(dhCloudProperties.getLoginName());
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
String data = HttpClientManager.getInstance().sendPost(url, paramsMap).getData();
if (null == data) { if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "AccessToken获取失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "publicKey获取失败");
} }
JSONObject toResult = JSON.parseObject(data); JSONObject toResult = JSON.parseObject(data);
if (!toResult.containsKey("publicKey")) { if (!toResult.containsKey("publicKey")) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "AccessToken获取失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "publicKey获取失败");
} }
String accessToken = toResult.get("publicKey").toString(); String publicKey = toResult.get("publicKey").toString();
redisUtils.set(key, accessToken, RedisUtils.MINUTE_THIRTY_EXPIRE); redisUtils.set(key, publicKey, RedisUtils.MINUTE_THIRTY_EXPIRE);
return accessToken; return publicKey;
} }
/** /**
@ -85,28 +106,37 @@ public class DhDeviceUtil {
* @author zhy * @author zhy
* @date 2022/5/20 16:40 * @date 2022/5/20 16:40
*/ */
public DhToken getLoginPass(String publicKey) { public DhTokenDTO getLoginPass(String publicKey) {
String key = RedisKeys.getDhToken(); String key = RedisKeys.getDhToken();
Object obj = redisUtils.get(key); Object obj = redisUtils.get(key);
if (null != obj) { if (null != obj) {
return (DhToken) obj; return (DhTokenDTO) obj;
} }
String url = dhCloudProperties.getUrl().concat(GET_LOGIN_PASS); String url = dhCloudProperties.getUrl().concat(GET_LOGIN_PASS);
Map<String, Object> paramsMap = new HashMap<>(8); Map<String, String> paramsMap = new HashMap<>(4);
paramsMap.put("loginName", dhCloudProperties.getLoginName());
paramsMap.put("loginPass", publicKey); DhLoginPassFormDTO dto = new DhLoginPassFormDTO();
dto.setLoginName(dhCloudProperties.getLoginName());
String pwd;
try {
pwd = RSAUtils.getPwdByRsa(publicKey, dhCloudProperties.getLoginPass());
} catch (Exception e) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "loginPass加密失败");
}
dto.setLoginPass(pwd);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
String data = HttpClientManager.getInstance().sendPost(url, paramsMap).getData();
if (null == data) { if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "AccessToken获取失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "loginPass获取失败");
} }
JSONObject toResult = JSON.parseObject(data); JSONObject toResult = JSON.parseObject(data);
if (!toResult.containsKey("token")) { if (!toResult.containsKey("token")) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "AccessToken获取失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "loginPass获取失败");
} }
DhToken token = new DhToken(); DhTokenDTO token = new DhTokenDTO();
token.setId(toResult.get("id").toString()); token.setId(toResult.get("id").toString());
token.setLoginName(toResult.get("loginName").toString()); token.setLoginName(toResult.get("loginName").toString());
token.setPublicKey(toResult.get("publicKey").toString()); token.setPublicKey(toResult.get("publicKey").toString());
@ -116,69 +146,631 @@ public class DhDeviceUtil {
} }
/** /**
* 下发人员 * 新增部门
* *
* @param dto * @param
* @return java.lang.String 人员ID * @return java.lang.String
* @author zhy
* @date 2022/5/23 10:08
*/
public Long getDept() {
String url = dhCloudProperties.getUrl().concat(GET_DEPARTMENT);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, Object> paramsMap = new HashMap<>(4);
// DhDeptFormDTO dto = new DhDeptFormDTO();
// dto.setName("访客部门");
// dto.setParentId(1L);
String data = HttpClientManager.getInstance().sendGet(url, paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询部门列表失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询部门列表失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONArray jsonArray = JSON.parseArray(registerResult.toString());
for (int i = 0; i < jsonArray.size(); i++) {
if ("临时人员".equals(jsonArray.getJSONObject(i).get("name").toString())) {
return Long.parseLong(jsonArray.getJSONObject(i).get("id").toString());
}
}
return null;
}
/**
* 人员预处理
*
* @param
* @return java.lang.String
* @author zhy * @author zhy
* @date 2022/5/23 10:08 * @date 2022/5/23 10:08
*/ */
public String sendPerson(VisitVisitorFormDTO dto) { public void personHandle(String code) {
String url = dhCloudProperties.getUrl().concat(SEND_PERSON); String url = dhCloudProperties.getUrl().concat(LIST_PERSON);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4); Map<String, String> paramsMap = new HashMap<>(4);
DhToken token = getLoginPass(getAccessToken()); DhPersonPageFormDTO dto = new DhPersonPageFormDTO();
String urlParam = "?userId=" + token.getId() + "&username=" + token.getLoginName() + "&token=" + token.getToken(); dto.setPageNum(1);
dto.setPageSize(100);
dto.setCode(code);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询人员列表失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询人员列表失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONObject jsonObject = JSON.parseObject(registerResult.toString());
List<Integer> ids = new ArrayList<>();
JSONArray jsonArray = JSON.parseArray(jsonObject.get("pageData").toString());
for (int i = 0; i < jsonArray.size(); i++) {
ids.add(Integer.parseInt(jsonArray.getJSONObject(i).get("id").toString()));
}
if (!ids.isEmpty()) {
DhPersonDelFormDTO del = new DhPersonDelFormDTO();
del.setPersonIds(ids);
delPerson(del);
}
}
/**
* 卡片预处理
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 10:08
*/
public void cardHandle(String code) {
String url = dhCloudProperties.getUrl().concat(LIST_CARD);
String urlParam = getDhUrlParams();
url = url + urlParam; url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4);
DhCardPageFormDTO dto = new DhCardPageFormDTO();
dto.setPageNum(1);
dto.setPageSize(100);
dto.setPersonCode(code);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData(); String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) { if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员信息下发失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询卡片列表失败");
} }
JSONObject toResult = JSON.parseObject(data); JSONObject toResult = JSON.parseObject(data);
Result result = ConvertUtils.mapToEntity(toResult, Result.class); DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("code")) { if (null != toResult.get("success")) {
result.setCode(((Integer) toResult.get("code")).intValue()); result.setCode(200);
} }
if (NumConstant.TWO_HUNDRED != result.getCode()) { if (!result.getSuccess()) {
logger.info(result.getMsg()); logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员信息下发失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询卡片列表失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONObject jsonObject = JSON.parseObject(registerResult.toString());
JSONArray jsonArray = JSON.parseArray(jsonObject.get("pageData").toString());
for (int i = 0; i < jsonArray.size(); i++) {
delCard(jsonArray.getJSONObject(i).get("cardNumber").toString());
} }
Object RegisterResult = result.getData();
JSONObject jsonObject = JSON.parseObject(RegisterResult.toString());
return jsonObject.getString("personId");
} }
/** /**
* 下发人员权限 * 删除人员
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 10:08
*/
public void delPerson(DhPersonDelFormDTO dto) {
String url = dhCloudProperties.getUrl().concat(DEL_PERSON);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "删除人员失败");
}
}
/**
* 退卡
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 10:08
*/
public void delCard(String cardNum) {
String url = dhCloudProperties.getUrl().concat(DEL_CARD);
url = url + cardNum;
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, StringUtils.EMPTY, paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "删除卡片失败");
}
}
/**
* 获取身份
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public String getIdentity() {
String url = dhCloudProperties.getUrl().concat(GET_PERSON_IDENTITY);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, Object> paramsMap = new HashMap<>(4);
// DhIdentityFormDTO dto = new DhIdentityFormDTO();
// dto.setName("访客");
// dto.setSubsidyAmount(0D);
// dto.setIsCashRecharge(1);
// dto.setIsMachineRecharge(1);
String data = HttpClientManager.getInstance().sendGet(url, paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取身份列表失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取身份列表失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONArray jsonArray = JSON.parseArray(registerResult.toString());
for (int i = 0; i < jsonArray.size(); i++) {
if ("默认身份".equals(jsonArray.getJSONObject(i).get("name").toString())) {
return jsonArray.getJSONObject(i).get("id").toString();
}
}
return "";
}
/**
* 获取开门计划
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public Long getPlan() {
String url = dhCloudProperties.getUrl().concat(GET_DOOR_PLAN);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4);
DhPlanPageFormDTO dto = new DhPlanPageFormDTO();
dto.setPageNum(1);
dto.setPageSize(100);
dto.setSingleCondition("默认");
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询开门计划失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询开门计划失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONObject jsonObject = JSON.parseObject(registerResult.toString());
JSONArray jsonArray = JSON.parseArray(jsonObject.get("pageData").toString());
if (jsonArray.size() > 0) {
return Long.parseLong(jsonArray.getJSONObject(0).get("id").toString());
}
return null;
}
/**
* 查询通道
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public List<DhChannelResultDTO> getChannel() {
String url = dhCloudProperties.getUrl().concat(GET_DOOR_CHANNEL);
String urlParam = getDhUrlParams();
url = url + urlParam;
Map<String, String> paramsMap = new HashMap<>(4);
DhChannelPageFormDTO dto = new DhChannelPageFormDTO();
dto.setPageSize(100);
dto.setPageSize(1);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询通道列表失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询通道列表失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
JSONObject jsonObject = JSON.parseObject(registerResult.toString());
JSONArray jsonArray = JSON.parseArray(jsonObject.get("pageData").toString());
List<DhChannelResultDTO> list = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonItem = jsonArray.getJSONObject(0);
DhChannelResultDTO channel = new DhChannelResultDTO();
channel.setPrivilegeType("1");
channel.setResouceCode(jsonItem.get("channelCode").toString());
list.add(channel);
}
return list;
}
/**
* 新增人员
* *
* @param dto * @param dto
* @return java.lang.String * @return java.lang.String
* @author zhy * @author zhy
* @date 2022/5/23 11:04 * @date 2022/5/23 11:04
*/ */
public String authorityIssued(HikAuthorityFormDTO dto) { public Long addPerson(DhPersonFormDTO dto) {
String url = dhCloudProperties.getUrl().concat(ISSUE_AUTHORITY); // 数据预处理
dataHandle(dto.getCode());
String url = dhCloudProperties.getUrl().concat(ADD_PERSON);
String urlParam = getDhUrlParams();
url = url + urlParam;
Long deptId = getDept();
if (null == deptId) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询临时人员部门失败");
}
String identity = getIdentity();
if (StringUtils.isBlank(identity)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取身份失败");
}
dto.setDeptId(deptId);
dto.setPersonIdentityId(identity);
Map<String, String> paramsMap = new HashMap<>(4); Map<String, String> paramsMap = new HashMap<>(4);
paramsMap.put("Authorization", getAccessToken());
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData(); String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(dto), paramsMap).getData();
if (null == data) { if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员权限下发失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "新增人员失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "新增人员失败!" + result.getErrMsg());
}
Object registerResult = result.getData();
if (null != registerResult) {
return Long.parseLong(registerResult.toString());
}
return null;
}
/**
* 下发人员头像
*
* @param dto
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public String addPersonImg(DhPersonFormDTO dto, String imgUrl) {
DhPersonImgFormDTO imgFormDTO = new DhPersonImgFormDTO();
String url = dhCloudProperties.getUrl().concat(ADD_PERSON_IMG);
String urlParam = getDhUrlParams();
url = url + urlParam;
imgFormDTO.setPersonCode(dto.getCode());
imgFormDTO.setBase64file(getBase64ByUrl(imgUrl));
Map<String, String> paramsMap = new HashMap<>(4);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(imgFormDTO), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下发人员头像失败");
} }
JSONObject toResult = JSON.parseObject(data); JSONObject toResult = JSON.parseObject(data);
Result result = ConvertUtils.mapToEntity(toResult, Result.class); DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("code")) { if (null != toResult.get("success")) {
result.setCode(((Integer) toResult.get("code")).intValue()); result.setCode(200);
} }
if (NumConstant.TWO_HUNDRED != result.getCode()) { if (!result.getSuccess()) {
logger.info(result.getMsg()); logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员权限下发失败"); throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下发人员头像失败!" + result.getErrMsg());
} else {
return "success";
} }
return "success"; }
/**
* 人员开卡
*
* @param dto
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public String addPersonCard(DhPersonFormDTO dto) {
Long personId = addPerson(dto);
if (personId == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "添加人员信息失败");
}
DhPersonCardListFormDTO cardListFormDTO = new DhPersonCardListFormDTO();
List<DhPersonCardFormDTO> cardList = new ArrayList<>();
DhPersonCardFormDTO cardFormDTO = new DhPersonCardFormDTO();
String url = dhCloudProperties.getUrl().concat(OPEN_CARD);
String urlParam = getDhUrlParams();
url = url + urlParam;
cardFormDTO.setPersonId(personId);
cardFormDTO.setPersonName(dto.getName());
cardFormDTO.setCardNumber(generateNiceString(8));
cardFormDTO.setCardType("0");
cardFormDTO.setCategory("0");
cardFormDTO.setCardStatus("ACTIVE");
cardFormDTO.setStartDate(LocalDate.now().toString());
cardFormDTO.setEndDate(LocalDate.now().plusDays(1L).toString());
String pwd;
try {
pwd = RSAUtils.getPwdByRsa(getPublicKey(), "123456");
} catch (Exception e) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "密码加密失败");
}
cardFormDTO.setCardPassword(pwd);
cardFormDTO.setSubSystems("1");
cardList.add(cardFormDTO);
cardListFormDTO.setObjectList(cardList);
Map<String, String> paramsMap = new HashMap<>(4);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(cardListFormDTO), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员开卡失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "人员开卡失败!" + result.getErrMsg());
} else {
return cardFormDTO.getCardNumber();
}
}
/**
* 下发人员权限
*
* @param dto
* @return java.lang.String
* @author zhy
* @date 2022/5/23 11:04
*/
public String addPersonAuth(DhPersonFormDTO dto, String imgUrl) {
String personCard = addPersonCard(dto);
if (StringUtils.isBlank(personCard)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "开卡失败");
} else if (StringUtils.isNotBlank(imgUrl)) {
addPersonImg(dto, imgUrl);
}
List<DhChannelResultDTO> channel = getChannel();
if (channel.isEmpty()) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取通道失败");
}
Long plan = getPlan();
if (plan == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取开门计划失败");
}
DhAuthFormDTO authFormDTO = new DhAuthFormDTO();
String url = dhCloudProperties.getUrl().concat(ADD_AUTH);
String urlParam = getDhUrlParams();
url = url + urlParam;
authFormDTO.setCardNumber(personCard);
authFormDTO.setTimeQuantumId(plan.toString());
authFormDTO.setCardPrivilegeDetails(channel);
Map<String, String> paramsMap = new HashMap<>(4);
String data = HttpClientManager.getInstance().sendPostByJSONAndHeader(url, JSON.toJSONString(authFormDTO), paramsMap).getData();
if (null == data) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下发人员权限失败");
}
JSONObject toResult = JSON.parseObject(data);
DhResult result = ConvertUtils.mapToEntity(toResult, DhResult.class);
if (null != toResult.get("success")) {
result.setCode(200);
}
if (!result.getSuccess()) {
logger.info(result.getErrMsg());
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下发人员权限失败!" + result.getErrMsg());
} else {
return "success";
}
}
/**
* 拼接url固定参数
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/7/28 16:09
*/
private String getDhUrlParams() {
DhTokenDTO token = getLoginPass(getPublicKey());
return "?userId=" + token.getId() + "&username=" + token.getLoginName() + "&token=" + token.getToken();
}
private String getBase64ByUrl(String imgUrl) {
String ossDomain;
byte[] fileBytes;
try {
URL url = new URL(imgUrl);
DataInputStream dataInputStream = new DataInputStream(url.openStream());
byte[] originBytes = toByteArray(dataInputStream);
fileBytes = compressPicCycle(originBytes, 100L, 0.3);
} catch (IOException e) {
logger.error("图片上传异常", e);
throw new RenException("图片上传异常");
}
return DatatypeConverter.printBase64Binary(fileBytes);
}
/**
* @param bytes 原图片字节数组
* @param desFileSize 指定图片大小,单位 kb
* @param accuracy 精度,递归压缩的比率,建议小于0.9
* @return
*/
private byte[] compressPicCycle(byte[] bytes, long desFileSize, double accuracy) throws IOException {
// 获取目标图片
long fileSize = bytes.length;
System.out.println("=====fileSize======== " + fileSize);
// 判断图片大小是否小于指定图片大小
if (fileSize <= desFileSize * 1024) {
return bytes;
}
//计算宽高
BufferedImage bim = ImageIO.read(new ByteArrayInputStream(bytes));
int imgWidth = bim.getWidth();
System.out.println(imgWidth + "====imgWidth=====");
int imgHeight = bim.getHeight();
int desWidth = new BigDecimal(imgWidth).multiply(new BigDecimal(accuracy)).intValue();
System.out.println(desWidth + "====desWidth=====");
int desHeight = new BigDecimal(imgHeight).multiply(new BigDecimal(accuracy)).intValue();
ByteArrayOutputStream baos = new ByteArrayOutputStream(); //字节输出流(写入到内存)
Thumbnails.of(new ByteArrayInputStream(bytes)).size(desWidth, desHeight).outputQuality(accuracy).toOutputStream(baos);
//如果不满足要求,递归直至满足要求
return compressPicCycle(baos.toByteArray(), desFileSize, accuracy);
}
/**
* inputstream输入流转换成byte[]字节数组
*
* @param input
* @return byte[]
* @author yinzuomei
* @date 2020/2/27 16:09
*/
private byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toByteArray();
}
/**
* 随机生成16进制字符串
*
* @param len
* @return java.lang.String
* @author zhy
* @date 2022/7/29 9:47
*/
private String generateNiceString(int len) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
sb.append(Integer.toHexString(new Random().nextInt(16)));
}
return sb.toString().toUpperCase();
}
/**
* 退卡然后删除人员
*
* @param code
* @return void
* @author zhy
* @date 2022/8/3 10:48
*/
public void dataHandle(String code) {
// 先退卡
cardHandle(code);
// 再删人员
personHandle(code);
} }
} }

142
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/DhResult.java

@ -0,0 +1,142 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.plugin.power.modules.visit.utils;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ErrorCode;
import com.epmet.commons.tools.utils.MessageUtils;
import com.epmet.commons.tools.utils.Result;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
/**
* 响应数据
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
public class DhResult<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 编码0表示成功其他值表示失败
*/
private Integer code = 0;
/**
* 消息内容
*/
private String errMsg = "success";
/**
* 内部信息
*/
private Boolean success = true;
/**
* 响应数据
*/
private T data;
public DhResult<T> ok(T data) {
this.setData(data);
return this;
}
public boolean success(){
return code == 0;
}
/**
* 返回
* "code": 8000,
* "msg": "服务器开小差了...",
*/
public DhResult<T> error() {
this.code = EpmetErrorCode.SERVER_ERROR.getCode();
this.errMsg = EpmetErrorCode.getMsg(code);
if (StringUtils.isBlank(this.errMsg)) {
this.errMsg = MessageUtils.getMessage(this.code);
}
return this;
}
/**
* 根据错误编码查询msg返回
*/
public DhResult<T> error(int code) {
this.code = code;
this.errMsg = EpmetErrorCode.getMsg(code);
if (StringUtils.isBlank(this.errMsg)) {
this.errMsg = MessageUtils.getMessage(this.code);
}
return this;
}
/**
* 传入错误编码+msg返回
*/
public DhResult<T> error(int code, String msg) {
this.code = code;
this.errMsg = msg;
return this;
}
/**
*
* @param msg
* @return 此方法废弃统一使用
* logger.error(XXXX);
* throw new RenException(XXXX);
* XXXX定义常量里
*/
@Deprecated
public DhResult<T> error(String msg) {
this.code = ErrorCode.INTERNAL_SERVER_ERROR;
this.errMsg = msg;
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

18
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/utils/RSAUtils.java

@ -18,6 +18,7 @@ import java.util.Map;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import cn.hutool.core.codec.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
/** /**
@ -305,5 +306,20 @@ public class RSAUtils{
keyMap.put(PRIVATE_KEY, privateKey); keyMap.put(PRIVATE_KEY, privateKey);
return keyMap; return keyMap;
} }
/**
* 密码加密
*
* @param
* @return java.lang.String
* @author zhy
* @date 2022/7/29 10:46
*/
public static String getPwdByRsa(String publicKey, String str) throws Exception {
byte[] decoded = Base64.decode(publicKey);
RSAPublicKey pubKey =(RSAPublicKey)KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));// RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
return Base64.encode(cipher.doFinal(str.getBytes("UTF-8")));
}
} }

1
epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/resources/bootstrap.yml

@ -136,6 +136,7 @@ dh:
cloud: cloud:
url: @dh.cloud.url@ url: @dh.cloud.url@
loginName: @dh.cloud.loginName@ loginName: @dh.cloud.loginName@
loginPass: @dh.cloud.loginPass@
# 停机选项 # 停机选项
shutdown: shutdown:

Loading…
Cancel
Save