diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java index f5c9977b..b217423f 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptTreeDTO.java @@ -18,6 +18,7 @@ public class DeptTreeDTO implements Serializable { private Long pid; private String name; + private String typeKey; } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index 94793eb9..19152cfb 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -415,4 +415,17 @@ public class SysUserController { return new Result().ok(userDetail); } + + /** + * 获取用户部门多层结构,用户前端显示,请求需携带token - 工作日志使用 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @date 2020/1/27 14:31 + */ + @PostMapping("deptOptions/getUserDeptOptionByUserId") + public Result getUserDeptOptionByUserId() { + return sysDeptService.getUserDeptOptionByUserId(String.valueOf(SecurityUser.getUserId())); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index 83180500..af7cf646 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java @@ -280,4 +280,12 @@ public interface SysDeptService extends BaseService { * @since 2021/1/20 9:59 */ List listOfDeptInfoByTypeKey(String typeKey); + /** + * @Description 获取用户部门多层结构,用户前端显示,请求需携带token - 工作日志使用 + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [userId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getUserDeptOptionByUserId(String userId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index 035b53ee..3de1aa0f 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -472,6 +472,8 @@ public class SysDeptServiceImpl extends BaseServiceImpl listOfDeptInfoByTypeKey(String typeKey) { return baseDao.selectListOfDeptInfoByTypeKey(typeKey); } + + @Override + public Result getUserDeptOptionByUserId(String userId) { + Long realUserId = Long.parseLong(userId); + String deptOptionKey = RedisKeys.getAdminUserDeptOptionKey(realUserId); + Object obj = redisUtils.get(deptOptionKey); + if (null == obj) { + this.packageUserDeptOption(realUserId); + obj = redisUtils.get(deptOptionKey); + } + return new Result().ok((DeptOption) obj); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml index d712572e..bc767365 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml @@ -133,13 +133,14 @@ @@ -147,8 +148,8 @@ SELECT tem2.* FROM - ( SELECT * FROM sys_dept d1 WHERE d1.id IN #{item} ) tem1, - ( SELECT * FROM sys_dept d2 WHERE d2.pid IN #{deptId} ) tem2 + ( SELECT * FROM sys_dept d1 WHERE DEL_FLAG = '0' and d1.id IN #{item} ) tem1, + ( SELECT * FROM sys_dept d2 WHERE DEL_FLAG = '0' and d2.pid IN #{deptId} ) tem2 WHERE ( tem1.PIDS LIKE CONCAT( '%', tem2.id, '%' ) OR tem1.PID = tem2.ID ) OR ( tem2.ID = tem1.ID AND NOT EXISTS ( SELECT 1 FROM sys_dept d WHERE d.PID = tem2.ID ) ) @@ -196,7 +197,8 @@ SELECT sd.id, sd.pid, - sd.`name` + sd.`name`, + sd.type_key FROM sys_dept sd where sd.del_flag='0' diff --git a/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/filter/WorkLogAuthFilter.java b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/filter/WorkLogAuthFilter.java new file mode 100644 index 00000000..8563b1e3 --- /dev/null +++ b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/filter/WorkLogAuthFilter.java @@ -0,0 +1,139 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.filter; + +import com.alibaba.fastjson.JSON; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.ResourceFeignClient; +import com.elink.esua.epdc.utils.jwt.JwtTokenUtils; +import io.jsonwebtoken.Claims; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.util.AntPathMatcher; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + * 权限过滤器 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +@ConfigurationProperties(prefix = "worklog") +public class WorkLogAuthFilter implements GlobalFilter { + + private final AntPathMatcher antPathMatcher = new AntPathMatcher(); + + @Autowired + private ResourceFeignClient resourceFeignClient; + + @Autowired + private JwtTokenUtils jwtUtils; + + /** + * 拦截的工作日志接口 + */ + private List urls; + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + ServerHttpRequest request = exchange.getRequest(); + String requestUri = request.getPath().pathWithinApplication().value(); + + //请求放行,无需验证权限 + if(pathMatcher(requestUri)){ + return chain.filter(exchange); + } + + //获取AccessToken 并进行验证 + String accessToken = request.getHeaders().getFirst(Constant.ACCESS_TOKEN); + if(StringUtils.isBlank(accessToken)){ + // 表示请求信息中没有携带AccessToken,前端需要修改上送数据 + throw new RenException("AccessToken为空"); + } + + Claims claims = jwtUtils.getClaimByToken(accessToken); + + if (claims == null) { + throw new RenException("AccessToken验证不通过"); + } + //验证结束 + + //获取用户token + String token = request.getHeaders().getFirst(Constant.TOKEN_HEADER); + if(StringUtils.isBlank(token)){ + token = request.getHeaders().getFirst(Constant.AUTHORIZATION_HEADER); + if (StringUtils.isBlank(token)) { + token = request.getQueryParams().getFirst(Constant.TOKEN_HEADER); + } + } + + //资源访问权限 + String language = request.getHeaders().getFirst(HttpHeaders.ACCEPT_LANGUAGE); + Result result = resourceFeignClient.resource(language, token, requestUri, request.getMethod().toString()); + //没权限访问,直接返回 + if(!result.success()){ + return response(exchange, result); + } + + //获取用户信息 + UserDetail userDetail = result.getData(); + if(userDetail != null){ + //当前登录用户userId,添加到header中 + ServerHttpRequest build = exchange.getRequest().mutate().header(Constant.USER_KEY, userDetail.getId()+"").build(); + return chain.filter(exchange.mutate().request(build).build()); + } + + return chain.filter(exchange); + } + + private Mono response(ServerWebExchange exchange, Object object) { + String json = JSON.toJSONString(object); + DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(json.getBytes(StandardCharsets.UTF_8)); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON_UTF8); + exchange.getResponse().setStatusCode(HttpStatus.OK); + return exchange.getResponse().writeWith(Flux.just(buffer)); + } + + private boolean pathMatcher(String requestUri){ + + for (String url : urls) { + if(antPathMatcher.match(url, requestUri)){ + return false; + } + } + return true; + } + + public List getUrls() { + return urls; + } + + public void setUrls(List urls) { + this.urls = urls; + } + +} diff --git a/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenProperties.java b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenProperties.java new file mode 100644 index 00000000..b92a1243 --- /dev/null +++ b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenProperties.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.utils.jwt; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * Jwt + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +@ConfigurationProperties(prefix = "jwt.token") +public class JwtTokenProperties { + private String secret; + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } + +} diff --git a/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenUtils.java b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenUtils.java new file mode 100644 index 00000000..e18f2bbb --- /dev/null +++ b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/utils/jwt/JwtTokenUtils.java @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.utils.jwt; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.Map; + +/** + * Jwt工具类 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Component +public class JwtTokenUtils { + private static final Logger logger = LoggerFactory.getLogger(JwtTokenUtils.class); + + @Autowired + private JwtTokenProperties jwtProperties; + + /** + * 生成上报接口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, jwtProperties.getSecret()) + .compact(); + } + + public Claims getClaimByToken(String token) { + try { + return Jwts.parser() + .setSigningKey(jwtProperties.getSecret()) + .parseClaimsJws(token) + .getBody(); + } catch (Exception e) { + logger.debug("validate is token error, token = " + token, e); + return null; + } + } + + /** + * token是否过期 + * + * @return true:过期 + */ + public boolean isTokenExpired(Date expiration) { + return expiration.before(new Date()); + } +} diff --git a/esua-epdc/epdc-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index 411f2a7a..8e801d07 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/esua-epdc/epdc-gateway/src/main/resources/application.yml @@ -243,6 +243,13 @@ ribbon: ReadTimeout: 300000 ConnectTimeout: 300000 +jwt: + token: + #秘钥 + secret: 007e7e3620291354947e8b9791e2a4fa[elink.epdc] + #APPID + appid: 003edc9c09463b30e39a94353313ce56 + renren: urls: - /auth/captcha @@ -271,6 +278,7 @@ renren: - /api/residentConfig/getResidentConfig #获取居民端配置 - /api/screenPopulationInfo/** #获取居民端配置 - /analysis/admin/getDeptCode #获取组织结构编码 + - /api/plugins/workLog/** #工作日志相关 workUrls: - /api/work/** #工作端接口 - /api/analysis/** #数据端接口 @@ -278,6 +286,10 @@ renren: - /contentSecurity/** #内容安全接口 - /api/sys/** +worklog: + urls: + - /api/plugins/workLog/getUserInfo #获取用户信息 + - /api/plugins/workLog/getUserDeptOptionByUserId #获取用户部门权限 epdc: # 党建e家接口 @@ -301,3 +313,4 @@ epdc: - /api/residentConfig/getResidentConfig #获取居民端配置 - /api/screenPopulationInfo/** #获取居民端配置 - /analysis/admin/getDeptCode #获取组织结构编码 + - /api/plugins/workLog/** #工作日志相关 diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/worklog/WorkLogAnalysisController.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/worklog/WorkLogAnalysisController.java new file mode 100644 index 00000000..8eccaf09 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/worklog/WorkLogAnalysisController.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.modules.worklog; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description 获取customID + * @Author songyunpeng + * @Date 2020/2/10 16:06 + */ +@RestController +@RequestMapping("workLog") +public class WorkLogAnalysisController { + + @Value("${epmet.config.customerId}") + private String customId; + + + /** + * @Description 获取customId + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getCustomId") + public Result getCustomId(){ + return new Result().ok(customId); + } + + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppWorkLogUserResult.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppWorkLogUserResult.java new file mode 100644 index 00000000..9f64b3ef --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppWorkLogUserResult.java @@ -0,0 +1,20 @@ +package com.elink.esua.epdc.dto.result; + +import com.elink.esua.epdc.dto.DeptOption; +import lombok.Data; + +import java.util.List; + +/** + * @author songyunpeng + * @Description + * @create 2021-02-05 + */ +@Data +public class EpdcAppWorkLogUserResult { + + + private DeptOption deptOption; + + private List deptIds; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcWorkLogUserDetailDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcWorkLogUserDetailDTO.java new file mode 100644 index 00000000..d21da22e --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcWorkLogUserDetailDTO.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 工作日志 用户信息 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Data +public class EpdcWorkLogUserDetailDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 用户ID + */ + private String userId; + + /** + * 微信昵称 + */ + private String nickname; + + /** + * 头像 + */ + private String profile; + + /** + * 真实姓名 + */ + private String realName; + + /** + * 客户Id + */ + private String customerId; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 所属组织Id + */ + private String agencyId; + + /** + * 所属组织Id路径 + */ + private String agencyIdPath; + + /** + * 所属组织名称 + */ + private String agencyName; + + /** + * 所属组织名称路径 + */ + private String agencyNamePath; + + /** + * 所在网格Id(工作人员最一次访问的网格) + */ + private String gridId; + + /** + * 所在网格名称 + */ + private String gridName; + + /** + * 是否总管理员,1是0否 + */ + private String adminFlag; + + /** + * 手机号 + */ + private String mobile; + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkLogController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkLogController.java new file mode 100644 index 00000000..7300a5c9 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkLogController.java @@ -0,0 +1,62 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.result.EpdcAppWorkLogUserResult; +import com.elink.esua.epdc.dto.result.EpdcWorkLogUserDetailDTO; +import com.elink.esua.epdc.service.AdminService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 工作日志相关 + * + * @author songyunpeng + * @date 2021/1/27 10:30 + */ +@RestController +@RequestMapping("plugins/workLog") +public class ApiWorkLogController { + @Autowired + private AdminService adminService; + /** + * @Description 获取用户信息 + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping("getUserInfo") + public Result getUserInfo(){ + return adminService.getUserInfo(); + } + + /** + * @Description 获取用户部门权限 + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @PostMapping("getUserDeptOptionByUserId") + public Result getUserDeptOptionByUserId(){ + return adminService.getUserDeptOptionByUserId(); + } + + /** + * @Description 获取customId + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping("getCustomId") + public Result getCustomId(){ + return adminService.getCustomId(); + } + + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 963cf641..c060e1c2 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -178,4 +178,24 @@ public interface AdminFeignClient { */ @GetMapping("sys/dept/getdeptinfo/{typeKey}") Result> getDeptInfoByTypeKey(@PathVariable String typeKey); + + + /** + * 获取用户部门多层结构,用户前端显示,请求需携带token -- 工作日志使用 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/11/27 14:31 + */ + @PostMapping(value = "sys/user/deptOptions/getUserDeptOptionByUserId", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getUserDeptOptionByUserId(); + /** + * @param + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 获取所有组织机构信息 + * @Date 2020/1/28 12:15 + **/ + @GetMapping("sys/dept/party/getDeptTree") + Result getAllDeptTree(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java new file mode 100644 index 00000000..c206e8ad --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisFeignClient.java @@ -0,0 +1,30 @@ +package com.elink.esua.epdc.feign; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.fallback.AnalysisFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 数据分析模块调用 + * + * @Author:liuchuang + * @Date:2020/9/9 15:41 + */ +@FeignClient(name = ServiceConstant.EPDC_ANALYSIS_SERVER, fallback = AnalysisFeignClientFallback.class) +public interface AnalysisFeignClient { + + /** + * @Description 组织机构编码获取 + * @Author songyunpeng + * @Date 2021/1/7 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + @GetMapping(value = "analysis/workLog/getCustomId", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getCustomId(); + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index c053e453..8a996cd6 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -90,4 +90,14 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> getDeptInfoByTypeKey(String typeKey) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptInfoByTypeKey", typeKey); } + + @Override + public Result getUserDeptOptionByUserId() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserDeptOptionByUserId"); + } + + @Override + public Result getAllDeptTree() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptTree"); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java new file mode 100644 index 00000000..bb6072e5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisFeignClientFallback.java @@ -0,0 +1,20 @@ +package com.elink.esua.epdc.feign.fallback; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.AnalysisFeignClient; +import org.springframework.stereotype.Component; + +/** + * @Author:songyunpeg + * @Date:2020/9/9 15:42 + */ +@Component +public class AnalysisFeignClientFallback implements AnalysisFeignClient { + + @Override + public Result getCustomId() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "getCustomId"); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java index 52674525..27804d82 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AdminService.java @@ -3,6 +3,8 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.epdc.result.EpdcAppSysDictResultDTO; +import com.elink.esua.epdc.dto.result.EpdcAppWorkLogUserResult; +import com.elink.esua.epdc.dto.result.EpdcWorkLogUserDetailDTO; import java.util.List; @@ -59,4 +61,28 @@ public interface AdminService { * @return com.elink.esua.epdc.commons.tools.utils.Result **/ Result getScripBySysUserId(Long userId); + /** + * @Description 获取用户信息 + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getUserInfo(); + /** + * @Description 获取用户部门权限 + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [userId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getUserDeptOptionByUserId(); + /** + * @Description 获取customId + * @Author songyunpeng + * @Date 2021/1/27 + * @Param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getCustomId(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java index fff43a31..eeacc527 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AdminServiceImpl.java @@ -1,13 +1,23 @@ package com.elink.esua.epdc.service.impl; import com.elink.esua.epdc.common.token.dto.TokenDto; +import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum; +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.CompleteDeptDTO; +import com.elink.esua.epdc.dto.DeptOption; +import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.SysSimpleDictDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcScripUserInfoFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppSysDictResultDTO; +import com.elink.esua.epdc.dto.result.EpdcAppWorkLogUserResult; +import com.elink.esua.epdc.dto.result.EpdcWorkLogUserDetailDTO; import com.elink.esua.epdc.feign.AdminFeignClient; +import com.elink.esua.epdc.feign.AnalysisFeignClient; import com.elink.esua.epdc.service.AdminService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,6 +35,9 @@ public class AdminServiceImpl implements AdminService { @Autowired private AdminFeignClient adminFeignClient; + @Autowired + private AnalysisFeignClient analysisFeignClient; + @Override public Result getCompleteDeptName(Long gridId) { Result adminResult = adminFeignClient.getCompleteDept(gridId); @@ -70,4 +83,65 @@ public class AdminServiceImpl implements AdminService { public Result getScripBySysUserId(Long userId) { return adminFeignClient.getScripBySysUserId(userId); } + + @Override + public Result getUserInfo() { + //缓存中用户信息 + UserDetail user = SecurityUser.getUser(); + if(user == null){ + throw new RenException("用户未登录"); + } + Result customIdResult = analysisFeignClient.getCustomId(); + if(customIdResult == null || StringUtils.isBlank(customIdResult.getData())){ + throw new RenException("无法获取到CustomID"); + } + EpdcWorkLogUserDetailDTO epdcWorkLogUserDetailDTO = new EpdcWorkLogUserDetailDTO(); + epdcWorkLogUserDetailDTO.setUserId(String.valueOf(user.getId())); + epdcWorkLogUserDetailDTO.setNickname(user.getRealName()); + epdcWorkLogUserDetailDTO.setProfile(user.getHeadUrl()); + epdcWorkLogUserDetailDTO.setRealName(user.getRealName()); + epdcWorkLogUserDetailDTO.setCustomerId(customIdResult.getData()); + epdcWorkLogUserDetailDTO.setAgencyId(String.valueOf(user.getDeptId())); + epdcWorkLogUserDetailDTO.setAdminFlag(String.valueOf(user.getSuperAdmin())); + epdcWorkLogUserDetailDTO.setMobile(user.getMobile()); + if(user.getSuperAdmin() == SuperAdminEnum.NO.value()){ + //查询用户部门等信息 + Result dtoResult = adminFeignClient.getParentAndAllDept(user.getDeptId()); + ParentAndAllDeptDTO deptDTO = dtoResult.getData(); + epdcWorkLogUserDetailDTO.setAgencyIdPath(deptDTO.getAllDeptIds()); + epdcWorkLogUserDetailDTO.setAgencyName(deptDTO.getGrid()); + epdcWorkLogUserDetailDTO.setAgencyNamePath(deptDTO.getAllDeptNames()); + } + return new Result().ok(epdcWorkLogUserDetailDTO); + } + + @Override + public Result getUserDeptOptionByUserId() { + //缓存中用户信息 + UserDetail user = SecurityUser.getUser(); + if(user == null){ + throw new RenException("用户未登录"); + } + EpdcAppWorkLogUserResult epdcAppWorkLogUserResult = new EpdcAppWorkLogUserResult(); + epdcAppWorkLogUserResult.setDeptIds(user.getDeptIdList()); + if(user.getSuperAdmin() == SuperAdminEnum.YES.value()){ + Result allDeptTree = adminFeignClient.getAllDeptTree(); + if(allDeptTree==null || allDeptTree.getData() ==null){ + return new Result().error("获取部门列表失败"); + } + epdcAppWorkLogUserResult.setDeptOption(allDeptTree.getData()); + return new Result().ok(epdcAppWorkLogUserResult); + } + Result userDeptOptionByUserId = adminFeignClient.getUserDeptOptionByUserId(); + if(userDeptOptionByUserId==null || userDeptOptionByUserId.getData() ==null){ + return new Result().error("获取部门列表失败"); + } + epdcAppWorkLogUserResult.setDeptOption(userDeptOptionByUserId.getData()); + return new Result().ok(epdcAppWorkLogUserResult); + } + + @Override + public Result getCustomId() { + return analysisFeignClient.getCustomId(); + } } diff --git a/esua-epdc/pom.xml b/esua-epdc/pom.xml index 96dc9c71..6fb239c0 100644 --- a/esua-epdc/pom.xml +++ b/esua-epdc/pom.xml @@ -147,5 +147,4 @@ -