feat: 完成Nacos配置优化和WebSocket集成
主要更新: 1. 统一所有微服务端口配置(19000-19008) 2. 为所有服务创建本地/测试/生产三套环境配置 3. 配置Nacos认证密码(本地:Peanut2817*#, 测试/生产:EmotionMuseum2025) 4. 优化网关路由配置,支持负载均衡和WebSocket 5. 新增emotion-websocket模块,支持实时聊天 6. 前端集成WebSocket,替代HTTP轮询 7. 添加配置验证和管理工具脚本 技术特性: - 完整的环境隔离和服务发现 - WebSocket实时通信支持 - 负载均衡路由配置 - 跨域和安全配置 - 自动重连和心跳检测
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
server:
|
||||
port: 19001
|
||||
servlet:
|
||||
context-path: /
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: emotion-auth
|
||||
profiles:
|
||||
active: ${SPRING_PROFILES_ACTIVE:local}
|
||||
|
||||
# 数据源配置
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:emotion_museum}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: ${MYSQL_USERNAME:root}
|
||||
password: ${MYSQL_PASSWORD:EmotionMuseum2025*#}
|
||||
|
||||
# 连接池配置
|
||||
hikari:
|
||||
minimum-idle: 5
|
||||
maximum-pool-size: 20
|
||||
idle-timeout: 300000
|
||||
connection-timeout: 20000
|
||||
max-lifetime: 1200000
|
||||
pool-name: EmotionAuthHikariCP
|
||||
|
||||
# Redis配置
|
||||
data:
|
||||
redis:
|
||||
host: ${REDIS_HOST:localhost}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PASSWORD:}
|
||||
database: ${REDIS_DATABASE:0}
|
||||
timeout: 5000ms
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 20
|
||||
max-idle: 10
|
||||
min-idle: 5
|
||||
max-wait: 2000ms
|
||||
|
||||
# 云服务配置
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
enabled: false
|
||||
config:
|
||||
enabled: false
|
||||
|
||||
# MyBatis Plus配置
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
global-config:
|
||||
db-config:
|
||||
id-type: assign_uuid
|
||||
logic-delete-field: deleted
|
||||
logic-delete-value: 1
|
||||
logic-not-delete-value: 0
|
||||
|
||||
# 监控配置
|
||||
management:
|
||||
endpoints:
|
||||
web:
|
||||
exposure:
|
||||
include: health,info,metrics,prometheus
|
||||
endpoint:
|
||||
health:
|
||||
show-details: always
|
||||
metrics:
|
||||
export:
|
||||
prometheus:
|
||||
enabled: true
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
level:
|
||||
com.emotionmuseum: debug
|
||||
com.baomidou.mybatisplus: debug
|
||||
pattern:
|
||||
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level [%logger{50}] - %msg%n"
|
||||
|
||||
# JWT配置
|
||||
jwt:
|
||||
secret: emotion-museum-secret-key-2025
|
||||
expiration: 86400
|
||||
refresh-expiration: 604800
|
||||
|
||||
# 验证码配置
|
||||
captcha:
|
||||
type: arithmetic
|
||||
length: 4
|
||||
expire-time: 300
|
||||
|
||||
# OAuth配置
|
||||
oauth:
|
||||
wechat:
|
||||
client-id: ${WECHAT_CLIENT_ID:}
|
||||
client-secret: ${WECHAT_CLIENT_SECRET:}
|
||||
redirect-uri: ${WECHAT_REDIRECT_URI:}
|
||||
qq:
|
||||
client-id: ${QQ_CLIENT_ID:}
|
||||
client-secret: ${QQ_CLIENT_SECRET:}
|
||||
redirect-uri: ${QQ_REDIRECT_URI:}
|
||||
|
||||
---
|
||||
# 本地开发环境配置
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: local
|
||||
datasource:
|
||||
url: jdbc:mysql://localhost:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
data:
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: localhost:8848
|
||||
config:
|
||||
server-addr: localhost:8848
|
||||
|
||||
---
|
||||
# 测试环境配置
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: test
|
||||
datasource:
|
||||
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
|
||||
---
|
||||
# 生产环境配置
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: prod
|
||||
datasource:
|
||||
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.emotionmuseum.auth.mapper.UserMapper">
|
||||
|
||||
<!-- 根据账号查询用户 -->
|
||||
<select id="selectByAccount" resultType="com.emotionmuseum.auth.entity.User">
|
||||
SELECT * FROM user
|
||||
WHERE account = #{account} AND is_deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据邮箱查询用户 -->
|
||||
<select id="selectByEmail" resultType="com.emotionmuseum.auth.entity.User">
|
||||
SELECT * FROM user
|
||||
WHERE email = #{email} AND is_deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据手机号查询用户 -->
|
||||
<select id="selectByPhone" resultType="com.emotionmuseum.auth.entity.User">
|
||||
SELECT * FROM user
|
||||
WHERE phone = #{phone} AND is_deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据第三方登录信息查询用户 -->
|
||||
<select id="selectByOAuth" resultType="com.emotionmuseum.auth.entity.User">
|
||||
SELECT * FROM user
|
||||
WHERE oauth_platform = #{platform} AND oauth_id = #{oauthId} AND is_deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 更新最后活跃时间 -->
|
||||
<update id="updateLastActiveTime">
|
||||
UPDATE user
|
||||
SET last_active_time = NOW(), update_time = NOW()
|
||||
WHERE id = #{userId} AND is_deleted = 0
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
artifactId=emotion-auth
|
||||
groupId=com.emotionmuseum
|
||||
version=1.0.0
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
com/emotionmuseum/auth/dto/RegisterRequest.class
|
||||
com/emotionmuseum/auth/entity/User.class
|
||||
com/emotionmuseum/auth/controller/OAuthController.class
|
||||
com/emotionmuseum/auth/config/CaptchaConfig.class
|
||||
com/emotionmuseum/auth/service/impl/AuthServiceImpl.class
|
||||
com/emotionmuseum/auth/service/CaptchaService.class
|
||||
com/emotionmuseum/auth/AuthApplication.class
|
||||
com/emotionmuseum/auth/service/SliderCaptchaService.class
|
||||
com/emotionmuseum/auth/dto/CaptchaResponse.class
|
||||
com/emotionmuseum/auth/security/UserDetailsServiceImpl.class
|
||||
com/emotionmuseum/auth/service/impl/CaptchaServiceImpl.class
|
||||
com/emotionmuseum/auth/service/impl/SliderCaptchaServiceImpl$SliderCaptchaData.class
|
||||
com/emotionmuseum/auth/vo/UserInfoResponse$GrowthStatsVO.class
|
||||
com/emotionmuseum/auth/vo/UserInfoResponse.class
|
||||
com/emotionmuseum/auth/dto/LoginRequest.class
|
||||
com/emotionmuseum/auth/dto/SliderCaptchaResponse.class
|
||||
com/emotionmuseum/auth/vo/LoginResponse.class
|
||||
com/emotionmuseum/auth/dto/SliderCaptchaVerifyRequest.class
|
||||
com/emotionmuseum/auth/controller/CaptchaController.class
|
||||
com/emotionmuseum/auth/controller/AuthController.class
|
||||
com/emotionmuseum/auth/config/OAuthConfig.class
|
||||
com/emotionmuseum/auth/security/JwtAuthenticationFilter.class
|
||||
com/emotionmuseum/auth/config/SecurityConfig.class
|
||||
com/emotionmuseum/auth/service/OAuthService.class
|
||||
com/emotionmuseum/auth/mapper/UserMapper.class
|
||||
com/emotionmuseum/auth/dto/OAuthLoginRequest.class
|
||||
com/emotionmuseum/auth/config/RedisConfig.class
|
||||
com/emotionmuseum/auth/security/UserDetailsServiceImpl$SecurityUser.class
|
||||
com/emotionmuseum/auth/service/impl/SliderCaptchaServiceImpl.class
|
||||
com/emotionmuseum/auth/service/AuthService.class
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/SliderCaptchaResponse.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/SliderCaptchaVerifyRequest.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/impl/CaptchaServiceImpl.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/config/SecurityConfig.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/CaptchaService.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/config/CaptchaConfig.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/config/RedisConfig.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/OAuthLoginRequest.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/LoginRequest.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/SliderCaptchaService.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/security/JwtAuthenticationFilter.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/entity/User.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/OAuthService.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/security/UserDetailsServiceImpl.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/CaptchaResponse.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/controller/OAuthController.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/vo/UserInfoResponse.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/AuthService.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/controller/AuthController.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/AuthApplication.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/impl/AuthServiceImpl.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/vo/LoginResponse.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/controller/CaptchaController.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/service/impl/SliderCaptchaServiceImpl.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/dto/RegisterRequest.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/mapper/UserMapper.java
|
||||
/Users/huazhongmin/peanut/AppleDevelop/EmotionMuseum/backend/emotion-auth/src/main/java/com/emotionmuseum/auth/config/OAuthConfig.java
|
||||
Reference in New Issue
Block a user