From 547ae5cd90a8356072a197ee114395a2840af311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Sun, 11 Nov 2018 01:52:12 +0800 Subject: [PATCH] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E5=8C=BA=E5=88=AB=E9=87=8D=E5=86=99=E5=92=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/EnablePigxResourceServer.java | 4 +++ .../BaseResourceServerConfigurerAdapter.java | 20 +++-------- .../PigxResourceServerAutoConfiguration.java | 18 ++++++++++ .../main/resources/config/application-dev.yml | 4 --- .../resources/config/pigx-activiti-dev.yml | 2 +- .../resources/config/pigx-codegen-dev.yml | 3 ++ .../main/resources/config/pigx-daemon-dev.yml | 4 ++- .../main/resources/config/pigx-upms-dev.yml | 2 ++ .../admin/api/feign/RemoteUserService.java | 4 +-- .../RemoteUserServiceFallbackImpl.java | 3 +- .../act/config/MybatisPlusConfigurer.java | 36 ++++++++++++++++++- .../act/config/ResourceServerConfigurer.java | 5 ++- .../pig4cloud/pigx/act/entity/LeaveBill.java | 6 +++- .../listener/LeaveProcessTaskListener.java | 4 +-- .../act/service/impl/ActTaskServiceImpl.java | 5 +-- 15 files changed, 81 insertions(+), 39 deletions(-) diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/EnablePigxResourceServer.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/EnablePigxResourceServer.java index 95b44daf2..57bad1f2f 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/EnablePigxResourceServer.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/annotation/EnablePigxResourceServer.java @@ -19,6 +19,8 @@ package com.pig4cloud.pigx.common.security.annotation; import com.pig4cloud.pigx.common.security.component.PigxResourceServerAutoConfiguration; import org.springframework.context.annotation.Import; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; import java.lang.annotation.*; @@ -32,6 +34,8 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited +@EnableResourceServer +@EnableGlobalMethodSecurity(prePostEnabled = true) @Import(PigxResourceServerAutoConfiguration.class) public @interface EnablePigxResourceServer { } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/BaseResourceServerConfigurerAdapter.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/BaseResourceServerConfigurerAdapter.java index 8c57dc68b..19a02031f 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/BaseResourceServerConfigurerAdapter.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/BaseResourceServerConfigurerAdapter.java @@ -19,14 +19,9 @@ package com.pig4cloud.pigx.common.security.component; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.client.loadbalancer.LoadBalanced; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer; import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter; @@ -42,9 +37,6 @@ import org.springframework.web.client.RestTemplate; * 2. 支持 获取用户全部信息 */ @Slf4j -@Configuration -@EnableResourceServer -@EnableGlobalMethodSecurity(prePostEnabled = true) public class BaseResourceServerConfigurerAdapter extends ResourceServerConfigurerAdapter { @Autowired protected ResourceAuthExceptionEntryPoint resourceAuthExceptionEntryPoint; @@ -56,6 +48,8 @@ public class BaseResourceServerConfigurerAdapter extends ResourceServerConfigure protected UserDetailsService userDetailsService; @Autowired private PermitAllUrlProperties permitAllUrlProperties; + @Autowired + private RestTemplate lbRestTemplate; /** @@ -92,12 +86,6 @@ public class BaseResourceServerConfigurerAdapter extends ResourceServerConfigure canGetUser(resources); } - @Bean - @LoadBalanced - public RestTemplate lbRestTemplate() { - return new RestTemplate(); - } - /** * 不获取用户详细 只有用户名 @@ -109,7 +97,7 @@ public class BaseResourceServerConfigurerAdapter extends ResourceServerConfigure DefaultUserAuthenticationConverter userTokenConverter = new DefaultUserAuthenticationConverter(); accessTokenConverter.setUserTokenConverter(userTokenConverter); - remoteTokenServices.setRestTemplate(lbRestTemplate()); + remoteTokenServices.setRestTemplate(lbRestTemplate); remoteTokenServices.setAccessTokenConverter(accessTokenConverter); resources.authenticationEntryPoint(resourceAuthExceptionEntryPoint) .accessDeniedHandler(pigAccessDeniedHandler) @@ -128,7 +116,7 @@ public class BaseResourceServerConfigurerAdapter extends ResourceServerConfigure userTokenConverter.setUserDetailsService(userDetailsService); accessTokenConverter.setUserTokenConverter(userTokenConverter); - remoteTokenServices.setRestTemplate(lbRestTemplate()); + remoteTokenServices.setRestTemplate(lbRestTemplate); remoteTokenServices.setAccessTokenConverter(accessTokenConverter); resources.authenticationEntryPoint(resourceAuthExceptionEntryPoint) .accessDeniedHandler(pigAccessDeniedHandler) diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java index 150d33db6..f4e64f379 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java @@ -17,7 +17,13 @@ package com.pig4cloud.pigx.common.security.component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Primary; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; +import org.springframework.web.client.RestTemplate; /** * @author lengleng @@ -25,4 +31,16 @@ import org.springframework.context.annotation.ComponentScan; */ @ComponentScan("com.pig4cloud.pigx.common.security") public class PigxResourceServerAutoConfiguration { + @Bean + @Primary + @LoadBalanced + public RestTemplate lbRestTemplate() { + return new RestTemplate(); + } + + @Bean + @ConditionalOnMissingBean(ResourceServerConfigurerAdapter.class) + public ResourceServerConfigurerAdapter resourceServerConfigurerAdapter() { + return new BaseResourceServerConfigurerAdapter(); + } } diff --git a/pigx-config/src/main/resources/config/application-dev.yml b/pigx-config/src/main/resources/config/application-dev.yml index ea07858eb..333a0a25b 100644 --- a/pigx-config/src/main/resources/config/application-dev.yml +++ b/pigx-config/src/main/resources/config/application-dev.yml @@ -98,10 +98,6 @@ swagger: ## spring security 配置 security: oauth2: - client: - ignore-urls: - - '/actuator/**' - - '/v2/api-docs' resource: loadBalanced: true token-info-uri: http://pigx-auth/oauth/check_token diff --git a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml index 841ef0afd..5548ba502 100644 --- a/pigx-config/src/main/resources/config/pigx-activiti-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-activiti-dev.yml @@ -21,4 +21,4 @@ spring: driver-class-name: com.mysql.jdbc.Driver username: root password: root - url: jdbc:mysql://pigx-mysql:3306/pigxx?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false + url: jdbc:mysql://pigx-mysql:3306/pigxx_ac?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false diff --git a/pigx-config/src/main/resources/config/pigx-codegen-dev.yml b/pigx-config/src/main/resources/config/pigx-codegen-dev.yml index a0b70b1ab..901f7526c 100644 --- a/pigx-config/src/main/resources/config/pigx-codegen-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-codegen-dev.yml @@ -5,6 +5,9 @@ security: client-id: ENC(gPFcUOmJm8WqM3k3eSqS0Q==) client-secret: ENC(gPFcUOmJm8WqM3k3eSqS0Q==) scope: server + ignore-urls: + - '/actuator/**' + - '/v2/api-docs' # 数据源配置 spring: diff --git a/pigx-config/src/main/resources/config/pigx-daemon-dev.yml b/pigx-config/src/main/resources/config/pigx-daemon-dev.yml index 73afe508e..e662ed4fa 100644 --- a/pigx-config/src/main/resources/config/pigx-daemon-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-daemon-dev.yml @@ -5,7 +5,9 @@ security: client-id: ENC(tz2NM4GcmnE7sNJTYL8ZSg==) client-secret: ENC(tz2NM4GcmnE7sNJTYL8ZSg==) scope: server - + ignore-urls: + - '/actuator/**' + - '/v2/api-docs' ## 定时任务 spring: # 保存定时任务的数据源 diff --git a/pigx-config/src/main/resources/config/pigx-upms-dev.yml b/pigx-config/src/main/resources/config/pigx-upms-dev.yml index 86667bbb2..a6987bd9d 100644 --- a/pigx-config/src/main/resources/config/pigx-upms-dev.yml +++ b/pigx-config/src/main/resources/config/pigx-upms-dev.yml @@ -6,6 +6,8 @@ security: client-secret: ENC(ltJPpR50wT0oIY9kfOe1Iw==) scope: server ignore-urls: + - '/actuator/**' + - '/v2/api-docs' - '/user/info/*' - '/social/info/**' - '/log/**' diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java index a084ea076..4161dcd5f 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteUserService.java @@ -61,10 +61,8 @@ public interface RemoteUserService { * 查询上级部门的用户信息 * * @param username 用户名 - * @param from 调用标志 * @return R */ @GetMapping("/user/ancestorUsers/{username}") - R> ancestorUsers(@PathVariable("username") String username - , @RequestHeader("from") String from); + R> ancestorUsers(@PathVariable("username") String username); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java index f7bf5c897..bdf8eedbb 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/fallback/RemoteUserServiceFallbackImpl.java @@ -68,11 +68,10 @@ public class RemoteUserServiceFallbackImpl implements RemoteUserService { * 查询上级部门的用户信息 * * @param username 用户名 - * @param from 调用标志 * @return R */ @Override - public R> ancestorUsers(String username, String from) { + public R> ancestorUsers(String username) { log.error("feign 查询用户上级部门用户列失败:{}", username, cause); return null; } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/MybatisPlusConfigurer.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/MybatisPlusConfigurer.java index 2f82a94a3..3a3f7581a 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/MybatisPlusConfigurer.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/MybatisPlusConfigurer.java @@ -18,15 +18,26 @@ package com.pig4cloud.pigx.act.config; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; +import com.baomidou.mybatisplus.plugins.parser.ISqlParser; +import com.baomidou.mybatisplus.plugins.parser.tenant.TenantHandler; +import com.baomidou.mybatisplus.plugins.parser.tenant.TenantSqlParser; +import com.pig4cloud.pigx.common.core.util.TenantUtils; +import lombok.extern.slf4j.Slf4j; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.LongValue; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.ArrayList; +import java.util.List; + /** * @author lengleng * @date 2018/9/27 * mybatis-plus 配置 */ +@Slf4j @Configuration @MapperScan("com.pig4cloud.pigx.act.mapper") public class MybatisPlusConfigurer { @@ -37,6 +48,29 @@ public class MybatisPlusConfigurer { */ @Bean public PaginationInterceptor paginationInterceptor() { - return new PaginationInterceptor(); + PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); + List sqlParserList = new ArrayList<>(); + TenantSqlParser tenantSqlParser = new TenantSqlParser(); + tenantSqlParser.setTenantHandler(new TenantHandler() { + @Override + public Expression getTenantId() { + Integer tenantId = TenantUtils.getTenantId(); + log.debug("当前租户为 >> {}", tenantId); + return new LongValue(tenantId); + } + + @Override + public String getTenantIdColumn() { + return "tenant_id"; + } + + @Override + public boolean doTableFilter(String tableName) { + return false; + } + }); + sqlParserList.add(tenantSqlParser); + paginationInterceptor.setSqlParserList(sqlParserList); + return paginationInterceptor; } } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ResourceServerConfigurer.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ResourceServerConfigurer.java index 98420b6f7..e0d48392b 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ResourceServerConfigurer.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/config/ResourceServerConfigurer.java @@ -26,7 +26,7 @@ import org.springframework.security.oauth2.config.annotation.web.configurers.Res * @date 2018/6/22 */ @Configuration -public class ResourceServerConfigurer extends BaseResourceServerConfigurerAdapter { +public class ResourceServerConfigurer extends BaseResourceServerConfigurerAdapter { /** * 重写不需要调用feign 获取 userdetils @@ -35,7 +35,6 @@ public class ResourceServerConfigurer extends BaseResourceServerConfigurerAdapt */ @Override public void configure(ResourceServerSecurityConfigurer resources) { - resources.authenticationEntryPoint(resourceAuthExceptionEntryPoint) - .accessDeniedHandler(pigAccessDeniedHandler); + notGetUser(resources); } } diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/entity/LeaveBill.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/entity/LeaveBill.java index 13804ce28..a757460d2 100755 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/entity/LeaveBill.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/entity/LeaveBill.java @@ -62,7 +62,11 @@ public class LeaveBill extends Model { */ private String state; /** - * 请假时间 + * 提交时间 + */ + private LocalDateTime leaveTime; + /** + * 提交时间 */ private LocalDateTime createTime; /** diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java index f83dd3c62..a08e2da99 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/listener/LeaveProcessTaskListener.java @@ -20,7 +20,6 @@ package com.pig4cloud.pigx.act.listener; import cn.hutool.core.collection.CollUtil; import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; -import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; import com.pig4cloud.pigx.common.security.util.SecurityUtils; @@ -48,8 +47,7 @@ public class LeaveProcessTaskListener implements TaskListener { public void notify(DelegateTask delegateTask) { RemoteUserService userService = SpringContextHolder.getBean(RemoteUserService.class); - R> result = userService.ancestorUsers( - SecurityUtils.getUsername(), SecurityConstants.FROM_IN); + R> result = userService.ancestorUsers(SecurityUtils.getUsername()); if (CollUtil.isEmpty(result.getData())) { log.debug("用户 {} 不存在上级,任务单由当前用户审批", SecurityUtils.getUsername()); diff --git a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java index 9a048f7a4..91ccc95b4 100644 --- a/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java +++ b/pigx-visual/pigx-activiti/src/main/java/com/pig4cloud/pigx/act/service/impl/ActTaskServiceImpl.java @@ -146,10 +146,7 @@ public class ActTaskServiceImpl implements ActTaskService { taskService.addComment(taskId, processInstanceId, message); Map variables = new HashMap<>(1); - - if (!StrUtil.equals(FLAG, leaveBillDto.getTaskFlag())) { - variables.put("flag", leaveBillDto.getTaskFlag()); - } + variables.put("flag", leaveBillDto.getTaskFlag()); taskService.complete(taskId, variables); ProcessInstance pi = runtimeService.createProcessInstanceQuery()