Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-cloud-core
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-cloud-core
Commits
4d92cbb5
Commit
4d92cbb5
authored
Sep 05, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
配置
parent
243a95c0
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
219 additions
and
54 deletions
+219
-54
yd-auth-core/pom.xml
+12
-0
yd-auth-core/src/main/java/com/yd/auth/core/config/SecurityConfig.java
+2
-0
yd-auth-core/src/main/java/com/yd/auth/core/security/JwtAuthenticationFilter.java
+39
-6
yd-auth-core/src/main/java/com/yd/auth/core/service/impl/AuthUserDetailsService.java
+35
-7
yd-auth-core/src/main/resources/bootstrap.yml
+10
-0
yd-common/src/main/java/com/yd/common/constant/CodeGeneratorConstants.java
+13
-0
yd-common/src/main/java/com/yd/common/enums/CommonEnum.java
+8
-0
yd-common/src/main/java/com/yd/common/utils/CodeGenerator.java
+52
-0
yd-common/src/main/java/com/yd/common/utils/RandomStringGenerator.java
+3
-1
yd-feign/src/main/java/com/yd/feign/config/FeignConfig.java
+10
-36
yd-feign/src/main/java/com/yd/feign/config/FeignTokenInterceptor.java
+35
-0
yd-gateway/pom.xml
+0
-4
No files found.
yd-auth-core/pom.xml
View file @
4d92cbb5
...
@@ -118,6 +118,13 @@
...
@@ -118,6 +118,13 @@
<artifactId>
yd-user-service
</artifactId>
<artifactId>
yd-user-service
</artifactId>
<version>
${project.version}
</version>
<version>
${project.version}
</version>
</dependency>
</dependency>
<!-- yd-user-feign 模块 -->
<dependency>
<groupId>
com.yd
</groupId>
<artifactId>
yd-user-feign
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.yd
</groupId>
<groupId>
com.yd
</groupId>
<artifactId>
yd-common
</artifactId>
<artifactId>
yd-common
</artifactId>
...
@@ -128,5 +135,10 @@
...
@@ -128,5 +135,10 @@
<artifactId>
yd-framework
</artifactId>
<artifactId>
yd-framework
</artifactId>
<version>
${project.version}
</version>
<version>
${project.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.yd
</groupId>
<artifactId>
yd-feign
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
yd-auth-core/src/main/java/com/yd/auth/core/config/SecurityConfig.java
View file @
4d92cbb5
...
@@ -4,6 +4,7 @@ import com.yd.auth.core.security.JwtAuthenticationEntryPoint;
...
@@ -4,6 +4,7 @@ import com.yd.auth.core.security.JwtAuthenticationEntryPoint;
import
com.yd.auth.core.security.JwtAuthenticationFilter
;
import
com.yd.auth.core.security.JwtAuthenticationFilter
;
import
com.yd.auth.core.service.impl.AuthUserDetailsService
;
import
com.yd.auth.core.service.impl.AuthUserDetailsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.authentication.AuthenticationManager
;
...
@@ -66,6 +67,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
@@ -66,6 +67,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/auth/register"
,
"/auth/register"
,
"/swagger-ui/**"
,
"/swagger-ui/**"
,
"/v3/api-docs/**"
,
"/v3/api-docs/**"
,
"/sysUser/body/detail"
,
"/scrm/test"
"/scrm/test"
).
permitAll
()
).
permitAll
()
.
anyRequest
().
authenticated
()
.
anyRequest
().
authenticated
()
...
...
yd-auth-core/src/main/java/com/yd/auth/core/security/JwtAuthenticationFilter.java
View file @
4d92cbb5
package
com
.
yd
.
auth
.
core
.
security
;
package
com
.
yd
.
auth
.
core
.
security
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.common.result.Result
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
com.yd.user.feign.request.sysuser.ApiSysUserDetailBodyRequest
;
import
com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.service.ISysUserService
;
import
com.yd.user.service.service.ISysUserService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -23,9 +27,12 @@ import java.util.Objects;
...
@@ -23,9 +27,12 @@ import java.util.Objects;
@Component
@Component
public
class
JwtAuthenticationFilter
extends
OncePerRequestFilter
{
public
class
JwtAuthenticationFilter
extends
OncePerRequestFilter
{
// @Autowired
// @Qualifier("sysUserServiceImpl")
// private ISysUserService iSysUserService;
@Autowired
@Autowired
@Qualifier
(
"sysUserServiceImpl"
)
private
ApiSysUserFeignClient
apiSysUserFeignClient
;
private
ISysUserService
iSysUserService
;
private
final
JwtTokenProvider
tokenProvider
;
private
final
JwtTokenProvider
tokenProvider
;
...
@@ -72,13 +79,17 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
...
@@ -72,13 +79,17 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
public
UserDetails
queryUserDetails
(
String
userBizId
)
{
public
UserDetails
queryUserDetails
(
String
userBizId
)
{
AuthUserDto
authUserDto
=
null
;
AuthUserDto
authUserDto
=
null
;
SysUser
sysUser
=
iSysUserService
.
queryOne
(
userBizId
);
// 通过Feign调用yd-user-feign服务获取用户信息
if
(
Objects
.
isNull
(
sysUser
))
{
ApiSysUserDetailBodyRequest
request
=
new
ApiSysUserDetailBodyRequest
();
request
.
setUserBizId
(
userBizId
);
Result
<
ApiSysUserDetailResponse
>
result
=
apiSysUserFeignClient
.
detail
(
request
);
if
(
Objects
.
isNull
(
result
.
getData
()))
{
throw
new
UsernameNotFoundException
(
"用户不存在:"
);
throw
new
UsernameNotFoundException
(
"用户不存在:"
);
}
}
ApiSysUserDetailResponse
response
=
result
.
getData
();
authUserDto
=
new
AuthUserDto
();
authUserDto
=
new
AuthUserDto
();
BeanUtils
.
copyProperties
(
sysUser
,
authUserDto
);
BeanUtils
.
copyProperties
(
response
,
authUserDto
);
authUserDto
.
setUsername
(
sysUser
.
getUserName
());
authUserDto
.
setUsername
(
response
.
getUserName
());
// 查询用户角色 TODO
// 查询用户角色 TODO
// authUserDto.setRoles(roles);
// authUserDto.setRoles(roles);
...
@@ -86,6 +97,28 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
...
@@ -86,6 +97,28 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
}
}
// /**
// * 查询用户信息返回spring security认证对象UserDetails
// * @param userBizId
// * @return spring security认证对象UserDetails
// */
// public UserDetails queryUserDetails(String userBizId) {
// AuthUserDto authUserDto = null;
//
// SysUser sysUser = iSysUserService.queryOne(userBizId);
// if (Objects.isNull(sysUser)) {
// throw new UsernameNotFoundException("用户不存在:");
// }
// authUserDto = new AuthUserDto();
// BeanUtils.copyProperties(sysUser,authUserDto);
// authUserDto.setUsername(sysUser.getUserName());
// // 查询用户角色 TODO
//// authUserDto.setRoles(roles);
//
// return authUserDto;
//
// }
private
String
resolveToken
(
HttpServletRequest
request
)
{
private
String
resolveToken
(
HttpServletRequest
request
)
{
String
bearerToken
=
request
.
getHeader
(
"Authorization"
);
String
bearerToken
=
request
.
getHeader
(
"Authorization"
);
if
(
StringUtils
.
hasText
(
bearerToken
)
&&
bearerToken
.
startsWith
(
"Bearer "
))
{
if
(
StringUtils
.
hasText
(
bearerToken
)
&&
bearerToken
.
startsWith
(
"Bearer "
))
{
...
...
yd-auth-core/src/main/java/com/yd/auth/core/service/impl/AuthUserDetailsService.java
View file @
4d92cbb5
package
com
.
yd
.
auth
.
core
.
service
.
impl
;
package
com
.
yd
.
auth
.
core
.
service
.
impl
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.common.result.Result
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
com.yd.user.feign.request.sysuser.ApiSysUserDetailBodyRequest
;
import
com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.service.ISysUserService
;
import
com.yd.user.service.service.ISysUserService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -20,25 +24,49 @@ import java.util.Objects;
...
@@ -20,25 +24,49 @@ import java.util.Objects;
@Service
@Service
public
class
AuthUserDetailsService
implements
UserDetailsService
{
public
class
AuthUserDetailsService
implements
UserDetailsService
{
// @Autowired
// @Qualifier("sysUserServiceImpl")
// private ISysUserService iSysUserService;
@Autowired
@Autowired
@Qualifier
(
"sysUserServiceImpl"
)
private
ApiSysUserFeignClient
apiSysUserFeignClient
;
private
ISysUserService
iSysUserService
;
@Override
@Override
public
UserDetails
loadUserByUsername
(
String
username
)
throws
UsernameNotFoundException
{
public
UserDetails
loadUserByUsername
(
String
username
)
throws
UsernameNotFoundException
{
//Spring Security用户认证对象
//Spring Security用户认证对象
AuthUserDto
authUserDto
=
null
;
AuthUserDto
authUserDto
=
null
;
// 通过Feign调用yd-user-service服务获取用户信息
// 通过Feign调用yd-user-feign服务获取用户信息
SysUser
sysUser
=
iSysUserService
.
queryOneByName
(
username
);
ApiSysUserDetailBodyRequest
request
=
new
ApiSysUserDetailBodyRequest
();
if
(
Objects
.
isNull
(
sysUser
))
{
request
.
setUserName
(
username
);
Result
<
ApiSysUserDetailResponse
>
result
=
apiSysUserFeignClient
.
detail
(
request
);
if
(
Objects
.
isNull
(
result
.
getData
()))
{
throw
new
UsernameNotFoundException
(
"用户不存在"
);
throw
new
UsernameNotFoundException
(
"用户不存在"
);
}
}
ApiSysUserDetailResponse
response
=
result
.
getData
();
authUserDto
=
new
AuthUserDto
();
authUserDto
=
new
AuthUserDto
();
BeanUtils
.
copyProperties
(
sysUser
,
authUserDto
);
BeanUtils
.
copyProperties
(
response
,
authUserDto
);
authUserDto
.
setUsername
(
sysUser
.
getUserName
());
authUserDto
.
setUsername
(
response
.
getUserName
());
// 查询用户角色 TODO
// 查询用户角色 TODO
// authUserDto.setRoles(roles);
// authUserDto.setRoles(roles);
return
authUserDto
;
return
authUserDto
;
}
}
// @Override
// public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// //Spring Security用户认证对象
// AuthUserDto authUserDto = null;
// // 通过Feign调用yd-user-service服务获取用户信息
// SysUser sysUser = iSysUserService.queryOneByName(username);
// if (Objects.isNull(sysUser)) {
// throw new UsernameNotFoundException("用户不存在");
// }
// authUserDto = new AuthUserDto();
// BeanUtils.copyProperties(sysUser,authUserDto);
// authUserDto.setUsername(sysUser.getUserName());
// // 查询用户角色 TODO
//// authUserDto.setRoles(roles);
//
// return authUserDto;
// }
}
}
yd-auth-core/src/main/resources/bootstrap.yml
View file @
4d92cbb5
...
@@ -62,6 +62,16 @@ spring:
...
@@ -62,6 +62,16 @@ spring:
# nacos的ip地址和端口
# nacos的ip地址和端口
server-addr
:
${spring.cloud.nacos.config.server-addr}
server-addr
:
${spring.cloud.nacos.config.server-addr}
group
:
YD_GROUP
group
:
YD_GROUP
#feign:
# client:
# config:
# default: # 全局配置(也可指定具体服务名,如 yd-user-api)
# connect-timeout: 5000 # 连接超时(毫秒),默认1000
# read-timeout: 30000 # 读取超时(毫秒),默认60000
# httpclient:
# enabled: true # 启用 Apache HttpClient 替代默认 URLConnection(更稳定)
---
---
spring
:
spring
:
profiles
:
prod
profiles
:
prod
...
...
yd-common/src/main/java/com/yd/common/constant/CodeGeneratorConstants.java
0 → 100644
View file @
4d92cbb5
package
com
.
yd
.
common
.
constant
;
/**
* 生成编号的常量类
*/
public
class
CodeGeneratorConstants
{
/**
* 预约编号的首字母
*/
public
static
final
String
APPOINTMENT
=
"Y"
;
}
yd-common/src/main/java/com/yd/common/enums/CommonEnum.java
View file @
4d92cbb5
...
@@ -16,6 +16,14 @@ public enum CommonEnum {
...
@@ -16,6 +16,14 @@ public enum CommonEnum {
UID_TYPE_INSURANCE_PRODUCT_PLAN
(
"insurance_product_plan"
,
"保险产品计划"
),
UID_TYPE_INSURANCE_PRODUCT_PLAN
(
"insurance_product_plan"
,
"保险产品计划"
),
UID_TYPE_INSURANCE_ADDITIONAL_PRODUCT
(
"insurance_additional_product"
,
"保险附加产品"
),
UID_TYPE_INSURANCE_ADDITIONAL_PRODUCT
(
"insurance_additional_product"
,
"保险附加产品"
),
UID_TYPE_OSS_FILE
(
"oss_file"
,
"OSS文件元数据"
),
UID_TYPE_OSS_FILE
(
"oss_file"
,
"OSS文件元数据"
),
UID_TYPE_APPOINTMENT
(
"appointment"
,
"预约信息主表"
),
UID_TYPE_PRODUCT_PLAN
(
"product_plan"
,
"产品计划信息表"
),
UID_TYPE_ADDITIONAL
(
"additional"
,
"产品计划-附加险信息表"
),
UID_TYPE_POLICYHOLDER
(
"policyholder"
,
"投保人信息表"
),
UID_TYPE_INSURANT
(
"insurant"
,
"受保人信息表"
),
UID_TYPE_BENEFICIARY
(
"beneficiary"
,
"受益人信息表"
),
UID_TYPE_SECOND_HOLDER
(
"second_holder"
,
"第二持有人信息表"
),
UID_TYPE_APPOINTMENT_FILE
(
"appointment_file"
,
"预约附件信息表"
),
//作用域枚举
//作用域枚举
SCOPE_SYS
(
"1"
,
"系统级(全局)"
),
SCOPE_SYS
(
"1"
,
"系统级(全局)"
),
...
...
yd-common/src/main/java/com/yd/common/utils/CodeGenerator.java
0 → 100644
View file @
4d92cbb5
package
com
.
yd
.
common
.
utils
;
import
com.yd.common.constant.CodeGeneratorConstants
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Random
;
/**
* 编号生成工具类
*/
public
class
CodeGenerator
{
// 单例模式确保随机数生成器效率
private
static
final
Random
random
=
new
Random
();
private
static
final
DateTimeFormatter
DATE_FORMATTER
=
DateTimeFormatter
.
ofPattern
(
"yyMMdd"
);
/**
* 生成编号
* @param letter 首字母
* @return 格式:首字母 + 6位日期(250903) + 7位随机数字
*/
public
static
String
generateCode
(
String
letter
)
{
//6位日期
String
datePart
=
LocalDateTime
.
now
().
format
(
DATE_FORMATTER
);
//7位随机数字
String
randomPart
=
generateRandomDigits
(
7
);
return
letter
+
datePart
+
randomPart
;
}
/**
* 生成指定长度的随机数字字符串
* @param length 数字字符串长度
* @return 随机数字字符串
*/
private
static
String
generateRandomDigits
(
int
length
)
{
if
(
length
<=
0
)
{
throw
new
IllegalArgumentException
(
"长度必须为正整数"
);
}
// 生成指定位数的随机数字
int
maxValue
=
(
int
)
Math
.
pow
(
10
,
length
);
int
randomNumber
=
random
.
nextInt
(
maxValue
);
// 格式化为固定长度,前面补零
return
String
.
format
(
"%0"
+
length
+
"d"
,
randomNumber
);
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
generateCode
(
CodeGeneratorConstants
.
APPOINTMENT
));
}
}
yd-common/src/main/java/com/yd/common/utils/RandomStringGenerator.java
View file @
4d92cbb5
package
com
.
yd
.
common
.
utils
;
package
com
.
yd
.
common
.
utils
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.CommonEnum
;
import
java.security.SecureRandom
;
import
java.security.SecureRandom
;
import
java.util.Random
;
import
java.util.Random
;
/**
* 业务id生成工具类
*/
public
class
RandomStringGenerator
{
public
class
RandomStringGenerator
{
// 包含所有数字和字母(大小写)的字符池
// 包含所有数字和字母(大小写)的字符池
private
static
final
String
CHAR_POOL
=
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
;
private
static
final
String
CHAR_POOL
=
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
;
...
...
yd-feign/src/main/java/com/yd/feign/config/FeignConfig.java
View file @
4d92cbb5
package
com
.
yd
.
feign
.
config
;
//package com.yd.feign.config;
//
import
org.springframework.context.annotation.Bean
;
//import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
//
import
feign.RequestInterceptor
;
//public class FeignConfig {
import
org.springframework.web.context.request.RequestContextHolder
;
// @Bean
import
org.springframework.web.context.request.ServletRequestAttributes
;
// public FeignTokenInterceptor feignTokenInterceptor() {
// return new FeignTokenInterceptor();
import
javax.servlet.http.HttpServletRequest
;
// }
import
java.util.Enumeration
;
//}
/**
* Feign配置类,传递请求头
*/
@Configuration
public
class
FeignConfig
{
@Bean
public
RequestInterceptor
requestInterceptor
()
{
return
template
->
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
if
(
attributes
!=
null
)
{
HttpServletRequest
request
=
attributes
.
getRequest
();
Enumeration
<
String
>
headerNames
=
request
.
getHeaderNames
();
if
(
headerNames
!=
null
)
{
while
(
headerNames
.
hasMoreElements
())
{
String
name
=
headerNames
.
nextElement
();
String
value
=
request
.
getHeader
(
name
);
// 传递所有请求头,防止部分丢失
template
.
header
(
name
,
value
);
}
}
}
};
}
}
yd-feign/src/main/java/com/yd/feign/config/FeignTokenInterceptor.java
0 → 100644
View file @
4d92cbb5
//package com.yd.feign.config;
//
//import feign.RequestInterceptor;
//import feign.RequestTemplate;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//import javax.servlet.http.HttpServletRequest;
//
//@Component
//public class FeignTokenInterceptor implements RequestInterceptor {
// private static final Logger logger = LoggerFactory.getLogger(FeignTokenInterceptor.class);
//
// @Override
// public void apply(RequestTemplate template) {
// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//
// if (attributes == null) {
// logger.debug("RequestContextHolder没有找到请求属性,跳过Token传递");
// return;
// }
//
// HttpServletRequest request = attributes.getRequest();
// String token = request.getHeader("Authorization");
//
// if (token != null && !token.trim().isEmpty()) {
// template.header("Authorization", token);
// logger.debug("已添加Authorization头到Feign请求");
// } else {
// logger.debug("当前请求中没有Authorization头,跳过Token传递");
// }
// }
//}
yd-gateway/pom.xml
View file @
4d92cbb5
...
@@ -60,10 +60,6 @@
...
@@ -60,10 +60,6 @@
<artifactId>
jjwt-jackson
</artifactId>
<artifactId>
jjwt-jackson
</artifactId>
</dependency>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.yd</groupId>-->
<!-- <artifactId>yd-auth-core</artifactId>-->
<!-- </dependency>-->
<dependency>
<dependency>
<groupId>
com.yd
</groupId>
<groupId>
com.yd
</groupId>
<artifactId>
yd-common
</artifactId>
<artifactId>
yd-common
</artifactId>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment