Browse Source

区域编码相关逻辑

feature/yujt_vim
zhangyuan 5 years ago
parent
commit
869ee77381
  1. 6
      epdc-cloud-admin/pom.xml
  2. 15
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/controller/SysDeptController.java
  3. 4
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/entity/SysDeptEntity.java
  4. 46
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/jwt/JwtUtils.java
  5. 67
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/properties/EpmetProperties.java
  6. 11
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  7. 72
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  8. 103
      epdc-cloud-admin/src/main/java/com/elink/esua/epdc/utils/EpmetUtils.java
  9. 6
      epdc-cloud-admin/src/main/resources/application-dev.yml
  10. 7
      epdc-cloud-admin/src/main/resources/application.yml
  11. 4
      epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml

6
epdc-cloud-admin/pom.xml

@ -189,6 +189,8 @@
<rocketmq.consumer.group>organizationGroup</rocketmq.consumer.group>
<rocketmq.producer.category.group>categoryGroup</rocketmq.producer.category.group>
<rocketmq.consumer.category.group>categoryGroup</rocketmq.consumer.category.group>
<epmet.url>http://192.168.1.130:8080/api</epmet.url>
</properties>
</profile>
@ -227,6 +229,8 @@
<rocketmq.consumer.group>organizationGroup</rocketmq.consumer.group>
<rocketmq.producer.category.group>categoryGroup</rocketmq.producer.category.group>
<rocketmq.consumer.category.group>categoryGroup</rocketmq.consumer.category.group>
<epmet.url>https://epmet-dev.elinkservice.cn/api</epmet.url>
</properties>
</profile>
@ -272,6 +276,8 @@
<rocketmq.consumer.group>organizationGroup</rocketmq.consumer.group>
<rocketmq.producer.category.group>categoryGroup</rocketmq.producer.category.group>
<rocketmq.consumer.category.group>categoryGroup</rocketmq.consumer.category.group>
<epmet.url>https://epmet-open.elinkservice.cn/api</epmet.url>
</properties>
</profile>
</profiles>

15
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<UserSysDeptInfoResultDTO> list = sysDeptService.listAllDeptInfo(formDTO);
return new Result<List<UserSysDeptInfoResultDTO>>().ok(list);
}
/**
* 获取产品端areaCode
*
* @param dto
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.epdc.result.UserSysDeptAreaCodeResultDTO>>
* @author zhy
* @date 2021/1/11 14:34
*/
@GetMapping("getEpmetAreaCode")
public Result<List> getEpmetAreaCode(UserSysDeptAreaCodeFormDTO dto) {
return new Result<List>().ok(sysDeptService.getEpmetAreaCode(dto));
}
}

4
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;
/**
* 排序
*/

46
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<String,Object> claims){
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setClaims(claims)
.signWith(SignatureAlgorithm.HS512, epmetProperties.getSecret())
.compact();
}
}

67
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事通接口配置
*
* @Authorliuchuang
* @Date2020/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;
}
}

11
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<SysDeptEntity> {
* @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);
}

72
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<SysDeptDao, SysDeptEntit
@Autowired
private OrganizationModifyProducer organizationModifyProducer;
@Autowired
private EpmetUtils epmetUtils;
private static final Logger logger = LoggerFactory.getLogger(SysDeptServiceImpl.class);
@Override
@ -1068,8 +1070,8 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
String[] pidArray = parentDeptIds.split(StrConstant.COMMA);
List<String> 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<SysDeptDao, SysDeptEntit
if (formDTO.getDeptIdList() != null && formDTO.getDeptIdList().size() > 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<UserSysDeptInfoResultDTO> 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<UserSysDeptAreaCodeResultDTO> 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<UserSysDeptAreaCodeResultDTO> 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);
}
});
}
/**

103
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> T httpPost(String urlSuffix, String param, Class<T> 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<String, Object> 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);
}
}

6
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

7
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@

4
epdc-cloud-admin/src/main/resources/mapper/SysDeptDao.xml

@ -6,8 +6,8 @@
<select id="getList" resultType="com.elink.esua.epdc.entity.SysDeptEntity">
select t1.*,(select t2.name from sys_dept t2 where t2.id=t1.pid)parentName from sys_dept t1
where t1.del_flag = 0
<if test="areaCode != null and areaCode.trim() != ''">
and t1.area_code LIKE CONCAT( '%', #{areaCode}, '%' )
<if test="allAreaCode != null and allAreaCode.trim() != ''">
and t1.all_area_code LIKE CONCAT( #{allAreaCode}, '%' )
</if>
<if test="deptIdList != null">
and t1.id in

Loading…
Cancel
Save