初始化项目
This commit is contained in:
parent
ea8f8390da
commit
95ed45ffe0
19
.gitignore
vendored
19
.gitignore
vendored
|
|
@ -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/
|
||||
|
|
|
|||
68
CLAUDE.md
68
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`
|
||||
- 报表:经销商活跃度、客户转化率`
|
||||
|
|
|
|||
58
sql/init.sql
58
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='学校表';
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user