Files
2026-08-08 15:53:53 +08:00

140 lines
5.0 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 酷冰甲 CMS 升级脚本:新增 CRM(客户管理)与 PSI(进销存)模块
-- 用法:在远端 MySQL 执行本文件(phpMyAdmin / 命令行均可)。
-- 幂等,可重复执行;兼容 MySQL 5.7 与 8.05.7 不支持 ADD COLUMN IF NOT EXISTS,故用存储过程判断)。
SET NAMES utf8mb4;
/* ===================== CRM 客户管理系统 ===================== */
CREATE TABLE IF NOT EXISTS `crm_customers` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(120) NOT NULL,
`company` VARCHAR(160) DEFAULT '',
`contact` VARCHAR(60) DEFAULT '',
`phone` VARCHAR(40) DEFAULT '',
`email` VARCHAR(120) DEFAULT '',
`country` VARCHAR(60) DEFAULT '',
`type` VARCHAR(20) DEFAULT 'trade',
`source` VARCHAR(40) DEFAULT '',
`level` VARCHAR(20) DEFAULT 'C',
`remark` TEXT,
`owner` VARCHAR(60) DEFAULT '',
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `crm_leads` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`customer_id` INT DEFAULT 0,
`title` VARCHAR(200) NOT NULL,
`amount` DECIMAL(12,2) DEFAULT 0,
`stage` VARCHAR(20) DEFAULT 'new',
`expected_close` VARCHAR(20) DEFAULT '',
`owner` VARCHAR(60) DEFAULT '',
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `crm_followups` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`customer_id` INT DEFAULT 0,
`lead_id` INT DEFAULT 0,
`content` TEXT,
`next_at` VARCHAR(20) DEFAULT '',
`owner` VARCHAR(60) DEFAULT '',
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/* ===================== 进销存 PSI 系统 ===================== */
CREATE TABLE IF NOT EXISTS `psi_materials` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`code` VARCHAR(40) DEFAULT '',
`name` VARCHAR(160) NOT NULL,
`spec` VARCHAR(120) DEFAULT '',
`unit` VARCHAR(10) DEFAULT '个',
`category` VARCHAR(40) DEFAULT '',
`stock` DECIMAL(12,2) DEFAULT 0,
`price` DECIMAL(10,2) DEFAULT 0,
`supplier_id` INT DEFAULT 0,
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `psi_products` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`code` VARCHAR(40) DEFAULT '',
`name` VARCHAR(160) NOT NULL,
`spec` VARCHAR(120) DEFAULT '',
`unit` VARCHAR(10) DEFAULT '件',
`category` VARCHAR(40) DEFAULT '',
`stock` DECIMAL(12,2) DEFAULT 0,
`cost` DECIMAL(10,2) DEFAULT 0,
`price` DECIMAL(10,2) DEFAULT 0,
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `psi_suppliers` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(160) NOT NULL,
`contact` VARCHAR(60) DEFAULT '',
`phone` VARCHAR(40) DEFAULT '',
`country` VARCHAR(60) DEFAULT '',
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `psi_purchases` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order_no` VARCHAR(40) NOT NULL,
`supplier_id` INT DEFAULT 0,
`item_type` VARCHAR(10) DEFAULT 'material',
`item_id` INT DEFAULT 0,
`qty` DECIMAL(12,2) DEFAULT 0,
`price` DECIMAL(10,2) DEFAULT 0,
`amount` DECIMAL(12,2) DEFAULT 0,
`status` VARCHAR(20) DEFAULT 'pending',
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `psi_sales` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`order_no` VARCHAR(40) NOT NULL,
`customer` VARCHAR(160) DEFAULT '',
`channel` VARCHAR(20) DEFAULT 'domestic',
`item_id` INT DEFAULT 0,
`qty` DECIMAL(12,2) DEFAULT 0,
`price` DECIMAL(10,2) DEFAULT 0,
`amount` DECIMAL(12,2) DEFAULT 0,
`status` VARCHAR(20) DEFAULT 'pending',
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `psi_stock_moves` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`item_type` VARCHAR(10) DEFAULT 'product',
`item_id` INT DEFAULT 0,
`direction` VARCHAR(10) DEFAULT 'in',
`qty` DECIMAL(12,2) DEFAULT 0,
`ref_no` VARCHAR(40) DEFAULT '',
`remark` TEXT,
`created_at` VARCHAR(20) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/* 为 admin_users 补齐分系统角色列(幂等,兼容 5.7) */
DROP PROCEDURE IF EXISTS `add_crm_psi_cols`;
DELIMITER $$
CREATE PROCEDURE `add_crm_psi_cols`()
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='admin_users' AND COLUMN_NAME='crm_role') THEN
ALTER TABLE `admin_users` ADD COLUMN `crm_role` VARCHAR(20) DEFAULT 'none';
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='admin_users' AND COLUMN_NAME='psi_role') THEN
ALTER TABLE `admin_users` ADD COLUMN `psi_role` VARCHAR(20) DEFAULT 'none';
END IF;
END$$
DELIMITER ;
CALL `add_crm_psi_cols`();
DROP PROCEDURE IF EXISTS `add_crm_psi_cols`;
-- 升级完成后,登录后台 → 用户管理,将超级管理员/相关账号的 crm_role、psi_role 设为 admin。