文件还在测试中
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
-- 酷冰甲 CMS 升级脚本:新增 CRM(客户管理)与 PSI(进销存)模块
|
||||
-- 用法:在远端 MySQL 执行本文件(phpMyAdmin / 命令行均可)。
|
||||
-- 幂等,可重复执行;兼容 MySQL 5.7 与 8.0(5.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。
|
||||
Reference in New Issue
Block a user