diff --git a/epdc-cloud-admin/pom.xml b/epdc-cloud-admin/pom.xml
index 193c634..9284c43 100644
--- a/epdc-cloud-admin/pom.xml
+++ b/epdc-cloud-admin/pom.xml
@@ -189,6 +189,8 @@
organizationGroup
categoryGroup
categoryGroup
+
+ http://192.168.1.130:8080/api
@@ -227,6 +229,8 @@
organizationGroup
categoryGroup
categoryGroup
+
+ https://epmet-dev.elinkservice.cn/api
@@ -272,6 +276,8 @@
organizationGroup
categoryGroup
categoryGroup
+
+ https://epmet-open.elinkservice.cn/api
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
index b68e0e0..c04b1e3 100644
--- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
@@ -18,6 +18,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.*;
+import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO;
import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO;
import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO;
import com.elink.esua.epdc.optimize.modules.deptlevel.service.OptSysDeptService;
@@ -28,7 +29,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -303,4 +303,17 @@ public class SysDeptController {
List list = sysDeptService.listAllDeptInfo(formDTO);
return new Result>().ok(list);
}
+
+ /**
+ * 获取产品端areaCode
+ *
+ * @param dto
+ * @return com.elink.esua.epdc.commons.tools.utils.Result>
+ * @author zhy
+ * @date 2021/1/11 14:34
+ */
+ @GetMapping("getEpmetAreaCode")
+ public Result getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto) {
+ return new Result().ok(sysDeptService.getEpmetAreaCode(dto));
+ }
}
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java
index 7c94070..32aef2b 100644
--- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java
@@ -46,6 +46,10 @@ public class SysDeptEntity extends BaseEntity {
* 区域编码
*/
private String areaCode;
+ /**
+ * 区域编码
+ */
+ private String allAreaCode;
/**
* 排序
*/
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/jwt/JwtUtils.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/jwt/JwtUtils.java
new file mode 100644
index 0000000..cc7f693
--- /dev/null
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/jwt/JwtUtils.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.elink.esua.epdc.jwt;
+
+import com.elink.esua.epdc.properties.EpmetProperties;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * Jwt工具类
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+@Component
+public class JwtUtils {
+
+ @Autowired
+ private EpmetProperties epmetProperties;
+
+ /**
+ * 生成上报接口accessToken
+ *
+ * @param claims
+ * @return java.lang.String
+ * @author Liuchuang
+ * @since 2020/9/7 14:11
+ */
+ public String getEpmetAccessToken(Map claims){
+ return Jwts.builder()
+ .setHeaderParam("typ", "JWT")
+ .setClaims(claims)
+ .signWith(SignatureAlgorithm.HS512, epmetProperties.getSecret())
+ .compact();
+ }
+}
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/properties/EpmetProperties.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/properties/EpmetProperties.java
new file mode 100644
index 0000000..b9723e8
--- /dev/null
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/properties/EpmetProperties.java
@@ -0,0 +1,67 @@
+package com.elink.esua.epdc.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 党群e事通接口配置
+ *
+ * @Author:liuchuang
+ * @Date:2020/8/20 13:22
+ */
+@Configuration
+@ConfigurationProperties(prefix = "epmet.config")
+public class EpmetProperties {
+
+ /**
+ * 应用ID
+ */
+ private String appId;
+
+ /**
+ * 接口前缀
+ */
+ private String url;
+
+ /**
+ * 生成AccessToken密钥
+ */
+ private String secret;
+
+ /**
+ * 客户ID
+ */
+ private String customerId;
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+}
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
index e53d913..cc159bb 100644
--- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
@@ -13,6 +13,7 @@ import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
+import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO;
import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO;
import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO;
import com.elink.esua.epdc.entity.SysDeptEntity;
@@ -279,4 +280,14 @@ public interface SysDeptService extends BaseService {
* @date 2020/5/14 10:11
*/
DeptOption getBusinessDeptByUser();
+
+ /**
+ * 获取产品端areaCode
+ *
+ * @param dto
+ * @return java.util.List
+ * @author zhy
+ * @date 2021/1/11 18:01
+ */
+ List getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto);
}
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
index 33bd05e..49e362a 100644
--- a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
@@ -9,17 +9,11 @@
package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil;
-import cn.hutool.db.handler.HandleHelper;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
-import com.elink.esua.epdc.commons.tools.constant.Constant;
-import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
-import com.elink.esua.epdc.commons.tools.constant.NumConstant;
-import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant;
-import com.elink.esua.epdc.commons.tools.constant.*;
import com.elink.esua.epdc.commons.tools.constant.*;
import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
@@ -38,7 +32,11 @@ import com.elink.esua.epdc.constant.RoleTypeKeyConstant;
import com.elink.esua.epdc.dao.SysDeptDao;
import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
+import com.elink.esua.epdc.dto.epdc.form.UserSysDeptAreaCodeFormDTO;
import com.elink.esua.epdc.dto.epdc.form.UserSysDeptInfoFormDTO;
+import com.elink.esua.epdc.dto.epdc.result.AreaCodeChildResultDTO;
+import com.elink.esua.epdc.dto.epdc.result.AreaCodeParentResultDTO;
+import com.elink.esua.epdc.dto.epdc.result.UserSysDeptAreaCodeResultDTO;
import com.elink.esua.epdc.dto.epdc.result.UserSysDeptInfoResultDTO;
import com.elink.esua.epdc.entity.SysDeptEntity;
import com.elink.esua.epdc.feign.GroupFeignClient;
@@ -46,6 +44,7 @@ import com.elink.esua.epdc.rocketmq.dto.OrganizationModifyDTO;
import com.elink.esua.epdc.rocketmq.producer.OrganizationModifyProducer;
import com.elink.esua.epdc.service.SysDeptService;
import com.elink.esua.epdc.service.SysUserService;
+import com.elink.esua.epdc.utils.EpmetUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
@@ -85,6 +84,9 @@ public class SysDeptServiceImpl extends BaseServiceImpl deptNameList = Lists.newArrayList();
SysDeptEntity dept;
- for (int i = 0; i < pidArray.length; i++) {
- dept = baseDao.selectById(Long.parseLong(pidArray[i]));
+ for (String s : pidArray) {
+ dept = baseDao.selectById(Long.parseLong(s));
deptNameList.add(dept.getName());
}
parentDeptNames = StringUtils.join(deptNameList, StrConstant.HYPHEN);
@@ -1104,11 +1106,59 @@ public class SysDeptServiceImpl extends BaseServiceImpl 0) {
map.put("deptId", formDTO.getDeptIdList().get(0));
}
- if (formDTO.getDeptName() != null && formDTO.getDeptName() != "") {
+ if (formDTO.getDeptName() != null && !"".equals(formDTO.getDeptName())) {
map.put("deptName", formDTO.getDeptName());
}
- List list = baseDao.selectListAllDeptInfo(map); // 获取全部的部门信息
- return list;
+ return baseDao.selectListAllDeptInfo(map);
+ }
+
+ @Override
+ public List getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto) {
+
+ String deptAreaCodeOptionKey = RedisKeys.getAdminUserDeptAreaCodeOptionKey(dto.getRootAreaCode(), dto.getRootAreaLevel());
+ Object obj = redisUtils.get(deptAreaCodeOptionKey);
+ if (null == obj) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put(EpmetConstant.SCREEN_ROOT_AREA_CODE, dto.getRootAreaCode());
+ jsonObject.put(EpmetConstant.SCREEN_ROOT_AREA_LEVEL, dto.getRootAreaLevel());
+
+ // 从产品端获取数据
+ EpmetResultDTO resultDTO = epmetUtils.httpPost(EpmetConstant.EPMET_SYS_DEPT_AREA_CODE, JSONObject.toJSONString(jsonObject), EpmetResultDTO.class);
+ List resultDTOList = JSONObject.parseArray(resultDTO.getData(), UserSysDeptAreaCodeResultDTO.class);
+
+ // 转换一下从产品返回数据的格式
+ List options = new ArrayList();
+ convertAreaCodeResult(resultDTOList, options);
+
+ redisUtils.set(deptAreaCodeOptionKey, options);
+
+ obj = redisUtils.get(deptAreaCodeOptionKey);
+ }
+ return (List) obj;
+ }
+
+ /**
+ * 如果产品返回数据中的children为空,那么除掉这个children属性
+ *
+ * @param fromDTO
+ * @param toDTO
+ * @return void
+ * @author zhy
+ * @date 2021/1/11 18:02
+ */
+ private void convertAreaCodeResult(List fromDTO, List toDTO) {
+ fromDTO.forEach(item -> {
+ if (item.getChildren().isEmpty()) {
+ AreaCodeChildResultDTO child = ConvertUtils.sourceToTarget(item, AreaCodeChildResultDTO.class);
+ toDTO.add(child);
+ } else {
+ AreaCodeParentResultDTO dto = ConvertUtils.sourceToTarget(item, AreaCodeParentResultDTO.class);
+ List children = new ArrayList();
+ this.convertAreaCodeResult(item.getChildren(), children);
+ dto.setChildren(children);
+ toDTO.add(dto);
+ }
+ });
}
/**
diff --git a/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/utils/EpmetUtils.java b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/utils/EpmetUtils.java
new file mode 100644
index 0000000..a990bbc
--- /dev/null
+++ b/epdc-cloud-admin/src/main/java/com/elink/esua/epdc/utils/EpmetUtils.java
@@ -0,0 +1,103 @@
+package com.elink.esua.epdc.utils;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.elink.esua.epdc.commons.tools.constant.EpmetConstant;
+import com.elink.esua.epdc.commons.tools.constant.NumConstant;
+import com.elink.esua.epdc.commons.tools.exception.RenException;
+import com.elink.esua.epdc.commons.tools.utils.Result;
+import com.elink.esua.epdc.dto.EpmetResultDTO;
+import com.elink.esua.epdc.jwt.JwtUtils;
+import com.elink.esua.epdc.properties.EpmetProperties;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class EpmetUtils {
+
+ private final Logger logger = LogManager.getLogger(getClass());
+
+ @Autowired
+ private EpmetProperties epmetProperties;
+
+ @Autowired
+ private JwtUtils jwtUtils;
+
+ /**
+ * 获取产品端数据
+ *
+ * @param urlSuffix 接口地址后缀
+ * @param param 入参
+ * @param returnClass 返回类型
+ * @return T
+ * @author zhy
+ * @date 2021/1/11 11:10
+ */
+ public T httpPost(String urlSuffix, String param, Class returnClass) {
+ // 应用ID
+ String appId = epmetProperties.getAppId();
+ // 生成AccessToken
+ String accessToken = getEpmetAccessToken();
+ // 接口地址
+ String url = epmetProperties.getUrl().concat(urlSuffix);
+ HttpResponse response;
+ response = HttpRequest.post(url).body(param)
+ .header(EpmetConstant.HEARD_KEY_ACCESS_TOKEN, accessToken)
+ .header(EpmetConstant.HEARD_KEY_APP_ID, appId)
+ .header(EpmetConstant.SCREEN_CONTENT_TYPE, "application/json")
+ .header(EpmetConstant.SCREEN_DATA_TYPE, EpmetConstant.SCREEN_DATA_TYPE_REAL)
+ .execute();
+ if (NumConstant.TWO_HUNDRED != response.getStatus()) {
+ logger.error("数据上报失败, 返回状态:{}, 请求参数:{appId:{}, url:{}, accessToken:{}, param:{}}",
+ response.getStatus(), appId, url, accessToken, param);
+ throw new RenException("网络开小差了,请稍后再试");
+ }
+ JSONObject jsonObject = JSONObject.parseObject(response.body());
+ if (!NumConstant.ZERO_STR.equals(jsonObject.get(EpmetConstant.RESULT_KEY_CODE).toString())) {
+ logger.info("数据上报失败:{},请求地址:{},请求参数:{}", JSONObject.toJSONString(response.body()), url, param);
+ throw new RenException("网络开小差了,请稍后再试");
+ }
+
+ logger.info("请求产品侧接口成功:::请求地址=={}:::接口返回=={}", url, JSONObject.toJSONString(response.body()));
+ T result = JSON.parseObject(response.body(), returnClass);
+ // 业务处理异常
+ if (result instanceof EpmetResultDTO) {
+ EpmetResultDTO epmetResultDto = (EpmetResultDTO) result;
+ if (!epmetResultDto.success()) {
+ logger.error("产品侧接口返回数据异常:::请求地址=={}:::请求参数=={}:::返回数据=={}", url, param, response.body());
+ throw new RenException(epmetResultDto.getInternalMsg());
+ }
+ } else if (result instanceof Result) {
+ Result r = (Result) result;
+ if (!r.success()) {
+ logger.error("产品侧接口返回数据异常:::请求地址=={}:::请求参数=={}:::返回数据=={}", url, param, response.body());
+ throw new RenException(r.getMsg());
+ }
+ }
+ // json格式化接口返回数据
+ return result;
+ }
+
+ /**
+ * 生成上报接口accessToken
+ *
+ * @return java.lang.String
+ * @author Liuchuang
+ * @since 2020/9/7 14:15
+ */
+ private String getEpmetAccessToken() {
+ Map accessTokenMap = new HashMap<>(3);
+ accessTokenMap.put(EpmetConstant.ACCESS_TOKEN_KEY_CUSTOMER_ID, epmetProperties.getCustomerId());
+ accessTokenMap.put(EpmetConstant.ACCESS_TOKEN_KEY_APP_ID, epmetProperties.getAppId());
+ accessTokenMap.put(EpmetConstant.ACCESS_TOKEN_KEY_TS, System.currentTimeMillis());
+
+ return jwtUtils.getEpmetAccessToken(accessTokenMap);
+ }
+}
diff --git a/epdc-cloud-admin/src/main/resources/application-dev.yml b/epdc-cloud-admin/src/main/resources/application-dev.yml
index b78cba8..efca7b9 100644
--- a/epdc-cloud-admin/src/main/resources/application-dev.yml
+++ b/epdc-cloud-admin/src/main/resources/application-dev.yml
@@ -8,9 +8,9 @@ spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://47.104.224.45:3308/yushan_esua_epdc_admin?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
- username: epdcyushan
- password: elink833066
+ url: jdbc:mysql://rm-m5eguiv2827bdye798o.mysql.rds.aliyuncs.com:10001/yushan_esua_epdc_admin?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: yushan_epdc_test
+ password: elink-epdc@yushan
#Oracle
# driver-class-name: oracle.jdbc.OracleDriver
# url: jdbc:oracle:thin:@localhost:1521:xe
diff --git a/epdc-cloud-admin/src/main/resources/application.yml b/epdc-cloud-admin/src/main/resources/application.yml
index 3b01481..1de2281 100644
--- a/epdc-cloud-admin/src/main/resources/application.yml
+++ b/epdc-cloud-admin/src/main/resources/application.yml
@@ -121,3 +121,10 @@ rocketmq:
consumer:
group: @rocketmq.consumer.group@
category-group: @rocketmq.consumer.category.group@
+
+epmet:
+ config:
+ secret: 6939e90472734ce49cfde1bffced8e52e22451d241fd4c89a5089ae1b6da332b
+ appId: db0c48cb419c8a73c95af4b370c01bc8
+ customerId: ab7536372abdc2bd9ad4a4a69cdc0564
+ url: @epmet.url@
\ No newline at end of file
diff --git a/epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml b/epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml
index fc004ad..31e2165 100644
--- a/epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml
+++ b/epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml
@@ -6,8 +6,8 @@