daShangDao_centerBook/md
2026-06-15 13:29:51 +08:00
..
API.md 套装书修改逻辑 2026-06-15 13:29:51 +08:00
PROJECT_GUIDE.md 初始化 2026-02-28 14:27:33 +08:00
README.md 初始化 2026-02-28 14:27:33 +08:00
sql_monitor_usage.md 初始化 2026-02-28 14:27:33 +08:00

图书中心管理系统 (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. 克隆项目
git clone <repository-url>
cd book-center-system
  1. 安装依赖
go mod tidy
  1. 配置数据库
-- 创建数据库
CREATE DATABASE book_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 导入数据表结构(见 database/schema.sql
  1. 配置Redis
# 启动Redis服务
redis-server
  1. 修改配置
// 在 main.go 中修改数据库连接信息
targetDSN := "username:password@tcp(host:port)/book_center?charset=utf8mb4&parseTime=True&loc=Local"

// 修改Redis连接信息
bookBaseRedisurl = "redis-host:port"
  1. 运行项目
go run main.go

服务将在 http://localhost:9009 启动

配置说明

数据库配置

// 生产环境数据库
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配置

rdb := redis.NewClient(&redis.Options{
    Addr:     "119.45.181.25:6666",
    Password: "long6166",
})

CORS配置

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部署

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"]

系统服务部署

# 创建系统服务文件
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 文件了解详情

联系方式

更新日志

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 */;