daShangDao_centerBook/md/README.md
2026-02-28 14:27:33 +08:00

336 lines
11 KiB
Markdown
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.

# 图书中心管理系统 (Book Center Management System)
## 项目简介
图书中心管理系统是一个基于 Go 语言开发的图书信息管理平台,提供图书信息的增删改查、销量管理、图片上传等功能。系统采用 MySQL + Redis 双存储架构,支持高并发访问和数据缓存。
## 技术栈
- **后端框架**: Gin (Go Web Framework)
- **数据库**: MySQL 8.0+
- **缓存**: Redis 6.0+
- **文件处理**: Excelize (Excel处理)
- **WebSocket**: Gorilla WebSocket
- **其他**: CORS支持、JWT认证、分页查询
## 系统架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端应用 │ │ Gin API服务 │ │ MySQL数据库 │
│ │◄──►│ │◄──►│ │
│ Web/Mobile │ │ 图书中心控制器 │ │ book_center │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ Redis缓存 │
│ │
│ 数据缓存/会话 │
└─────────────────┘
```
## 主要功能
### 📚 图书管理
- 图书信息查询(条件查询、随机查询)
- 图书信息新增和更新
- 图书封面图片管理
- ISBN验证和格式检查
### 📊 销量管理
- 多维度销量统计7天、15天、30天等
- 销量数据修改和更新
- 年度销量统计
### 🏷️ 违规管理
- 批量设置违规标记
- 根据ID或ISBN批量修改违规信息
- 违规数据统计
### 🖼️ 图片管理
- 图书封面上传
- 图片URL管理
- 批量图片更新
### 📈 数据导出
- Excel格式数据导出
- ISBN批量导出
- 自定义查询结果导出
## 快速开始
### 环境要求
- Go 1.19+
- MySQL 8.0+
- Redis 6.0+
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd book-center-system
```
2. **安装依赖**
```bash
go mod tidy
```
3. **配置数据库**
```sql
-- 创建数据库
CREATE DATABASE book_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 导入数据表结构(见 database/schema.sql
```
4. **配置Redis**
```bash
# 启动Redis服务
redis-server
```
5. **修改配置**
```go
// 在 main.go 中修改数据库连接信息
targetDSN := "username:password@tcp(host:port)/book_center?charset=utf8mb4&parseTime=True&loc=Local"
// 修改Redis连接信息
bookBaseRedisurl = "redis-host:port"
```
6. **运行项目**
```bash
go run main.go
```
服务将在 `http://localhost:9009` 启动
## 配置说明
### 数据库配置
```go
// 生产环境数据库
targetDSN := "book_center:password@tcp(175.27.224.66:3306)/book_center?charset=utf8mb4&parseTime=True&loc=Local"
// 连接池配置
db.SetMaxOpenConns(150) // 最大打开连接数
db.SetMaxIdleConns(50) // 最大空闲连接数
db.SetConnMaxLifetime(30 * time.Minute) // 连接最大生存时间
```
### Redis配置
```go
rdb := redis.NewClient(&redis.Options{
Addr: "119.45.181.25:6666",
Password: "long6166",
})
```
### CORS配置
```go
r.Use(cors.New(cors.Config{
AllowOrigins: []string{
"http://localhost:82",
"https://test.centerbook.buzhiyushu.cn"
},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
AllowCredentials: true,
MaxAge: 12 * time.Hour,
}))
```
## 项目结构
```
book-center-system/
├── main.go # 主程序入口
├── README.md # 项目说明文档
├── API.md # API接口文档
├── USAGE.md # 使用说明文档
├── go.mod # Go模块依赖
├── go.sum # 依赖校验文件
├── database/ # 数据库相关
│ └── schema.sql # 数据表结构
├── docs/ # 文档目录
│ ├── images/ # 文档图片
│ └── examples/ # 示例代码
└── logs/ # 日志文件
```
## 部署说明
### Docker部署
```dockerfile
FROM golang:1.19-alpine AS builder
WORKDIR /app
COPY .. .
RUN go mod tidy && go build -o book-center main.go
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/book-center .
EXPOSE 9009
CMD ["./book-center"]
```
### 系统服务部署
```bash
# 创建系统服务文件
sudo vim /etc/systemd/system/book-center.service
[Unit]
Description=Book Center Management System
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/book-center
ExecStart=/opt/book-center/book-center
Restart=always
[Install]
WantedBy=multi-user.target
# 启动服务
sudo systemctl enable book-center
sudo systemctl start book-center
```
## 监控和日志
### 健康检查
- `GET /health` - 综合健康检查
- `GET /ready` - 服务就绪检查
### 日志级别
系统使用标准的Go log包支持以下日志级别
- INFO: 一般信息
- WARN: 警告信息
- ERROR: 错误信息
### 性能监控
- 数据库连接池监控
- Redis连接状态监控
- API响应时间统计
- 内存使用情况
## 贡献指南
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request
## 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 联系方式
- 项目维护者: [Your Name]
- 邮箱: [your.email@example.com]
- 项目地址: [GitHub Repository URL]
## 更新日志
### v1.0.0 (2025-08-06)
- 初始版本发布
- 基础图书管理功能
- 销量统计功能
- 违规管理功能
- 图片上传功能
- Excel导出功能
表结构
CREATE TABLE `book_center` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`category` VARCHAR (40) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '分类',
`book_name` VARCHAR (400) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '书名',
`book_pic` VARCHAR (400) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '书图片',
`book_pic_s` JSON DEFAULT NULL COMMENT '官图json',
`isbn` VARCHAR (30) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'ISBN',
`isbn_hash` BIGINT UNSIGNED NOT NULL COMMENT 'ISBN哈希用于分区',
`author` VARCHAR (400) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '作者',
`editor` VARCHAR (30) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '编辑',
`binding_layout` VARCHAR (30) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '装帧',
`publisher` VARCHAR (200) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '出版社',
`edition` VARCHAR (50) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '版次',
`format` VARCHAR (50) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '开本',
`languages` VARCHAR (50) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '语种',
`publication_time` BIGINT DEFAULT NULL COMMENT '出版时间(时间戳)',
`print_time` BIGINT DEFAULT NULL COMMENT '印刷时间(时间戳)',
`paper` VARCHAR (500) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '纸张',
`pages` INT UNSIGNED DEFAULT NULL COMMENT '页数',
`wordage` VARCHAR (500) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '字数',
`fix_price` INT UNSIGNED DEFAULT NULL COMMENT '定价(单位:分)',
`content` VARCHAR (500) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '内容',
`remark` VARCHAR (500) CHARACTER
SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '' COMMENT '备注',
`vio_book` TINYINT (1) NOT NULL DEFAULT '0' COMMENT '违规书号 (0-正常 1-违规)',
`book_set` TINYINT (1) NOT NULL DEFAULT '0' COMMENT '套装书 (0-否 1-是)',
`onenum_mbooks` TINYINT UNSIGNED DEFAULT NULL COMMENT '一号多书 (0-正常 1-违规)',
`ill_publisher` TINYINT (1) NOT NULL DEFAULT '0' COMMENT '违规出版社 (0-正常 1-违规)',
`ill_author` TINYINT (1) NOT NULL DEFAULT '0' COMMENT '违规作者(0-正常 1-违规)',
`day_sale_7` INT NOT NULL DEFAULT '0' COMMENT '7天内销量',
`day_sale_15` INT NOT NULL DEFAULT '0' COMMENT '15天内销量',
`day_sale_30` INT NOT NULL DEFAULT '0' COMMENT '30天内销量',
`day_sale_60` INT NOT NULL DEFAULT '0' COMMENT '60天内销量',
`day_sale_90` INT NOT NULL DEFAULT '0' COMMENT '90天内销量',
`day_sale_180` INT NOT NULL DEFAULT '0' COMMENT '180天内销量',
`day_sale_365` INT NOT NULL DEFAULT '0' COMMENT '365天内销量',
`this_year_sale` INT NOT NULL DEFAULT '0' COMMENT '今年销量',
`last_year_sale` INT NOT NULL DEFAULT '0' COMMENT '去年销量',
`total_sale` INT NOT NULL DEFAULT '0' COMMENT '总销量',
`sold_out_times` JSON DEFAULT NULL COMMENT '已售时间记录(JSON数组格式)',
`shipment_cycle` INT DEFAULT NULL COMMENT '出货周期(天)',
`publiction_times` BIGINT DEFAULT NULL COMMENT '出版时间(时间戳)',
`cat_id` BIGINT DEFAULT NULL COMMENT '叶子类目id',
`buy_counts` BIGINT UNSIGNED DEFAULT NULL COMMENT '已售数量',
`sell_counts` BIGINT UNSIGNED DEFAULT NULL COMMENT '在售数量',
`del_flag` TINYINT (1) NOT NULL DEFAULT '0' COMMENT '删除标志0-存在 1-删除)',
`create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
`create_by` BIGINT DEFAULT NULL COMMENT '创建者',
`create_time` BIGINT NOT NULL COMMENT '创建时间(时间戳)',
`update_by` BIGINT DEFAULT NULL COMMENT '更新者',
`update_time` BIGINT (20) UNSIGNED ZEROFILL NOT NULL COMMENT '更新时间(时间戳)',
`libri_scolastici` TINYINT (1) DEFAULT NULL COMMENT '大学教材',
`libriScolastici` TINYINT (1) DEFAULT NULL COMMENT '大学教材',
`book_pic_new` JSON DEFAULT NULL COMMENT '书图片',
PRIMARY KEY (`id`, `isbn_hash`, `isbn`),
UNIQUE KEY `uk_isbn` (`isbn`, `isbn_hash`),
KEY `idx_book_name` (`book_name` (100)) USING BTREE,
KEY `idx_publisher` (`publisher` (50)) USING BTREE,
KEY `idx_author` (`author` (50)) USING BTREE,
KEY `idx_total_sale` (`total_sale`) USING BTREE,
KEY `idx_day_sale_7` (`day_sale_7`) USING BTREE,
KEY `idx_day_sale_30` (`day_sale_30`) USING BTREE,
KEY `idx_day_sale_365` (`day_sale_365`) USING BTREE,
KEY `idx_this_year_sale` (`this_year_sale`) USING BTREE,
KEY `idx_publication_times` (`publiction_times`) USING BTREE,
KEY `idx_book_pic` (`book_pic`) USING BTREE,
KEY `idx_id` (`id`) USING BTREE,
KEY `idx_core_search` (`day_sale_7`, `vio_book`, `book_set`, `onenum_mbooks`, `ill_publisher`, `ill_author`) USING BTREE,
KEY `idx_category` (`category`) USING BTREE,
KEY `idx_counts` (`buy_counts`, `sell_counts`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 3780989 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '图书基础信息表(哈希分区 by ISBN hash' /*!50100 PARTITION BY HASH (`isbn_hash`) PARTITIONS 10 */;