# picWeb **Repository Path**: AlexanderBean/pic-web ## Basic Information - **Project Name**: picWeb - **Description**: 图片模型资源上传分享网站 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-17 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 3D模型图片资源分享平台 一个支持PC网页端和微信小程序的3D模型和图片资源分享平台,用户可以上传、下载、分享3D模型和图片资源。 ## 项目特点 - ✅ **多端支持**: PC网页端 + 微信小程序(未来可扩展PC应用和手机应用) - ✅ **用户系统**: 注册、登录、权限管理、微信登录 - ✅ **资源管理**: 3D模型和图片上传、下载、分类、标签、搜索 - ✅ **社交功能**: 点赞、收藏、评论 - ✅ **管理员后台**: 用户管理、资源审核、数据统计 - ✅ **安全可靠**: JWT认证、Spring Security、CORS、文件安全存储 - ✅ **高性能**: Redis缓存、MyBatis-Plus、MinIO对象存储 ## 技术栈 ### 后端 - Spring Boot 3.2.0 - Spring Security + JWT - MyBatis-Plus 3.5.5 - MySQL 8.0 - Redis - MinIO (对象存储) - Maven ### 前端(待开发) - PC端: Vue3 + Element Plus - 小程序端: uni-app ## 项目结构 ``` picWeb/ ├── src/main/java/com/picweb/ │ ├── PicWebApplication.java # 主启动类 │ ├── common/ # 通用类 │ │ └── Result.java # 统一返回结果 │ ├── config/ # 配置类 │ │ ├── JwtProperties.java # JWT配置 │ │ ├── MinioConfig.java # MinIO配置 │ │ ├── SecurityConfig.java # 安全配置 │ │ ├── MybatisPlusConfig.java # MyBatis-Plus配置 │ │ └── MetaObjectHandlerConfig.java │ ├── controller/ # 控制器 │ │ ├── AuthController.java # 认证接口 │ │ ├── ResourceController.java # 资源接口 │ │ ├── CategoryController.java # 分类接口 │ │ └── AdminController.java # 管理员接口 │ ├── dto/ # 数据传输对象 │ │ ├── RegisterDTO.java │ │ └── LoginDTO.java │ ├── entity/ # 实体类 │ │ ├── User.java │ │ ├── Resource.java │ │ └── Category.java │ ├── exception/ # 异常处理 │ │ └── GlobalExceptionHandler.java │ ├── mapper/ # Mapper接口 │ │ ├── UserMapper.java │ │ ├── ResourceMapper.java │ │ └── CategoryMapper.java │ ├── security/ # 安全相关 │ │ └── JwtAuthenticationFilter.java │ ├── service/ # 服务层 │ │ ├── UserService.java │ │ ├── ResourceService.java │ │ ├── FileStorageService.java │ │ └── impl/ │ ├── util/ # 工具类 │ │ └── JwtUtil.java │ └── vo/ # 视图对象 │ └── LoginVO.java ├── src/main/resources/ │ ├── application.yml # 配置文件 │ └── mapper/ # MyBatis XML ├── database/ │ └── schema.sql # 数据库脚本 └── pom.xml # Maven配置 ``` ## 快速开始 ### 环境要求 - JDK 17+ - MySQL 8.0+ - Redis 6.0+ - MinIO - Maven 3.6+ ### 1. 安装依赖服务 #### 安装MySQL ```bash # 创建数据库并导入表结构 mysql -u root -p < database/schema.sql ``` #### 安装Redis ```bash # Windows: 下载 https://github.com/microsoftarchive/redis/releases # Linux: sudo apt-get install redis-server sudo systemctl start redis ``` #### 安装MinIO ```bash # Docker方式运行 docker run -p 9000:9000 -p 9001:9001 \ --name minio \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data/minio:/data \ minio/minio server /data --console-address ":9001" # 访问控制台: http://localhost:9001 # 账号: minioadmin # 密码: minioadmin ``` ### 2. 配置项目 修改 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/picweb?useUnicode=true&characterEncoding=utf8 username: root password: your_password # 修改为你的MySQL密码 data: redis: host: localhost port: 6379 minio: endpoint: http://localhost:9000 access-key: minioadmin secret-key: minioadmin bucket-name: picweb url-prefix: http://localhost:9000/picweb ``` ### 3. 编译运行 ```bash # 编译项目 mvn clean package # 运行项目 java -jar target/picWeb-1.0.0.jar # 或者使用Maven直接运行 mvn spring-boot:run ``` 访问: http://localhost:8080/api ### 4. 测试API #### 用户注册 ```bash curl -X POST http://localhost:8080/api/auth/register \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "123456", "email": "test@example.com", "nickname": "测试用户" }' ``` #### 用户登录 ```bash curl -X POST http://localhost:8080/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "123456" }' ``` #### 获取分类列表 ```bash curl http://localhost:8080/api/categories/list ``` #### 获取资源列表 ```bash curl http://localhost:8080/api/resources/list?pageNum=1&pageSize=12 ``` ## 默认账号 - 管理员账号: admin - 密码: admin123 ## API文档 ### 认证接口 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/wechat-login` - 微信登录 ### 资源接口 - `POST /api/resources/upload` - 上传资源 - `GET /api/resources/list` - 资源列表 - `GET /api/resources/{id}` - 资源详情 - `POST /api/resources/{id}/download` - 下载资源 - `POST /api/resources/{id}/like` - 点赞 - `DELETE /api/resources/{id}/like` - 取消点赞 ### 分类接口 - `GET /api/categories/list` - 分类列表 - `GET /api/categories/tree` - 分类树 ### 管理员接口 - `GET /api/admin/statistics` - 统计数据 - `GET /api/admin/users` - 用户列表 - `POST /api/admin/users/{id}/toggle-status` - 禁用/启用用户 - `GET /api/admin/resources` - 资源列表 - `POST /api/admin/resources/{id}/audit` - 审核资源 - `DELETE /api/admin/resources/{id}` - 删除资源 ## 部署到服务器 ### 1. 准备服务器环境 ```bash # 安装JDK 17 sudo apt-get install openjdk-17-jdk # 安装MySQL sudo apt-get install mysql-server # 安装Redis sudo apt-get install redis-server # 安装Nginx sudo apt-get install nginx ``` ### 2. 配置Nginx ```nginx server { listen 80; server_name your-domain.com; # 前端静态文件 location / { root /var/www/picweb; index index.html; try_files $uri $uri/ /index.html; } # 后端API代理 location /api/ { proxy_pass http://localhost:8080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 3. 使用systemd管理服务 创建 `/etc/systemd/system/picweb.service`: ```ini [Unit] Description=3D Model Resource Sharing Platform After=syslog.target network.target [Service] Type=simple User=root WorkingDirectory=/opt/picweb ExecStart=/usr/bin/java -jar picWeb-1.0.0.jar SuccessExitStatus=143 TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target ``` ```bash # 启动服务 sudo systemctl start picweb sudo systemctl enable picweb # 查看状态 sudo systemctl status picweb ``` ## 开发计划 - [ ] PC前端开发(Vue3 + Element Plus) - [ ] 微信小程序开发(uni-app) - [ ] 评论功能完善 - [ ] 收藏功能完善 - [ ] 下载记录统计 - [ ] 资源推荐算法 - [ ] 付费资源功能 - [ ] PC客户端开发 - [ ] 手机APP开发 - [ ] CDN加速 - [ ] 图片压缩优化 - [ ] 3D模型在线预览 ## 常见问题 ### 1. MinIO连接失败 确保MinIO服务已启动,并且配置文件中的endpoint正确。 ### 2. Redis连接失败 检查Redis服务是否启动,防火墙是否开放6379端口。 ### 3. 文件上传失败 检查MinIO bucket是否创建成功,检查文件大小限制配置。 ## 许可证 MIT License ## 联系方式 如有问题,请提交Issue或联系开发者。 --- **祝使用愉快!** 🎉