# egg-server-cms **Repository Path**: web_design_of_web_frontend/egg-server-cms ## Basic Information - **Project Name**: egg-server-cms - **Description**: 用egg.js开发的极简CMS服务 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-07 - **Last Updated**: 2025-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文章管理系统 ## 项目介绍 这是一个基于Egg.js和Sequelize的文章管理系统,提供用户注册、登录以及文章的增删改查功能。 ## 安装运行 ### 环境要求 - Node.js >= 18.0.0 - MySQL ### 安装步骤 1. 克隆项目 ```bash git clone <项目地址> cd egg-server-cms ``` 2. 安装依赖 ```bash npm install ``` 3. 数据库配置 修改 `config/config.default.js` 文件中的数据库连接信息: ```javascript exports.sequelize = { dialect: 'mysql', host: '127.0.0.1', // 数据库主机 port: 3306, // 数据库端口 database: 'mytest', // 数据库名 username: 'root', // 数据库用户名 password: '.......', // 数据库密码 // ...其他配置 }; ``` 4. 数据库迁移 ```bash # 初始化数据库(如果需要) npx sequelize-cli db:create # 运行迁移文件 npx sequelize-cli db:migrate ``` ### 本地运行 ```bash npm run dev ``` 项目将运行在 http://localhost:7001 ### 生产部署 1. 构建项目 ```bash # 如有需要 npm run build ``` 2. 启动服务 ```bash npm start ``` 3. 停止服务 ```bash npm stop ``` ## API文档 ### 用户接口 #### 注册 - **URL**: `/api/user/register` - **方法**: `POST` - **参数**: - `name`: 用户名 (必填) - `password`: 密码 (必填) - `email`: 邮箱 (可选) - `phone`: 手机号 (可选) - **返回示例**: ```json { "code": 200, "message": "注册成功", "data": { "id": 1, "name": "testuser", "email": "test@example.com", "phone": "13800138000" } } ``` #### 登录 - **URL**: `/api/login` - **方法**: `POST` - **参数**: - `username`: 用户名 (必填) - `password`: 密码 (必填) - **返回示例**: ```json { "code": 200, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "username": "testuser", "role": 0 } } ``` #### 修改密码 - **URL**: `/api/user/change-password` - **方法**: `POST` - **权限**: 需要登录 (在请求头中添加 `Authorization: Bearer {token}`) - **参数**: - `oldPassword`: 旧密码 (必填) - `newPassword`: 新密码 (必填,长度不能少于6位) - **返回示例**: ```json { "code": 200, "message": "密码修改成功" } ``` 失败示例 (旧密码错误): ```json { "code": 401, "message": "旧密码错误" } ``` ### 文章接口 #### 创建文章 - **URL**: `/api/articles` - **方法**: `POST` - **权限**: 需要登录 (在请求头中添加 `Authorization: Bearer {token}`) - **参数**: - `title`: 文章标题 (必填) - `summary`: 文章简介 (可选) - `content`: 文章内容 (必填) - `cover_image`: 封面图片URL (可选) - `status`: 文章状态 (0-草稿,1-已发布,可选) - **返回示例**: ```json { "code": 200, "message": "创建成功", "data": { "id": 1, "title": "测试文章", "summary": "这是一篇测试文章", "content": "测试内容...", "cover_image": "https://example.com/image.jpg", "user_id": 1, "status": 1, "created_at": "2025-08-05T06:21:00.000Z", "updated_at": "2025-08-05T06:21:00.000Z" } } ``` #### 删除文章 - **URL**: `/api/articles/:id/delete` - **方法**: `POST` - **权限**: 需要登录且为文章作者 - **参数**: - `id`: 文章ID (在URL中) - **返回示例**: ```json { "code": 200, "message": "删除成功" } ``` #### 更新文章 - **URL**: `/api/articles/:id/update` - **方法**: `POST` - **权限**: 需要登录且为文章作者 - **参数**: - `id`: 文章ID (在URL中) - `title`: 文章标题 (可选) - `summary`: 文章简介 (可选) - `content`: 文章内容 (可选) - `cover_image`: 封面图片URL (可选) - `status`: 文章状态 (0-草稿,1-已发布,可选) - **返回示例**: ```json { "code": 200, "message": "更新成功", "data": { "id": 1, "title": "更新后的文章标题", "summary": "更新后的简介", "content": "更新后的内容...", "cover_image": "https://example.com/new-image.jpg", "user_id": 1, "status": 1, "created_at": "2025-08-05T06:21:00.000Z", "updated_at": "2025-08-05T07:30:00.000Z" } } ``` #### 获取单个文章 - **URL**: `/api/articles/:id` - **方法**: `GET` - **参数**: - `id`: 文章ID (在URL中) - **返回示例**: ```json { "code": 200, "message": "success", "data": { "id": 1, "title": "测试文章", "summary": "这是一篇测试文章", "content": "测试内容...", "cover_image": "https://example.com/image.jpg", "user_id": 1, "status": 1, "created_at": "2025-08-05T06:21:00.000Z", "updated_at": "2025-08-05T06:21:00.000Z", "user": { "id": 1, "name": "testuser", "email": "test@example.com" } } } ``` #### 获取文章列表 - **URL**: `/articles` - **方法**: `GET` - **参数**: - `page`: 页码 (默认1) - `pageSize`: 每页数量 (默认10) - `status`: 文章状态 (0-草稿,1-已发布,可选) - `title`: 文章标题 (模糊查询,可选) - **返回示例**: ```json { "code": 200, "message": "success", "data": { "total": 10, "list": [ { "id": 1, "title": "测试文章", "summary": "这是一篇测试文章", "cover_image": "https://example.com/image.jpg", "user_id": 1, "status": 1, "created_at": "2025-08-05T06:21:00.000Z", "updated_at": "2025-08-05T06:21:00.000Z", "user": { "id": 1, "name": "testuser", "email": "test@example.com" } }, // 更多文章... ], "page": 1, "pageSize": 10, "totalPages": 1 } } ``` ## 项目结构 ``` egg-server/ ├── app/ │ ├── controller/ │ │ ├── home.js │ │ ├── user.js │ │ └── article.js │ ├── service/ │ │ ├── home.js │ │ ├── user.js │ │ └── article.js │ ├── model/ │ │ ├── user.js │ │ └── article.js │ ├── router.js │ └── utils/ │ └── response.js ├── database/ │ ├── migrations/ │ │ ├── 20250805062032-init-users.js │ │ └── 20250805062100-init-article.js │ ├── config.json │ └── .sequelizerc ├── .sequelizerc ├── package.json └── README.md ``` ## QuickStart ### Development ```bash npm i npm run dev open http://localhost:7001/api/ ``` ### Deploy ```bash npm start npm stop ``` ### npm scripts - Use `npm run lint` to check code style. - Use `npm test` to run unit test. [egg]: https://eggjs.org