From 6db64917a2b0e9a82060bfba87d3632250e8b6da Mon Sep 17 00:00:00 2001 From: wangziqi Date: Sat, 1 Aug 2026 12:19:53 +0800 Subject: [PATCH] chore(server): enable pay/mall modules and local compose/flyway setup --- compose.yaml | 36 +++++++++++ pom.xml | 4 +- script/docker/init-local-roles.sql | 25 ++++++++ yudao-server/pom.xml | 60 ++++++++++++------- .../src/main/resources/application-local.yaml | 22 ++++--- .../main/resources/db/local/afterMigrate.sql | 10 ++++ 6 files changed, 123 insertions(+), 34 deletions(-) create mode 100644 compose.yaml create mode 100644 script/docker/init-local-roles.sql create mode 100644 yudao-server/src/main/resources/db/local/afterMigrate.sql diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 00000000..5ca6cd59 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,36 @@ +name: gongxue-local + +services: + postgres: + image: postgres:17-alpine + ports: + - "127.0.0.1::5432" + environment: + POSTGRES_DB: ruoyi-vue-pro + POSTGRES_USER: postgres + POSTGRES_PASSWORD: 123456 + volumes: + - postgres-data:/var/lib/postgresql/data + - ./sql/postgresql/ruoyi-vue-pro.sql:/docker-entrypoint-initdb.d/000-platform.sql:ro + - ./script/docker/init-local-roles.sql:/docker-entrypoint-initdb.d/010-local-roles.sql:ro + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d ruoyi-vue-pro"] + interval: 2s + timeout: 5s + retries: 30 + + redis: + image: redis:6-alpine + ports: + - "127.0.0.1::6379" + volumes: + - redis-data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 2s + timeout: 5s + retries: 30 + +volumes: + postgres-data: + redis-data: diff --git a/pom.xml b/pom.xml index eb947f5c..7a12e96e 100644 --- a/pom.xml +++ b/pom.xml @@ -20,8 +20,8 @@ - - + yudao-module-pay + yudao-module-mall diff --git a/script/docker/init-local-roles.sql b/script/docker/init-local-roles.sql new file mode 100644 index 00000000..954c2bcd --- /dev/null +++ b/script/docker/init-local-roles.sql @@ -0,0 +1,25 @@ +CREATE ROLE yudao_flyway LOGIN NOINHERIT PASSWORD '123456'; +CREATE ROLE yudao_runtime LOGIN NOINHERIT PASSWORD '123456'; + +ALTER SCHEMA public OWNER TO yudao_flyway; +DO $$ +DECLARE + object RECORD; +BEGIN + FOR object IN + SELECT format('%I.%I', schemaname, tablename) AS name + FROM pg_tables + WHERE schemaname = 'public' + LOOP + EXECUTE 'ALTER TABLE ' || object.name || ' OWNER TO yudao_flyway'; + END LOOP; + FOR object IN + SELECT format('%I.%I', sequence_schema, sequence_name) AS name + FROM information_schema.sequences + WHERE sequence_schema = 'public' + LOOP + EXECUTE 'ALTER SEQUENCE ' || object.name || ' OWNER TO yudao_flyway'; + END LOOP; +END +$$; +GRANT USAGE ON SCHEMA public TO yudao_runtime; diff --git a/yudao-server/pom.xml b/yudao-server/pom.xml index 0fd1a507..43c14055 100644 --- a/yudao-server/pom.xml +++ b/yudao-server/pom.xml @@ -58,12 +58,12 @@ - - - - - - + + + cn.iocoder.boot + yudao-module-pay + ${revision} + @@ -73,21 +73,21 @@ - - - - - - - - - - - - - - - + + cn.iocoder.boot + yudao-module-product + ${revision} + + + cn.iocoder.boot + yudao-module-promotion + ${revision} + + + cn.iocoder.boot + yudao-module-trade + ${revision} + @@ -143,10 +143,24 @@ + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.springframework.boot + spring-boot-docker-compose + runtime + true + + - org.flywaydb - flyway-core + org.springframework.boot + spring-boot-starter-flyway org.flywaydb diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 2536de6f..e9d92244 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -3,6 +3,10 @@ server: --- #################### 数据库相关配置 #################### spring: + docker: + compose: + file: ../compose.yaml + lifecycle-management: start-and-stop autoconfigure: # noinspection SpringBootApplicationYaml exclude: @@ -26,9 +30,9 @@ spring: flyway: enabled: true url: ${FLYWAY_URL:${spring.datasource.dynamic.datasource.master.url}} - user: ${FLYWAY_USER} - password: ${FLYWAY_PASSWORD} - locations: classpath:db/migration + user: ${FLYWAY_USER:yudao_flyway} + password: ${FLYWAY_PASSWORD:123456} + locations: classpath:db/migration,classpath:db/local table: flyway_schema_history baseline-on-migrate: true baseline-version: 4009 @@ -75,14 +79,14 @@ spring: primary: master datasource: master: - url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro - username: root - password: 123456 + url: ${MASTER_DATASOURCE_URL:jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro} + username: ${MASTER_DATASOURCE_USERNAME:yudao_runtime} + password: ${MASTER_DATASOURCE_PASSWORD:123456} slave: # 模拟从库,可根据自己需要修改 lazy: true # 开启懒加载,保证启动速度 - url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro - username: root - password: 123456 + url: ${SLAVE_DATASOURCE_URL:${spring.datasource.dynamic.datasource.master.url}} + username: ${SLAVE_DATASOURCE_USERNAME:${spring.datasource.dynamic.datasource.master.username}} + password: ${SLAVE_DATASOURCE_PASSWORD:${spring.datasource.dynamic.datasource.master.password}} # tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!) # lazy: true # 开启懒加载,保证启动速度 # url: jdbc:TAOS-WS://127.0.0.1:6041/ruoyi_vue_pro?varcharAsString=true&enableAutoReconnect=true # 参见:https://t.zsxq.com/qaX9c,开启 TDengine WebSocket 自动重连 diff --git a/yudao-server/src/main/resources/db/local/afterMigrate.sql b/yudao-server/src/main/resources/db/local/afterMigrate.sql new file mode 100644 index 00000000..e6fbbd81 --- /dev/null +++ b/yudao-server/src/main/resources/db/local/afterMigrate.sql @@ -0,0 +1,10 @@ +GRANT USAGE ON SCHEMA public TO yudao_runtime; +GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA public TO yudao_runtime; +GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO yudao_runtime; + +REVOKE ALL ON TABLE + education_question_lifecycle_transition_token, + education_content_node_lifecycle_transition_token, + education_question_collection_lifecycle_transition_token, + education_question_collection_membership_token +FROM yudao_runtime;