diff --git a/backend/mci-server/src/main/java/com/sino/mci/config/FlywayConfig.java b/backend/mci-server/src/main/java/com/sino/mci/config/FlywayConfig.java index 8b1bb2a..363df29 100644 --- a/backend/mci-server/src/main/java/com/sino/mci/config/FlywayConfig.java +++ b/backend/mci-server/src/main/java/com/sino/mci/config/FlywayConfig.java @@ -3,6 +3,7 @@ package com.sino.mci.config; import javax.sql.DataSource; import org.flywaydb.core.Flyway; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,11 +13,14 @@ import org.springframework.context.annotation.Configuration; public class FlywayConfig { @Bean(initMethod = "migrate") - public Flyway flyway(DataSource dataSource) { + public Flyway flyway( + DataSource dataSource, + @Value("${spring.flyway.locations:classpath:db/migration}") String[] locations, + @Value("${spring.flyway.baseline-on-migrate:true}") boolean baselineOnMigrate) { return Flyway.configure() .dataSource(dataSource) - .locations("classpath:db/migration") - .baselineOnMigrate(true) + .locations(locations) + .baselineOnMigrate(baselineOnMigrate) .load(); } } diff --git a/backend/mci-server/src/main/resources/db/migration/V1__init_account.sql b/backend/mci-server/src/main/resources/db/migration/V1__init_account.sql index b811187..72edfb2 100644 --- a/backend/mci-server/src/main/resources/db/migration/V1__init_account.sql +++ b/backend/mci-server/src/main/resources/db/migration/V1__init_account.sql @@ -16,7 +16,8 @@ CREATE TABLE IF NOT EXISTS mci_platform_role ( role_name VARCHAR(128) NOT NULL COMMENT '角色名称', permissions JSON COMMENT '权限列表', status TINYINT NOT NULL DEFAULT 1, - create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP + create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台角色表'; CREATE TABLE IF NOT EXISTS mci_user ( @@ -41,3 +42,7 @@ CREATE TABLE IF NOT EXISTS mci_user_role ( create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_user_role (user_id, role_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关系表'; + +ALTER TABLE mci_user_role + ADD CONSTRAINT fk_user_role_user_id FOREIGN KEY (user_id) REFERENCES mci_user (id), + ADD CONSTRAINT fk_user_role_role_id FOREIGN KEY (role_id) REFERENCES mci_platform_role (id); diff --git a/backend/mci-server/src/main/resources/db/migration/V2__seed_roles.sql b/backend/mci-server/src/main/resources/db/migration/V2__seed_roles.sql index a423ccd..e0073ca 100644 --- a/backend/mci-server/src/main/resources/db/migration/V2__seed_roles.sql +++ b/backend/mci-server/src/main/resources/db/migration/V2__seed_roles.sql @@ -1,4 +1,4 @@ -INSERT INTO mci_platform_role (role_code, role_name, permissions) VALUES +INSERT IGNORE INTO mci_platform_role (role_code, role_name, permissions) VALUES ('admin', '租户管理员', '["*"]'), ('operator', '运营操作员', '["send:write", "channel:read", "channel:write", "record:read"]'), ('viewer', '只读用户', '["record:read", "channel:read"]'); diff --git a/backend/mci-shared/src/main/java/com/sino/mci/shared/entity/BaseEntity.java b/backend/mci-shared/src/main/java/com/sino/mci/shared/entity/BaseEntity.java index 2b3d727..298c0f9 100644 --- a/backend/mci-shared/src/main/java/com/sino/mci/shared/entity/BaseEntity.java +++ b/backend/mci-shared/src/main/java/com/sino/mci/shared/entity/BaseEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Getter; import lombok.Setter; @@ -24,4 +25,7 @@ public abstract class BaseEntity implements Serializable { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; + + @TableLogic + private Integer deleted; }