From 95ed45ffe04befab5c3fa801903741623c20d300 Mon Sep 17 00:00:00 2001 From: andy <594580820@qq.com> Date: Mon, 26 Jan 2026 16:16:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 19 +++++++++++++++ CLAUDE.md | 68 +--------------------------------------------------- sql/init.sql | 58 ++++++++++++++++++++++++++------------------ 3 files changed, 55 insertions(+), 90 deletions(-) diff --git a/.gitignore b/.gitignore index c190bff..8d11d0c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,26 @@ /.idea/ +/backend/target/ +/frontend/node_modules/ +/frontend/node_modules/* +/KEY_GENERATOR.md +/backend/tmpclaude-* +/frontend/tmpclaude-* +/tmpclaude-* /tmpclaude-6f5d-cwd /tmpclaude-006c-cwd /tmpclaude-27a4-cwd /tmpclaude-2246-cwd /tmpclaude-a7d6-cwd /tmpclaude-b78e-cwd +/tmpclaude-2a25-cwd +/tmpclaude-45c6-cwd +/tmpclaude-62fc-cwd +/tmpclaude-65b0-cwd +/tmpclaude-4540-cwd +/tmpclaude-b9f7-cwd +/tmpclaude-b842-cwd +/tmpclaude-c399-cwd +/tmpclaude-d1b4-cwd + + +/backend/target/ diff --git a/CLAUDE.md b/CLAUDE.md index 4488232..2a13e5a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,38 +15,6 @@ - 构建工具:Maven(后端)、pnpm(前端) - 代码规范:ESLint + Prettier(前端)、SpotBugs + Checkstyle(后端) - ## 项目结构 - ``` - by-crm/ - ├── backend/ # Spring Boot 工程 - │ ├── src/main/com/bycrm/ - │ │ ├── controller/ # Web 层,RESTful API - │ │ ├── service/ # 业务层 - │ │ ├── mapper/ # MyBatis DAO - │ │ ├── entity/ # PO / DTO / VO - │ │ ├── config/ # 跨域、MyBatis、Swagger 等配置 - │ │ └── ByCrmApplication.java - │ ├── src/main/resources/ - │ │ ├── mapper/*.xml # SQL 映射 - │ │ └── application.yml # 数据源、MyBatis、JWT、有效期等配置 - │ └── pom.xml - ├── frontend/ # Vue 3 工程 - │ ├── src/ - │ │ ├── api/ # 接口封装(axios) - │ │ ├── views/ # 页面级组件 - │ │ ├── components/ # 通用组件 - │ │ ├── router/ # Vue Router - │ │ ├── stores/ # Pinia 状态 - │ │ ├── types/ # TypeScript 类型 - │ │ └── utils/ # 权限、请求拦截、日期格式化 - │ ├── vite.config.ts - │ └── package.json - ├── sql/ - │ └── init.sql # 客户表、报备表、经销商表、字典表 - └── docs/ - └── api.md # Swagger 导出文档 - ``` - ## 开发命令 ### 后端 ```bash @@ -87,38 +55,4 @@ - 微信小程序端提交报备 - 客户公海池与主动分配 - 报备延期申请流程 - - 报表:经销商活跃度、客户转化率 - - ## API 接口说明 - ### 认证接口 - - POST `/api/auth/login` - 用户登录 - - GET `/api/auth/user/info` - 获取当前用户信息 - - POST `/api/auth/logout` - 用户退出 - - ### 客户接口 - - GET `/api/customer/page` - 分页查询客户 - - GET `/api/customer/{id}` - 获取客户详情 - - POST `/api/customer` - 创建客户 - - PUT `/api/customer/{id}` - 更新客户 - - DELETE `/api/customer/{id}` - 删除客户 - - GET `/api/customer/search` - 搜索客户(用于客户唯一性校验) - - ### 报备接口 - - GET `/api/report/page` - 分页查询报备 - - GET `/api/report/{id}` - 获取报备详情 - - POST `/api/report` - 创建报备 - - PUT `/api/report/{id}/audit` - 审核报备 - - DELETE `/api/report/{id}` - 撤回报备 - - ### 经销商接口(仅管理员) - - GET `/api/dealer/list` - 查询所有经销商 - - GET `/api/dealer/{id}` - 获取经销商详情 - - POST `/api/dealer` - 创建经销商 - - PUT `/api/dealer/{id}` - 更新经销商 - - DELETE `/api/dealer/{id}` - 删除经销商 - - ## 默认测试账号 - - 管理员:`admin` / `admin123` - - 经销商用户1:`user001` / `admin123` - - 经销商用户2:`user002` / `admin123` - - 经销商用户3:`user003` / `admin123` + - 报表:经销商活跃度、客户转化率` diff --git a/sql/init.sql b/sql/init.sql index ad5026e..7bbcde8 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -42,8 +42,8 @@ CREATE TABLE IF NOT EXISTS crm_report ( description VARCHAR(500) COMMENT '报备说明', status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0-待审核 1-已通过 2-已驳回 3-已失效', reject_reason VARCHAR(255) COMMENT '驳回原因', - protect_start_date DATETIME COMMENT '保护期开始时间', - protect_end_date DATETIME COMMENT '保护期结束时间', + protect_start_date DATE DEFAULT NULL COMMENT '保护期开始日期', + protect_end_date DATE DEFAULT NULL COMMENT '保护期结束日期', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_dealer_id (dealer_id), @@ -107,21 +107,9 @@ CREATE TABLE IF NOT EXISTS crm_operation_log ( -- 插入初始数据 --- 插入默认管理员(用户名:admin,密码:admin123,BCrypt加密后的值) +-- 插入默认管理员(用户名:admin,密码:Bycrmadmin123,BCrypt加密后的值) INSERT INTO crm_user (username, password, real_name, dealer_id, role, status) VALUES -('admin', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '系统管理员', NULL, 0, 1); - --- 插入测试经销商 -INSERT INTO crm_dealer (name, code, contact_person, contact_phone, email, status) VALUES -('北京科技有限公司', 'DLR001', '张三', '13800138001', 'zhangsan@example.com', 1), -('上海贸易有限公司', 'DLR002', '李四', '13800138002', 'lisi@example.com', 1), -('深圳实业有限公司', 'DLR003', '王五', '13800138003', 'wangwu@example.com', 1); - --- 插入测试经销商用户 -INSERT INTO crm_user (username, password, real_name, dealer_id, role, status) VALUES -('user001', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '张三', 1, 1, 1), -('user002', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '李四', 2, 1, 1), -('user003', '$2a$10$ZK5LlFqFZ5.LpFJj/YqxJ.X5JD4JlSfHz.FGG8XnP/YjV6LvVJz0q', '王五', 3, 1, 1); +('admin', '$10$kWExNPRis.HIzKDa112UZeq8jzGxI2tLFo0zTNRfxhyzk6MzMKPW6', '系统管理员', NULL, 0, 1); -- 插入数据字典 INSERT INTO crm_dict (dict_code, dict_name, description) VALUES @@ -152,10 +140,34 @@ INSERT INTO crm_dict_item (dict_id, item_label, item_value, sort_order) VALUES (3, '医疗', 'healthcare', 5), (3, '其他', 'other', 6); --- 插入测试客户 -INSERT INTO crm_customer (name, phone, address, industry, status) VALUES -('阿里巴巴集团', '0571-12345678', '浙江省杭州市余杭区', 'internet', 0), -('腾讯科技', '0755-87654321', '广东省深圳市南山区', 'internet', 0), -('华为技术', '0755-12345678', '广东省深圳市龙岗区', 'manufacturing', 0), -('京东集团', '010-66666666', '北京市大兴区', 'retail', 0), -('平安保险', '0755-55555555', '广东省深圳市福田区', 'finance', 0); +-- 系统配置表 +CREATE TABLE IF NOT EXISTS crm_system_config ( + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '配置ID', + config_key VARCHAR(50) NOT NULL UNIQUE COMMENT '配置键', + config_value VARCHAR(255) NOT NULL COMMENT '配置值', + config_label VARCHAR(100) NOT NULL COMMENT '配置名称', + config_type VARCHAR(20) NOT NULL DEFAULT 'string' COMMENT '数据类型:string/integer/boolean', + description VARCHAR(255) COMMENT '配置描述', + is_editable TINYINT NOT NULL DEFAULT 1 COMMENT '是否可编辑:0-否 1-是', + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + INDEX idx_config_key (config_key) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表'; + +-- 插入初始配置数据 +INSERT INTO crm_system_config (config_key, config_value, config_label, config_type, description, is_editable) VALUES +('report.protect.days', '90', '报备保护期天数', 'integer', '报备审核通过后客户的保护天数', 1), +('report.allow.overlap', 'false', '允许重叠报备', 'boolean', '是否允许同一客户被多个经销商报备(测试用,生产环境必须为false)', 1); + +-- 学校表 +CREATE TABLE IF NOT EXISTS crm_school ( + id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '学校ID', + school_code VARCHAR(50) NOT NULL UNIQUE COMMENT '学校标识码', + school_name VARCHAR(200) NOT NULL COMMENT '学校名称', + location VARCHAR(255) COMMENT '所在地(由主管部门和所在地组合而成,如"北京市海淀区")', + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + INDEX idx_school_code (school_code), + INDEX idx_school_name (school_name), + INDEX idx_location (location) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学校表';