dy-dashboard/migrate_role_permissions.py
2026-10-28 11:14:17 +08:00

57 lines
2.0 KiB
Python

"""
数据库迁移:角色权限配置表
"""
import pymysql
from config import DB_CONFIG
def migrate():
conn = pymysql.connect(
host=DB_CONFIG["host"],
port=DB_CONFIG["port"],
user=DB_CONFIG["user"],
password=DB_CON…d"],
database=DB_CONFIG["database"],
charset="utf8mb4"
)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS role_permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
role VARCHAR(50) NOT NULL COMMENT '角色标识',
page VARCHAR(50) NOT NULL COMMENT '页面标识',
permission TINYINT DEFAULT 1 COMMENT '权限 1=允许 0=禁止',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_role_page (role, page)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色页面权限配置'
""")
# 插入默认权限(与硬编码一致)
defaults = {
'dashboard': ['admin','procurement_planner','procurement_follower','product_developer','operator'],
'data': ['admin','procurement_follower','operator'],
'inventory': ['admin','procurement_planner','procurement_follower','product_developer','operator'],
'planning': ['admin','procurement_planner','procurement_follower','product_developer','operator'],
'products': ['admin','procurement_planner','procurement_follower','product_developer','operator'],
'warehouse': ['admin'],
'suppliers': ['admin','procurement_planner','procurement_follower'],
'logs': ['admin'],
'config': ['admin'],
'users': ['admin'],
}
for page, roles in defaults.items():
for role in roles:
cursor.execute(
"INSERT IGNORE INTO role_permissions (role, page, permission) VALUES (%s, %s, 1)",
(role, page)
)
conn.commit()
cursor.close()
conn.close()
print("✅ 角色权限表创建成功,已插入默认权限")
if __name__ == "__main__":
migrate()