124 lines
5.8 KiB
Python
124 lines
5.8 KiB
Python
"""
|
|
初始化仪表盘的内部表(用户管理、操作日志等)
|
|
运行方式: python3 init_db.py
|
|
"""
|
|
import pymysql
|
|
import config
|
|
from services.passwords import hash_password
|
|
|
|
def init():
|
|
conn = pymysql.connect(
|
|
unix_socket=config.DB_CONFIG["unix_socket"],
|
|
user="root",
|
|
database=config.DB_CONFIG["database"],
|
|
charset="utf8mb4"
|
|
)
|
|
cursor = conn.cursor()
|
|
|
|
# 系统用户表
|
|
cursor.execute("""
|
|
CREATE TABLE IF NOT EXISTS dashboard_users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
real_name VARCHAR(50) DEFAULT '',
|
|
role VARCHAR(20) DEFAULT 'viewer',
|
|
phone VARCHAR(20) DEFAULT '',
|
|
email VARCHAR(100) DEFAULT '',
|
|
department VARCHAR(50) DEFAULT '' COMMENT '部门',
|
|
avatar VARCHAR(255) DEFAULT '',
|
|
status TINYINT DEFAULT 1 COMMENT '1=启用 0=禁用',
|
|
must_change_password TINYINT DEFAULT 1 COMMENT '1=下次登录必须修改密码',
|
|
last_login DATETIME DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
""")
|
|
|
|
# 操作日志表
|
|
cursor.execute("""
|
|
CREATE TABLE IF NOT EXISTS dashboard_logs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT DEFAULT NULL,
|
|
action VARCHAR(100) NOT NULL,
|
|
detail TEXT,
|
|
ip_address VARCHAR(50) DEFAULT '',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
""")
|
|
|
|
# 用户订单列宽配置表(同一账号跨设备同步)
|
|
cursor.execute("""
|
|
CREATE TABLE IF NOT EXISTS user_column_widths (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
page VARCHAR(50) NOT NULL COMMENT '页面标识',
|
|
field_name VARCHAR(100) NOT NULL COMMENT '稳定字段名',
|
|
width INT NOT NULL COMMENT '列宽(px)',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
UNIQUE KEY uk_user_page_field (user_id, page, field_name),
|
|
KEY idx_user_page (user_id, page)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
""")
|
|
|
|
# 新品管理表
|
|
cursor.execute("""
|
|
CREATE TABLE IF NOT EXISTS new_products (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
category1 VARCHAR(100) NOT NULL DEFAULT '' COMMENT '第一级分类',
|
|
category2 VARCHAR(100) NOT NULL DEFAULT '' COMMENT '第二级分类',
|
|
category3 VARCHAR(100) NOT NULL DEFAULT '' COMMENT '第三级分类',
|
|
product_type VARCHAR(50) NOT NULL DEFAULT '' COMMENT '类别:成品/赠品/现货',
|
|
brand VARCHAR(100) NOT NULL DEFAULT '' COMMENT '品牌',
|
|
product_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品编码',
|
|
product_name VARCHAR(200) NOT NULL DEFAULT '' COMMENT '产品名称',
|
|
barcode VARCHAR(100) NOT NULL DEFAULT '' COMMENT '条形码',
|
|
capacity VARCHAR(100) NOT NULL DEFAULT '' COMMENT '容量',
|
|
effect_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '产品效果图(内外包)',
|
|
remark VARCHAR(500) NOT NULL DEFAULT '' COMMENT '成品备注',
|
|
total_cost VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品总成本',
|
|
total_payment VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品总货款',
|
|
product_dev VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品开发',
|
|
package_dev VARCHAR(100) NOT NULL DEFAULT '' COMMENT '包材开发',
|
|
designer VARCHAR(100) NOT NULL DEFAULT '' COMMENT '设计师',
|
|
operator VARCHAR(100) NOT NULL DEFAULT '' COMMENT '负责运营',
|
|
upgrade_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '升级前的(内料升级前图片)',
|
|
confirm_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '确版内料图凭证',
|
|
quote_inner_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '内料报价单',
|
|
quote_pack_img VARCHAR(500) NOT NULL DEFAULT '' COMMENT '包材报价单',
|
|
created_at TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='新品管理表'
|
|
""")
|
|
|
|
# 成品基础信息附件(报价单、供应商选择原因等图片)
|
|
cursor.execute("""
|
|
CREATE TABLE IF NOT EXISTS product_attachments (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
product_id INT NOT NULL,
|
|
stored_name VARCHAR(80) NOT NULL,
|
|
original_name VARCHAR(255) NOT NULL DEFAULT '',
|
|
uploaded_by INT DEFAULT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
KEY idx_product_attachments_product (product_id),
|
|
UNIQUE KEY uk_product_attachments_stored_name (stored_name)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成品基础信息附件'
|
|
""")
|
|
|
|
# 插入默认管理员
|
|
cursor.execute("SELECT COUNT(*) FROM dashboard_users WHERE username='admin'")
|
|
if cursor.fetchone()[0] == 0:
|
|
cursor.execute("""
|
|
INSERT INTO dashboard_users (username, password, real_name, role, phone, email, must_change_password)
|
|
VALUES (%s, %s, %s, %s, %s, %s, 1)
|
|
""", ('admin', hash_password('Admin123!@#'), '系统管理员', 'admin', '', 'admin@dy.com'))
|
|
|
|
conn.commit()
|
|
cursor.close()
|
|
conn.close()
|
|
print("✅ 数据库初始化完成")
|
|
print(" 默认账号: admin / Admin123!@#(首次登录必须修改)")
|
|
|
|
if __name__ == "__main__":
|
|
init()
|