From 90fa54dc1158d0fae05aa992486d56f18fe02fe3 Mon Sep 17 00:00:00 2001 From: lzh Date: Mon, 30 Mar 2026 22:53:46 +0800 Subject: [PATCH] build(ci): add stage deployment pipeline and configs --- Jenkinsfile | 50 +++- docker-compose.stage.override.yml | 46 ++++ .../src/main/resources/application-stage.yaml | 75 ++++++ .../src/main/resources/application-stage.yaml | 170 ++++++++++++++ .../src/main/resources/application-stage.yaml | 128 +++++++++++ .../src/main/resources/application-stage.yaml | 167 ++++++++++++++ .../src/main/resources/application-stage.yaml | 135 +++++++++++ .../src/main/resources/application-stage.yaml | 217 ++++++++++++++++++ 8 files changed, 978 insertions(+), 10 deletions(-) create mode 100644 docker-compose.stage.override.yml create mode 100644 viewsh-gateway/src/main/resources/application-stage.yaml create mode 100644 viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-stage.yaml create mode 100644 viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-stage.yaml create mode 100644 viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-stage.yaml create mode 100644 viewsh-module-ops/viewsh-module-ops-server/src/main/resources/application-stage.yaml create mode 100644 viewsh-module-system/viewsh-module-system-server/src/main/resources/application-stage.yaml diff --git a/Jenkinsfile b/Jenkinsfile index ae8fe5f1..68669723 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -30,6 +30,11 @@ pipeline { // 部署配置(Prod 服务器内网地址) DEPLOY_HOST = '172.17.16.14' DEPLOY_PATH = '/opt/aiot-platform-cloud' + PROD_DEPLOY_HOST = '172.17.16.14' + PROD_DEPLOY_PATH = '/opt/aiot-platform-cloud' + STAGE_BRANCH = 'stage/multi-tenant-isolation' + STAGE_DEPLOY_HOST = '172.17.16.7' + STAGE_DEPLOY_PATH = '/opt/aiot-platform-cloud-stage' SSH_KEY = '/var/jenkins_home/.ssh/id_rsa' // 性能配置 - 将动态调整 @@ -61,6 +66,23 @@ pipeline { echo "Build: #${env.BUILD_NUMBER}" echo "Workspace: ${env.WORKSPACE}" echo "Start Time: ${new Date()}" + if (env.BRANCH_NAME == 'master') { + env.DEPLOY_ENV = 'prod' + env.DEPLOY_HOST = env.PROD_DEPLOY_HOST + env.DEPLOY_PATH = env.PROD_DEPLOY_PATH + env.DEPLOY_COMPOSE_ARGS = '-f docker-compose.core.yml' + } else if (env.BRANCH_NAME == env.STAGE_BRANCH) { + env.DEPLOY_ENV = 'stage' + env.DEPLOY_HOST = env.STAGE_DEPLOY_HOST + env.DEPLOY_PATH = env.STAGE_DEPLOY_PATH + env.DEPLOY_COMPOSE_ARGS = '-f docker-compose.core.yml -f docker-compose.stage.override.yml' + } else { + env.DEPLOY_ENV = 'build-only' + env.DEPLOY_COMPOSE_ARGS = '-f docker-compose.core.yml' + } + echo "Deploy Env: ${env.DEPLOY_ENV}" + echo "Deploy Host: ${env.DEPLOY_HOST ?: 'N/A'}" + echo "Deploy Path: ${env.DEPLOY_PATH ?: 'N/A'}" echo "==========================================" // 【优化2】动态检测系统资源 @@ -261,7 +283,7 @@ pipeline { when { allOf { expression { env.SERVICES_TO_BUILD != '' } - branch 'master' + expression { env.BRANCH_NAME == 'master' || env.BRANCH_NAME == env.STAGE_BRANCH } } } steps { @@ -281,9 +303,12 @@ pipeline { backupCurrentDeployment(sortedServices) } - // 【新增】同步最新的 docker-compose.core.yml 到部署服务器 - echo "📂 Syncing docker-compose.core.yml to deploy host..." + // 【新增】同步最新的 compose 文件到部署服务器 + echo "📂 Syncing compose files to deploy host..." sh "scp -o StrictHostKeyChecking=no -i ${env.SSH_KEY} docker-compose.core.yml root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/" + if (env.DEPLOY_ENV == 'stage') { + sh "scp -o StrictHostKeyChecking=no -i ${env.SSH_KEY} docker-compose.stage.override.yml root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/" + } try { // 串行部署(保证依赖关系) @@ -312,7 +337,7 @@ pipeline { when { allOf { expression { env.SERVICES_TO_BUILD != '' } - branch 'master' + expression { env.BRANCH_NAME == 'master' || env.BRANCH_NAME == env.STAGE_BRANCH } } } steps { @@ -652,7 +677,7 @@ def getPreviousImageTag() { script: """ ssh ${sshOpts} root@${env.DEPLOY_HOST} ' cd ${env.DEPLOY_PATH} - docker compose -f docker-compose.core.yml images --format json | \ + docker compose ${env.DEPLOY_COMPOSE_ARGS} images --format json | \ jq -r ".[0].Tag" | head -1 ' 2>/dev/null || echo "latest" """, @@ -676,12 +701,16 @@ def backupCurrentDeployment(def services) { sh """ ssh ${sshOpts} root@${env.DEPLOY_HOST} ' cd ${env.DEPLOY_PATH} + export IMAGE_TAG=${env.IMAGE_TAG} # 保存当前 docker-compose 配置 cp docker-compose.core.yml docker-compose.core.yml.backup-${env.BUILD_NUMBER} + if [ -f docker-compose.stage.override.yml ]; then + cp docker-compose.stage.override.yml docker-compose.stage.override.yml.backup-${env.BUILD_NUMBER} + fi # 记录当前运行的镜像 - docker compose -f docker-compose.core.yml images > deployment-state-${env.BUILD_NUMBER}.txt + docker compose ${env.DEPLOY_COMPOSE_ARGS} images > deployment-state-${env.BUILD_NUMBER}.txt echo "✅ Backup completed: deployment-state-${env.BUILD_NUMBER}.txt" ' @@ -718,10 +747,10 @@ def rollbackDeployment(def services) { export IMAGE_TAG=${env.PREVIOUS_IMAGE_TAG} # 拉取旧版本镜像 - docker compose -f docker-compose.core.yml pull ${service} + docker compose ${env.DEPLOY_COMPOSE_ARGS} pull ${service} # 重启服务 - docker compose -f docker-compose.core.yml up -d ${service} + docker compose ${env.DEPLOY_COMPOSE_ARGS} up -d ${service} echo "✅ ${service} rolled back to ${env.PREVIOUS_IMAGE_TAG}" ' @@ -851,11 +880,12 @@ def deployService(String service) { set -e cd ${env.DEPLOY_PATH} + export IMAGE_TAG=${env.IMAGE_TAG} echo "📥 Pulling ${service}..." - docker compose -f docker-compose.core.yml pull ${service} + docker compose ${env.DEPLOY_COMPOSE_ARGS} pull ${service} echo "🔄 Restarting ${service}..." - docker compose -f docker-compose.core.yml up -d ${service} + docker compose ${env.DEPLOY_COMPOSE_ARGS} up -d ${service} echo "⏳ Waiting for container to start..." sleep 5 diff --git a/docker-compose.stage.override.yml b/docker-compose.stage.override.yml new file mode 100644 index 00000000..fd26b6f5 --- /dev/null +++ b/docker-compose.stage.override.yml @@ -0,0 +1,46 @@ +version: '3.8' + +services: + viewsh-gateway: + environment: + SPRING_PROFILES_ACTIVE: stage + + viewsh-module-system-server: + environment: + SPRING_PROFILES_ACTIVE: stage + MYSQL_HOST: 172.17.16.7 + MYSQL_PORT: 3306 + MYSQL_DATABASE: aiot-platform + MYSQL_USER: root + MYSQL_PASSWORD: "65p^VTPi9Qd+" + + viewsh-module-infra-server: + environment: + SPRING_PROFILES_ACTIVE: stage + MYSQL_HOST: 172.17.16.7 + MYSQL_PORT: 3306 + MYSQL_DATABASE: aiot-platform + MYSQL_USER: root + MYSQL_PASSWORD: "65p^VTPi9Qd+" + + viewsh-module-iot-server: + environment: + SPRING_PROFILES_ACTIVE: stage + MYSQL_HOST: 172.17.16.7 + MYSQL_PORT: 3306 + MYSQL_DATABASE: aiot-platform + MYSQL_USER: root + MYSQL_PASSWORD: "65p^VTPi9Qd+" + + viewsh-module-iot-gateway: + environment: + SPRING_PROFILES_ACTIVE: stage + + viewsh-module-ops-server: + environment: + SPRING_PROFILES_ACTIVE: stage + MYSQL_HOST: 172.17.16.7 + MYSQL_PORT: 3306 + MYSQL_DATABASE: aiot-platform + MYSQL_USER: root + MYSQL_PASSWORD: "65p^VTPi9Qd+" diff --git a/viewsh-gateway/src/main/resources/application-stage.yaml b/viewsh-gateway/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..b2d5dc6e --- /dev/null +++ b/viewsh-gateway/src/main/resources/application-stage.yaml @@ -0,0 +1,75 @@ +--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_ADDR:172.17.16.7:8848} + username: ${NACOS_USERNAME:nacos} + password: ${NACOS_PASSWORD:nacos} + discovery: + namespace: ${NACOS_DISCOVERY_NAMESPACE:stage} + group: DEFAULT_GROUP + metadata: + version: 1.0.0 + config: + namespace: ${NACOS_CONFIG_NAMESPACE:stage} + group: DEFAULT_GROUP + file-extension: yaml + refresh-enabled: true + +--- #################### Redis 閰嶇疆 #################### +spring: + data: + redis: + host: 172.17.16.7 + port: 6379 + database: 0 + password: "" + timeout: 5000ms + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 + +--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 #################### + +lock4j: + acquire-timeout: 3000 + expire: 30000 + +--- #################### 鐩戞帶鐩稿叧閰嶇疆 #################### + +management: + endpoints: + web: + base-path: /actuator + exposure: + include: '*' + +spring: + boot: + admin: + client: + instance: + service-host-type: IP + username: ${SPRING_BOOT_ADMIN_USERNAME:admin} + password: ${SPRING_BOOT_ADMIN_PASSWORD:admin} + +logging: + level: + root: INFO + com.viewsh: ${LOG_LEVEL:INFO} + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR + file: + name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log + +--- #################### 鑺嬮亾鐩稿叧閰嶇疆 #################### + +viewsh: + demo: false + env: + tag: ${HOSTNAME:stage} + security: + mock-enable: false diff --git a/viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-stage.yaml b/viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..f06e8f53 --- /dev/null +++ b/viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-stage.yaml @@ -0,0 +1,170 @@ +--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_ADDR:172.17.16.7:8848} + username: ${NACOS_USERNAME:nacos} + password: ${NACOS_PASSWORD:nacos} + discovery: + namespace: ${NACOS_DISCOVERY_NAMESPACE:stage} + group: DEFAULT_GROUP + metadata: + version: 1.0.0 + config: + namespace: ${NACOS_CONFIG_NAMESPACE:stage} + group: DEFAULT_GROUP + file-extension: yaml + refresh-enabled: true + lifecycle: + timeout-per-shutdown-phase: 30s # 澧炲姞浼橀泤鍏抽棴瓒呮椂鏃堕棿 + +--- #################### 鏁版嵁搴撶浉鍏抽厤缃?#################### +spring: + datasource: + druid: + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + url-pattern: /druid/* + login-username: ${DRUID_USERNAME:admin} + login-password: ${DRUID_PASSWORD:admin} + filter: + stat: + enabled: true + log-slow-sql: true + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: + druid: + initial-size: 5 + min-idle: 10 + max-active: 20 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 600000 + max-evictable-idle-time-millis: 1800000 + validation-query: SELECT 1 FROM DUAL + test-while-idle: true + test-on-borrow: false + test-on-return: false + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + primary: master + datasource: + master: + url: jdbc:mysql://${MYSQL_HOST:172.17.16.8}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_USER:root} + password: ${MYSQL_PASSWORD:} + slave: + lazy: true + url: jdbc:mysql://${MYSQL_SLAVE_HOST:${MYSQL_HOST:172.17.16.8}}:${MYSQL_SLAVE_PORT:${MYSQL_PORT:3306}}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_SLAVE_USER:${MYSQL_USER:root}} + password: ${MYSQL_SLAVE_PASSWORD:${MYSQL_PASSWORD:}} + + data: + redis: + host: ${REDIS_HOST:172.17.16.7} + port: ${REDIS_PORT:6379} + database: ${REDIS_DATABASE:0} + password: ${REDIS_PASSWORD:} + timeout: 5000ms + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 + +--- #################### MQ 娑堟伅闃熷垪鐩稿叧閰嶇疆 #################### + +rocketmq: + name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876} + +spring: + rabbitmq: + host: ${RABBITMQ_HOST:127.0.0.1} + port: ${RABBITMQ_PORT:5672} + username: ${RABBITMQ_USERNAME:guest} + password: ${RABBITMQ_PASSWORD:guest} + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092} + +--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 #################### +xxl: + job: + enabled: false + admin: + addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://172.17.16.7:19090/xxl-job-admin} + executor: + ip: ${XXL_JOB_EXECUTOR_IP:} + port: ${XXL_JOB_EXECUTOR_PORT:9999} + +--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 #################### + +lock4j: + acquire-timeout: 3000 + expire: 30000 + +--- #################### 鐩戞帶鐩稿叧閰嶇疆 #################### + +management: + endpoints: + web: + base-path: /actuator + exposure: + include: '*' + +spring: + boot: + admin: + client: + instance: + service-host-type: IP + username: ${SPRING_BOOT_ADMIN_USERNAME:admin} + password: ${SPRING_BOOT_ADMIN_PASSWORD:admin} + context-path: /admin # 閰嶇疆 Spring + +logging: + level: + root: INFO + com.viewsh: ${LOG_LEVEL:INFO} + com.viewsh.module.infra.dal.mysql: debug + com.viewsh.module.infra.dal.mysql.logger.ApiErrorLogMapper: INFO + com.viewsh.module.infra.dal.mysql.file.FileConfigMapper: INFO + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR + file: + name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log + +--- #################### 鑺嬮亾鐩稿叧閰嶇疆 #################### + +viewsh: + demo: false + env: + tag: ${HOSTNAME:stage} + captcha: + enable: true + security: + mock-enable: false + +--- #################### Quartz 浼橀泤鍏抽棴閰嶇疆 #################### + +spring: + quartz: + properties: + org: + quartz: + scheduler: + makeSchedulerThreadDaemon: true + shutdownHook: clean_shutdown + threadPool: + threadNamePrefix: QuartzSchedulerThread + threadsInheritContextClassLoaderOfInitializingThread: true + plugin: + shutdownhook: + class: org.quartz.plugins.management.ShutdownHookPlugin + cleanShutdown: true diff --git a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-stage.yaml b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..6e804f39 --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-stage.yaml @@ -0,0 +1,128 @@ +--- #################### 搴旂敤閰嶇疆 #################### + +spring: + application: + name: iot-gateway-server + profiles: + active: stage + + # Redis 閰嶇疆 + data: + redis: + host: ${REDIS_HOST:172.17.16.7} + port: ${REDIS_PORT:6379} + database: ${REDIS_DATABASE:0} + password: ${REDIS_PASSWORD:} + timeout: ${REDIS_TIMEOUT:30000ms} + +--- #################### 娑堟伅闃熷垪鐩稿叧 #################### + +# rocketmq 閰嶇疆椤癸紝瀵瑰簲 RocketMQProperties 閰嶇疆绫?rocketmq: + name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876} + producer: + group: ${spring.application.name}_PRODUCER + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + consumer: + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + +--- #################### IoT 缃戝叧鐩稿叧閰嶇疆 #################### + +viewsh: + iot: + # 娑堟伅鎬荤嚎閰嶇疆 + message-bus: + type: ${IOT_MESSAGE_BUS_TYPE:redis} + + # 缃戝叧閰嶇疆 + gateway: + # 璁惧 RPC 閰嶇疆 + rpc: + url: ${VIEWSH_IOT_GATEWAY_RPC_URL:http://aiot-iot-server:48091} + connect-timeout: ${VIEWSH_RPC_CONNECT_TIMEOUT:30s} + read-timeout: ${VIEWSH_RPC_READ_TIMEOUT:30s} + # 璁惧 Token 閰嶇疆 + token: + secret: ${VIEWSH_IOT_TOKEN_SECRET:viewshIotGatewayTokenSecret123456789} + expiration: ${VIEWSH_IOT_TOKEN_EXPIRATION:7d} + + # 鍗忚閰嶇疆 + protocol: + # ==================================== + # 閽堝寮曞叆鐨?HTTP 缁勪欢鐨勯厤缃? # ==================================== + http: + enabled: ${IOT_HTTP_ENABLED:true} + server-port: ${IOT_HTTP_PORT:8092} + # ==================================== + # 閽堝寮曞叆鐨?EMQX 缁勪欢鐨勯厤缃? # ==================================== + emqx: + enabled: ${IOT_EMQX_ENABLED:false} + http-port: ${IOT_EMQX_HTTP_PORT:8090} + mqtt-host: ${IOT_EMQX_MQTT_HOST:127.0.0.1} + mqtt-port: ${IOT_EMQX_MQTT_PORT:1883} + mqtt-username: ${IOT_EMQX_MQTT_USERNAME:admin} + mqtt-password: ${IOT_EMQX_MQTT_PASSWORD:public} + mqtt-client-id: ${IOT_EMQX_MQTT_CLIENT_ID:iot-gateway-mqtt} + mqtt-ssl: ${IOT_EMQX_MQTT_SSL:false} + mqtt-topics: + - "/sys/#" + clean-session: true + keep-alive-interval-seconds: 60 + max-inflight-queue: 10000 + connect-timeout-seconds: 10 + # 鏄惁淇′换鎵€鏈?SSL 璇佷功 (榛樿: false)銆傝鍛婏細鐢熶骇鐜蹇呴』涓?false锛? # 浠呭湪寮€鍙戠幆澧冩垨鍐呯綉娴嬭瘯鏃讹紝濡傛灉浣跨敤浜嗚嚜绛惧悕璇佷功锛屽彲浠ヤ复鏃惰缃负 true + trust-all: ${IOT_EMQX_TRUST_ALL:false} + # 閬楀槺娑堟伅閰嶇疆 (鐢ㄤ簬缃戝叧寮傚父涓嬬嚎鏃堕€氱煡鍏朵粬绯荤粺) + will: + enabled: ${IOT_EMQX_WILL_ENABLED:true} + topic: "gateway/status/${viewsh.iot.gateway.emqx.mqtt-client-id}" + payload: "offline" + qos: 1 + retain: true + # 楂樼骇 SSL/TLS 閰嶇疆 (褰?trust-all: false 涓?mqtt-ssl: true 鏃剁敓鏁? + ssl-options: + key-store-path: ${IOT_EMQX_SSL_KEYSTORE_PATH:classpath:certs/client.jks} + key-store-password: ${IOT_EMQX_SSL_KEYSTORE_PASSWORD:your-keystore-password} + trust-store-path: ${IOT_EMQX_SSL_TRUSTSTORE_PATH:classpath:certs/trust.jks} + trust-store-password: ${IOT_EMQX_SSL_TRUSTSTORE_PASSWORD:your-truststore-password} + # ==================================== + # 閽堝寮曞叆鐨?TCP 缁勪欢鐨勯厤缃? # ==================================== + tcp: + enabled: ${IOT_TCP_ENABLED:false} + port: ${IOT_TCP_PORT:8091} + keep-alive-timeout-ms: ${IOT_TCP_KEEPALIVE_TIMEOUT:30000} + max-connections: ${IOT_TCP_MAX_CONNECTIONS:1000} + ssl-enabled: ${IOT_TCP_SSL_ENABLED:false} + ssl-cert-path: ${IOT_TCP_SSL_CERT_PATH:classpath:certs/client.jks} + ssl-key-path: ${IOT_TCP_SSL_KEY_PATH:classpath:certs/client.jks} + # ==================================== + # 閽堝寮曞叆鐨?MQTT 缁勪欢鐨勯厤缃? # ==================================== + mqtt: + enabled: ${IOT_MQTT_ENABLED:true} + port: ${IOT_MQTT_PORT:1883} + max-message-size: ${IOT_MQTT_MAX_MESSAGE_SIZE:8192} + connect-timeout-seconds: ${IOT_MQTT_CONNECT_TIMEOUT:60} + ssl-enabled: ${IOT_MQTT_SSL_ENABLED:false} + +--- #################### 鏃ュ織鐩稿叧閰嶇疆 #################### + +# 鍩虹鏃ュ織閰嶇疆 +logging: + file: + name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log + level: + # 搴旂敤鍩虹鏃ュ織绾у埆 + com.viewsh.module.iot.gateway: ${LOG_LEVEL_IOT_GATEWAY:INFO} + org.springframework.boot: INFO + # RocketMQ 鏃ュ織 + org.apache.rocketmq: WARN + # MQTT 瀹㈡埛绔棩蹇? # io.vertx.mqtt: DEBUG + # 鐢熶骇鐜鏃ュ織 + com.viewsh.module.iot.gateway.protocol.emqx: ${LOG_LEVEL_EMQX:INFO} + com.viewsh.module.iot.gateway.protocol.http: ${LOG_LEVEL_HTTP:INFO} + com.viewsh.module.iot.gateway.protocol.mqtt: ${LOG_LEVEL_MQTT:INFO} + # 鏍规棩蹇楃骇鍒? root: INFO + +debug: false + diff --git a/viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-stage.yaml b/viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..c0ce5110 --- /dev/null +++ b/viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-stage.yaml @@ -0,0 +1,167 @@ +--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_ADDR:172.17.16.7:8848} + username: ${NACOS_USERNAME:nacos} + password: ${NACOS_PASSWORD:nacos} + discovery: + namespace: ${NACOS_DISCOVERY_NAMESPACE:stage} + group: DEFAULT_GROUP + metadata: + version: 1.0.0 + config: + namespace: ${NACOS_CONFIG_NAMESPACE:stage} + group: DEFAULT_GROUP + file-extension: yaml + refresh-enabled: true + +--- #################### 鏁版嵁搴撶浉鍏抽厤缃?#################### +spring: + datasource: + druid: + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + url-pattern: /druid/* + login-username: ${DRUID_USERNAME:admin} + login-password: ${DRUID_PASSWORD:admin} + filter: + stat: + enabled: true + log-slow-sql: true + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: + druid: + initial-size: 5 + min-idle: 10 + max-active: 20 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 600000 + max-evictable-idle-time-millis: 1800000 + validation-query: SELECT 1 FROM DUAL + test-while-idle: true + test-on-borrow: false + test-on-return: false + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + primary: master + datasource: + master: + url: jdbc:mysql://${MYSQL_HOST:172.17.16.8}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_USER:root} + password: ${MYSQL_PASSWORD:} + slave: + lazy: true + url: jdbc:mysql://${MYSQL_SLAVE_HOST:${MYSQL_HOST:172.17.16.8}}:${MYSQL_SLAVE_PORT:${MYSQL_PORT:3306}}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_SLAVE_USER:${MYSQL_USER:root}} + password: ${MYSQL_SLAVE_PASSWORD:${MYSQL_PASSWORD:}} + tdengine: + url: jdbc:TAOS-RS://${TDENGINE_HOST:172.17.16.7}:${TDENGINE_PORT:6041}/aiot_platform + driver-class-name: com.taosdata.jdbc.rs.RestfulDriver + username: ${TDENGINE_USERNAME:root} + password: ${TDENGINE_PASSWORD:taosdata} + druid: + validation-query: SELECT SERVER_STATUS() + + data: + redis: + host: ${REDIS_HOST:172.17.16.7} + port: ${REDIS_PORT:6379} + database: ${REDIS_DATABASE:0} + password: ${REDIS_PASSWORD:} + timeout: 5000ms + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 + +--- #################### MQ 娑堟伅闃熷垪鐩稿叧閰嶇疆 #################### + +rocketmq: + name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876} + producer: + group: ${spring.application.name}_PRODUCER + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + consumer: + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + +spring: + # 绂佺敤 RabbitMQ 鑷姩閰嶇疆锛堝鏋滀笉闇€瑕?RabbitMQ锛岄伩鍏嶅惎鍔ㄦ椂杩炴帴澶辫触锛? + autoconfigure: + exclude: + - org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration + # RabbitMQ 閰嶇疆锛堝凡绂佺敤鑷姩閰嶇疆锛屼粎淇濈暀閰嶇疆椤逛緵涓氬姟浠g爜浣跨敤锛? + # rabbitmq: + # host: ${RABBITMQ_HOST:127.0.0.1} + # port: ${RABBITMQ_PORT:5672} + # username: ${RABBITMQ_USERNAME:guest} + # password: ${RABBITMQ_PASSWORD:guest} + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092} + +--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 #################### +xxl: + job: + enabled: false + admin: + addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://172.17.16.7:19090/xxl-job-admin} + executor: + ip: ${XXL_JOB_EXECUTOR_IP:} + port: ${XXL_JOB_EXECUTOR_PORT:9999} + +--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 #################### + +lock4j: + acquire-timeout: 3000 + expire: 30000 + +--- #################### 鐩戞帶鐩稿叧閰嶇疆 #################### + +management: + endpoints: + web: + base-path: /actuator + exposure: + include: '*' + +spring: + boot: + admin: + client: + instance: + service-host-type: IP + username: ${SPRING_BOOT_ADMIN_USERNAME:admin} + password: ${SPRING_BOOT_ADMIN_PASSWORD:admin} + +logging: + level: + root: INFO + com.viewsh: ${LOG_LEVEL:INFO} + com.viewsh.module.iot.dal.mysql: debug + com.viewsh.module.iot.dal.mysql.sms.SmsChannelMapper: INFO + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR + file: + name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log + +--- #################### 鑺嬮亾鐩稿叧閰嶇疆 #################### + +viewsh: + demo: false + env: + tag: ${HOSTNAME:stage} + captcha: + enable: true + security: + mock-enable: false diff --git a/viewsh-module-ops/viewsh-module-ops-server/src/main/resources/application-stage.yaml b/viewsh-module-ops/viewsh-module-ops-server/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..af2f09f5 --- /dev/null +++ b/viewsh-module-ops/viewsh-module-ops-server/src/main/resources/application-stage.yaml @@ -0,0 +1,135 @@ +--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_ADDR:172.17.16.7:8848} + username: ${NACOS_USERNAME:nacos} # Nacos 璐﹀彿 + password: ${NACOS_PASSWORD:nacos} # Nacos 瀵嗙爜 + discovery: # 銆愰厤缃腑蹇冦€戦厤缃」 + namespace: ${NACOS_DISCOVERY_NAMESPACE:stage} # 鍛藉悕绌洪棿 + group: DEFAULT_GROUP # 浣跨敤鐨?Nacos 閰嶇疆鍒嗙粍锛岄粯璁や负 DEFAULT_GROUP + metadata: + version: 1.0.0 # 鏈嶅姟瀹炰緥鐨勭増鏈彿锛屽彲鐢ㄤ簬鐏板害鍙戝竷 + config: # 銆愭敞鍐屼腑蹇冦€戦厤缃」 + namespace: ${NACOS_CONFIG_NAMESPACE:stage} # 鍛藉悕绌洪棿 + group: DEFAULT_GROUP # 浣跨敤鐨?Nacos 閰嶇疆鍒嗙粍锛岄粯璁や负 DEFAULT_GROUP + +--- #################### 鏁版嵁搴撶浉鍏抽厤缃?#################### +spring: + # 鏁版嵁婧愰厤缃」 + autoconfigure: + # noinspection SpringBootApplicationYaml + exclude: + - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 鎺掗櫎 Druid 鐨勮嚜鍔ㄩ厤缃紝浣跨敤 dynamic-datasource-spring-boot-starter 閰嶇疆澶氭暟鎹簮 + datasource: + druid: # Druid 銆愮洃鎺с€戠浉鍏崇殑鍏ㄥ眬閰嶇疆 + web-stat-filter: + enabled: false + stat-view-servlet: + enabled: false + allow: # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂? url-pattern: /druid/* + login-username: # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮? login-password: + filter: + stat: + enabled: false + log-slow-sql: true # 鎱?SQL 璁板綍 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 澶氭暟鎹簮閰嶇疆 + druid: # Druid 銆愯繛鎺ユ睜銆戠浉鍏崇殑鍏ㄥ眬閰嶇疆 + initial-size: 5 # 鍒濆杩炴帴鏁? min-idle: 10 # 鏈€灏忚繛鎺ユ睜鏁伴噺 + max-active: 20 # 鏈€澶ц繛鎺ユ睜鏁伴噺 + max-wait: 60000 # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂达紝鍗曚綅锛氭绉掞紙1 鍒嗛挓锛? time-between-eviction-runs-millis: 60000 # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫€娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶏細姣锛? 鍒嗛挓锛? min-evictable-idle-time-millis: 600000 # 閰嶇疆涓€涓繛鎺ュ湪姹犱腑鏈€灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛?0 鍒嗛挓锛? max-evictable-idle-time-millis: 1800000 # 閰嶇疆涓€涓繛鎺ュ湪姹犱腑鏈€澶х敓瀛樼殑鏃堕棿锛屽崟浣嶏細姣锛?0 鍒嗛挓锛? validation-query: SELECT 1 FROM DUAL # 閰嶇疆妫€娴嬭繛鎺ユ槸鍚︽湁鏁? test-while-idle: true + test-on-borrow: false + test-on-return: false + pool-prepared-statements: true # 鏄惁寮€鍚?PreparedStatement 缂撳瓨 + max-pool-prepared-statement-per-connection-size: 20 # 姣忎釜杩炴帴缂撳瓨鐨?PreparedStatement 鏁伴噺 + primary: master + datasource: + master: + url: jdbc:mysql://${MYSQL_HOST:172.17.16.8}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_USER:root} + password: ${MYSQL_PASSWORD:} + slave: # 妯℃嫙浠庡簱锛屽彲鏍规嵁鑷繁闇€瑕佷慨鏀? lazy: true # 寮€鍚噿鍔犺浇锛屼繚璇佸惎鍔ㄩ€熷害 + url: jdbc:mysql://${MYSQL_SLAVE_HOST:${MYSQL_HOST:172.17.16.8}}:${MYSQL_SLAVE_PORT:${MYSQL_PORT:3306}}/${MYSQL_DATABASE:aiot-platform-test}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: ${MYSQL_SLAVE_USER:${MYSQL_USER:root}} + password: ${MYSQL_SLAVE_PASSWORD:${MYSQL_PASSWORD:}} + # Redis 閰嶇疆銆俁edisson 榛樿鐨勯厤缃冻澶熶娇鐢紝涓€鑸笉闇€瑕佽繘琛岃皟浼? data: + redis: + host: ${REDIS_HOST:172.17.16.7} # 鍦板潃 + port: ${REDIS_PORT:6379} # 绔彛 + database: ${REDIS_DATABASE:0} # 鏁版嵁搴撶储寮? password: ${REDIS_PASSWORD:} # 瀵嗙爜 + +--- #################### MQ 娑堟伅闃熷垪鐩稿叧閰嶇疆 #################### + +# rocketmq 閰嶇疆椤癸紝瀵瑰簲 RocketMQProperties 閰嶇疆绫?rocketmq: + name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876} # RocketMQ Namesrv + producer: + group: ${spring.application.name}_PRODUCER + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + consumer: + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + +spring: + # RabbitMQ 閰嶇疆椤癸紝瀵瑰簲 RabbitProperties 閰嶇疆绫? rabbitmq: + host: ${SPRING_RABBITMQ_HOST:127.0.0.1} # RabbitMQ 鏈嶅姟鐨勫湴鍧€ + port: ${SPRING_RABBITMQ_PORT:5672} # RabbitMQ 鏈嶅姟鐨勭鍙? username: ${SPRING_RABBITMQ_USERNAME:guest} # RabbitMQ 鏈嶅姟鐨勮处鍙? password: ${SPRING_RABBITMQ_PASSWORD:guest} # RabbitMQ 鏈嶅姟鐨勫瘑鐮? # Kafka 閰嶇疆椤癸紝瀵瑰簲 KafkaProperties 閰嶇疆绫? kafka: + bootstrap-servers: ${SPRING_KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092} # 鎸囧畾 Kafka Broker 鍦板潃锛屽彲浠ヨ缃涓紝浠ラ€楀彿鍒嗛殧 + +--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 #################### + +xxl: + job: + enabled: false + admin: + addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://172.17.16.7:19090/xxl-job-admin} + executor: + ip: ${XXL_JOB_EXECUTOR_IP:} + port: ${XXL_JOB_EXECUTOR_PORT:9999} + +--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 #################### + +# Lock4j 閰嶇疆椤?lock4j: + acquire-timeout: 3000 # 鑾峰彇鍒嗗竷寮忛攣瓒呮椂鏃堕棿锛岄粯璁や负 3000 姣 + expire: 30000 # 鍒嗗竷寮忛攣鐨勮秴鏃舵椂闂达紝榛樿涓?30 姣 + +--- #################### 鐩戞帶鐩稿叧閰嶇疆 #################### + +# Actuator 鐩戞帶绔偣鐨勯厤缃」 +management: + endpoints: + web: + base-path: /actuator # Actuator 鎻愪緵鐨?API 鎺ュ彛鐨勬牴鐩綍銆傞粯璁や负 /actuator + exposure: + include: '*' # 闇€瑕佸紑鏀剧殑绔偣銆傞粯璁ゅ€煎彧鎵撳紑 health 鍜?info 涓や釜绔偣銆傞€氳繃璁剧疆 * 锛屽彲浠ュ紑鏀炬墍鏈夌鐐广€? +# Spring Boot Admin 閰嶇疆椤?spring: + boot: + admin: + # Spring Boot Admin Client 瀹㈡埛绔殑鐩稿叧閰嶇疆 + client: + instance: + service-host-type: IP # 娉ㄥ唽瀹炰緥鏃讹紝浼樺厛浣跨敤 IP [IP, HOST_NAME, CANONICAL_HOST_NAME] + username: ${SPRING_BOOT_ADMIN_CLIENT_USERNAME:admin} + password: ${SPRING_BOOT_ADMIN_CLIENT_PASSWORD:admin} + +# 鏃ュ織鏂囦欢閰嶇疆 +logging: + level: + # 閰嶇疆鑷繁鍐欑殑 MyBatis Mapper 鎵撳嵃鏃ュ織 + com.viewsh.module.ops.dal.mysql: info # 鐢熶骇鐜寤鸿 info + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 鑺嬭壙锛氬厛绂佺敤锛孲pring Boot 3.X 瀛樺湪閮ㄥ垎閿欒鐨?WARN 鎻愮ず + +--- #################### 鑺嬮亾鐩稿叧閰嶇疆 #################### + +# 鑺嬮亾閰嶇疆椤癸紝璁剧疆褰撳墠椤圭洰鎵€鏈夎嚜瀹氫箟鐨勯厤缃?viewsh: + env: # 澶氱幆澧冪殑閰嶇疆椤? tag: ${HOSTNAME} + security: + mock-enable: false # 鐢熶骇鐜绂佺敤 mock + access-log: # 璁块棶鏃ュ織鐨勯厤缃」 + enable: true # 鐢熶骇鐜寮€鍚闂棩蹇? diff --git a/viewsh-module-system/viewsh-module-system-server/src/main/resources/application-stage.yaml b/viewsh-module-system/viewsh-module-system-server/src/main/resources/application-stage.yaml new file mode 100644 index 00000000..dbd696b5 --- /dev/null +++ b/viewsh-module-system/viewsh-module-system-server/src/main/resources/application-stage.yaml @@ -0,0 +1,217 @@ +--- #################### 娉ㄥ唽涓績 + 閰嶇疆涓績鐩稿叧閰嶇疆 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_ADDR:172.17.16.7:8848} + username: ${NACOS_USERNAME:nacos} + password: ${NACOS_PASSWORD:nacos} + discovery: + namespace: ${NACOS_DISCOVERY_NAMESPACE:stage} + group: DEFAULT_GROUP + metadata: + version: 1.0.0 + config: + namespace: ${NACOS_CONFIG_NAMESPACE:stage} + group: DEFAULT_GROUP + file-extension: yaml + refresh-enabled: true + +--- #################### 鏁版嵁搴撶浉鍏抽厤缃?#################### +spring: + datasource: + druid: # Druid 銆愮洃鎺с€戠浉鍏崇殑鍏ㄥ眬閰嶇疆 + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + allow: # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂? + url-pattern: /druid/* + login-username: ${DRUID_USERNAME:admin} + login-password: ${DRUID_PASSWORD:admin} + filter: + stat: + enabled: true + log-slow-sql: true # 鎱?SQL 璁板綍 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 澶氭暟鎹簮閰嶇疆 + druid: # Druid 銆愯繛鎺ユ睜銆戠浉鍏崇殑鍏ㄥ眬閰嶇疆 + initial-size: 5 + min-idle: 10 + max-active: 20 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 600000 + max-evictable-idle-time-millis: 1800000 + validation-query: SELECT 1 FROM DUAL + test-while-idle: true + test-on-borrow: false + test-on-return: false + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + primary: master + datasource: + master: + url: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: root + password: root + slave: # 浠庡簱閰嶇疆锛堝彲閫夛級 + lazy: true + url: jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: root + password: root + + # Redis 閰嶇疆 + data: + redis: + host: 172.17.16.7 + port: 6379 + database: 0 + password: "" + timeout: 5000ms + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 + +--- #################### MQ 娑堟伅闃熷垪鐩稿叧閰嶇疆 #################### + +# rocketmq 閰嶇疆椤? +rocketmq: + name-server: ${ROCKETMQ_NAMESRV_ADDR:124.222.218.198:9876} + producer: + group: ${spring.application.name}_PRODUCER + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + consumer: + access-key: ${ROCKETMQ_ACCESS_KEY:} + secret-key: ${ROCKETMQ_SECRET_KEY:} + +spring: + # RabbitMQ 閰嶇疆椤癸紙鍙€夛級 + rabbitmq: + host: ${RABBITMQ_HOST:127.0.0.1} + port: ${RABBITMQ_PORT:5672} + username: ${RABBITMQ_USERNAME:guest} + password: ${RABBITMQ_PASSWORD:guest} + # Kafka 閰嶇疆椤癸紙鍙€夛級 + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092} + +--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 #################### +xxl: + job: + enabled: false + admin: + addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://172.17.16.7:19090/xxl-job-admin} + executor: + ip: ${XXL_JOB_EXECUTOR_IP:} + port: ${XXL_JOB_EXECUTOR_PORT:9999} + +--- #################### 鏈嶅姟淇濋殰鐩稿叧閰嶇疆 #################### + +# Lock4j 閰嶇疆椤? +lock4j: + acquire-timeout: 3000 + expire: 30000 + +--- #################### 鐩戞帶鐩稿叧閰嶇疆 #################### + +# Actuator 鐩戞帶绔偣鐨勯厤缃」 +management: + endpoints: + web: + base-path: /actuator + exposure: + include: '*' + +# Spring Boot Admin 閰嶇疆椤? +spring: + boot: + admin: + client: + instance: + service-host-type: IP + username: ${SPRING_BOOT_ADMIN_USERNAME:admin} + password: ${SPRING_BOOT_ADMIN_PASSWORD:admin} + +# 鏃ュ織鏂囦欢閰嶇疆 +logging: + level: + root: INFO + com.viewsh: ${LOG_LEVEL:INFO} + file: + name: ${LOG_FILE_PATH:/app/logs}/${spring.application.name}.log + +--- #################### 寰俊鍏紬鍙枫€佸皬绋嬪簭鐩稿叧閰嶇疆 #################### +wx: + mp: # 鍏紬鍙烽厤缃紙蹇呭~锛? + app-id: ${WX_MP_APP_ID:wx5b23ba7a5589ecbb} # 浼樺厛鐜鍙橀噺锛屽厹搴曢粯璁ゅ€? + secret: ${WX_MP_SECRET:2a7b3b20c537e52e74afd395eb85f61f} + config-storage: + type: RedisTemplate + key-prefix: wx + http-client-type: HttpClient + miniapp: # 灏忕▼搴忛厤缃紙蹇呭~锛? + appid: ${WX_MINIAPP_APPID:wxc4598c446f8a9cb3} + secret: ${WX_MINIAPP_SECRET:4a1a04e07f6a4a0751b39c3064a92c8b} + config-storage: + type: RedisTemplate + key-prefix: wa + http-client-type: HttpClient + +--- #################### 鑺嬮亾鐩稿叧閰嶇疆 #################### + +viewsh: + demo: false # 鐢熶骇鐜鍏抽棴婕旂ず妯″紡 + env: + tag: ${HOSTNAME:stage} + captcha: + enable: true # 鐢熶骇鐜寮€鍚獙璇佺爜 + security: + mock-enable: false # 鐢熶骇鐜鍏抽棴 mock + access-log: + enable: true + wxa-code: + env-version: release + wxa-subscribe-message: + miniprogram-state: formal + +justauth: + enabled: false + type: + DINGTALK: # 閽夐拤 + client-id: dingvrnreaje3yqvzhxg + client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI + ignore-check-redirect-uri: true + WECHAT_ENTERPRISE: # 浼佷笟寰俊 + client-id: wwd411c69a39ad2e54 + client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw + agent-id: 1000004 + ignore-check-redirect-uri: true + # noinspection SpringBootApplicationYaml + WECHAT_MINI_PROGRAM: # 寰俊灏忕▼搴? + client-id: ${wx.miniapp.appid} + client-secret: ${wx.miniapp.secret} + ignore-check-redirect-uri: true + ignore-check-state: true # 寰俊灏忕▼搴忥紝涓嶄細浣跨敤鍒?state锛屾墍浠ヤ笉杩涜鏍¢獙 + WECHAT_MP: # 寰俊鍏紬鍙? + client-id: ${wx.mp.app-id} + client-secret: ${wx.mp.secret} + ignore-check-redirect-uri: true + ALIPAY: # 鏀粯瀹濆皬绋嬪簭 + client-id: xx + client-secret: xx + alipay-public-key: xx + ignore-check-redirect-uri: true + ignore-check-state: true + cache: + type: REDIS + prefix: 'social_auth_state:' # 缂撳瓨鍓嶇紑锛岀洰鍓嶅彧瀵?Redis 缂撳瓨鐢熸晥锛岄粯璁?JUSTAUTH::STATE:: + timeout: 24h # 瓒呮椂鏃堕暱锛岀洰鍓嶅彧瀵?Redis 缂撳瓨鐢熸晥锛岄粯璁?3 鍒嗛挓