# tasklink **Repository Path**: yifeng_6/tasklink ## Basic Information - **Project Name**: tasklink - **Description**: 图灵院逸风小组第二次项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-01-26 - **Last Updated**: 2026-02-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TaskLink TaskLink 是一个基于互联网的任务发布与接单平台,为有技能需求的发布者和有技能提供能力的接单者搭建安全、高效的交易桥梁。平台通过资金托管、信誉评分、交付审核等机制,保障双方权益,降低交易风险。 ## 项目特性 - 完善的用户体系:支持多种登录方式,信誉评分系统,账号安全管理 - 灵活的任务管理:任务分类、发布、接单、交付、审核全流程管理 - 安全的资金托管:自动冻结、结算、退款机制,保障交易安全 - 实时通讯系统:基于 WebSocket 的即时消息推送,支持私信和系统通知 - 异步任务处理:基于 RocketMQ 的消息队列,处理任务审核等异步业务 - 文件存储方案:集成阿里云 OSS,支持 STS 临时授权上传 - 响应式设计:支持移动端、平板、PC 端多终端访问 - 完善的接口文档:集成 Swagger,提供可视化接口测试 ## 技术栈 ### 后端技术 - Java 17 - Spring Boot 3.5.10 - MyBatis Plus 3.5.9(持久层框架) - MySQL 8.0+(关系型数据库) - Redis 7.x(缓存与会话管理) - JWT 0.12.6(身份认证) - Spring Security(密码加密) - WebSocket(实时通讯) - RocketMQ 5.3.0(消息队列) - 阿里云 OSS(对象存储) - SpringDoc OpenAPI 2.7.0(接口文档) - Hutool 5.8.40(工具类库) - Fastjson2 2.0.54(JSON 处理) - Lombok(代码简化) - Maven 3.8+(项目构建) ### 前端技术 - Vue 3.5.26(渐进式框架) - TypeScript 5.9.3(类型安全) - Vite 7.3.1(构建工具) - Pinia 3.0.4(状态管理) - Vue Router 4.6.4(路由管理) - Element Plus 2.9.1(UI 组件库) - Axios(HTTP 客户端) - 阿里云 OSS SDK(文件上传) ## 系统架构 ### 架构设计 项目采用前后端分离架构,后端提供 RESTful API 接口,前端通过 HTTP 请求与后端交互。 - 表现层:Vue 3 + TypeScript + Element Plus - 应用层:Spring Boot + Spring MVC - 业务层:Service 层处理业务逻辑 - 持久层:MyBatis Plus + MySQL - 缓存层:Redis(用户会话、热点数据) - 消息队列:RocketMQ(异步任务处理) - 文件存储:阿里云 OSS - 实时通讯:WebSocket ### 核心模块 - 用户模块:注册、登录、个人资料、信誉评分 - 任务模块:发布、接单、交付、审核、状态流转 - 资金模块:钱包、充值、提现、托管、结算 - 消息模块:私信、通讯录、系统通知 - 文件模块:OSS 上传、STS 临时授权 - 认证模块:JWT 鉴权、拦截器 ## 核心功能 ### 用户管理 - 用户注册与登录(支持用户名/邮箱/手机号) - 个人资料管理(昵称、头像、性别、生日、技能标签等) - 信誉评分系统(初始 100 分,动态调整) - 账号安全管理(修改密码、账号状态) ### 任务管理 - 任务分类管理(平面设计、软件开发、文案撰写等) - 任务发布与编辑(标题、描述、价格、时间) - 任务广场(筛选、搜索、分页展示) - 任务详情展示(发布者信息、任务详情) - 任务接单(保证金机制) - 任务交付与审核(附件上传、审核通过/驳回) - 任务状态流转(待接单→进行中→待审核→已完成/已取消) ### 资金管理 - 用户钱包(可用余额、冻结余额) - 充值与提现 - 资金托管机制(发布任务冻结金额) - 保证金机制(接单冻结 20% 保证金) - 自动结算系统(审核通过自动结算) - 交易流水记录(充值、提现、托管、结算等) - 退款处理(扣除保证金和手续费) ### 消息系统 - 通讯录管理(添加联系人、设置备注) - 一对一私信(文本、图片、文件) - 系统通知(任务状态、资金变动、审核结果) - 消息已读/未读状态 - WebSocket 实时推送 ## 项目结构 ``` TaskLink/ ├── backend/ # 后端项目 │ ├── src/main/java/com/yf/tasklink/ │ │ ├── aspect/ # AOP 切面(日志记录) │ │ ├── common/ # 公共模块 │ │ │ ├── annotation/ # 自定义注解 │ │ │ ├── enums/ # 枚举类 │ │ │ ├── exception/ # 异常处理 │ │ │ ├── result/ # 统一响应结果 │ │ │ └── utils/ # 工具类 │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器层 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── interceptor/ # 拦截器(JWT 鉴权) │ │ ├── mapper/ # MyBatis Mapper │ │ ├── mq/ # 消息队列 │ │ │ ├── consumer/ # 消费者 │ │ │ └── producer/ # 生产者 │ │ ├── service/ # 业务层 │ │ │ └── impl/ # 业务实现 │ │ ├── vo/ # 视图对象 │ │ └── webSocket/ # WebSocket 服务 │ ├── src/main/resources/ │ │ ├── mapper/ # MyBatis XML 映射文件 │ │ ├── static/ # 静态资源(前端构建产物) │ │ ├── application.yaml # 应用配置 │ │ └── new_db.sql # 数据库初始化脚本 │ └── pom.xml # Maven 配置 ├── frontend/ # 前端项目 │ ├── src/ │ │ ├── api/ # API 接口封装 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 公共组件 │ │ ├── composables/ # 组合式函数 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── utils/ # 工具函数 │ │ ├── views/ # 页面组件 │ │ ├── App.vue # 根组件 │ │ └── main.ts # 入口文件 │ ├── .env.development # 开发环境配置 │ ├── .env.production # 生产环境配置 │ ├── package.json # 依赖配置 │ └── vite.config.ts # Vite 配置 ├── doc/ # 项目文档 │ ├── tasklink.sql # 数据库脚本 │ ├── 接口文档.md # 接口文档 │ ├── 数据库设计.md # 数据库设计文档 │ ├── 需求文档.md # 需求文档 │ └── 页面设计.md # 页面设计文档 └── README.md # 项目说明 ``` ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 20.19.0+ 或 22.12.0+ - MySQL 8.0+ - Redis 7.x - Maven 3.8+ - RocketMQ 5.x ### 数据库配置 1. 创建数据库 ```powershell # 连接 MySQL mysql -u root -p # 创建数据库 CREATE DATABASE tasklink DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 导入初始化脚本 ```powershell # 方式一:使用 MySQL 命令行导入 mysql -u root -p tasklink < doc/tasklink.sql # 方式二:使用 PowerShell 重定向 Get-Content doc/tasklink.sql | mysql -u root -p tasklink ``` 3. 修改后端配置文件 编辑 `backend/src/main/resources/application.yaml`,配置数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/tasklink?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true username: root password: your_password ``` ### Redis 配置 (可选) 确保 Redis 服务已启动,修改配置文件中的 Redis 连接信息: ```yaml spring: data: redis: host: localhost port: 6379 password: your_redis_password # 如无密码可留空 database: 0 ``` 启动 Redis 服务(Windows): ```powershell # 启动 Redis 服务 redis-server # 或使用 Windows 服务方式启动 net start Redis ``` ### RocketMQ 配置 安装并启动 RocketMQ 1. 下载 RocketMQ:https://rocketmq.apache.org/download/ 2. 启动 NameServer 和 Broker ```powershell # 启动 NameServer cd rocketmq-all-5.x.x-bin-release .\bin\mqnamesrv.cmd # 启动 Broker(新开一个终端) .\bin\mqbroker.cmd -n localhost:9876 ``` 3. 修改配置文件 ```yaml rocketmq: name-server: localhost:9876 producer: group: tasklink-producer-group ``` ### 阿里云 OSS 配置 如需使用文件上传功能,需要配置阿里云 OSS。 1. 在阿里云控制台创建 OSS Bucket 2. 创建 RAM 角色并授予 OSS 权限 3. 配置环境变量或修改配置文件 ```yaml tasklink: oss: access-key-id: ${ALIYUN_ACCESS_KEY_ID} access-key-secret: ${ALIYUN_ACCESS_KEY_SECRET} endpoint: oss-cn-beijing.aliyuncs.com bucket-name: tasklink role-arn: acs:ram::your-account-id:role/oss-upload-role ``` 或设置环境变量: ```powershell $env:ALIYUN_ACCESS_KEY_ID="your-access-key-id" $env:ALIYUN_ACCESS_KEY_SECRET="your-access-key-secret" $env:ALIYUN_OSS_ENDPOINT="oss-cn-beijing.aliyuncs.com" $env:ALIYUN_OSS_BUCKET_NAME="tasklink" $env:ALIYUN_RAM_ROLE_ARN="acs:ram::your-account-id:role/oss-upload-role" ``` ### 后端启动 ```powershell # 进入后端目录 cd backend # 清理并安装依赖 mvn clean install # 启动后端服务 mvn spring-boot:run ``` 后端服务将在 `http://localhost:8080` 启动。 访问 Swagger 接口文档:`http://localhost:8080/swagger-ui.html` ### 前端启动 ```powershell # 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端服务将在 `http://localhost:5173` 启动。 ### 访问应用 打开浏览器访问:`http://localhost:5173` ## 生产环境部署 ### 后端部署 1. 打包项目 ```powershell cd backend mvn clean package -DskipTests ``` 2. 运行 JAR 包 ```powershell # 直接运行 java -jar target/tasklink-0.0.1-SNAPSHOT.jar # 后台运行(使用 nohup 或 Windows 服务) Start-Process java -ArgumentList "-jar","target/tasklink-0.0.1-SNAPSHOT.jar" -NoNewWindow -RedirectStandardOutput "logs/output.log" -RedirectStandardError "logs/error.log" ``` 3. 配置生产环境参数 ```powershell # 使用环境变量覆盖配置 $env:MYSQL_PASSWORD="production_password" $env:REDIS_PASSWORD="production_password" java -jar target/tasklink-0.0.1-SNAPSHOT.jar ``` ### 前端部署 1. 构建生产版本 ```powershell cd frontend npm run build ``` 构建产物位于 `frontend/dist` 目录。 2. 部署到 Web 服务器 将 `dist` 目录下的文件部署到 Nginx、Apache 或其他 Web 服务器。 Nginx 配置示例: ```nginx server { listen 80; server_name your-domain.com; root /path/to/frontend/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /ws { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` ### 前后端一体化部署 将前端构建产物复制到后端静态资源目录: ```powershell # 构建前端 cd frontend npm run build # 复制到后端静态资源目录 Copy-Item -Path dist/* -Destination ../backend/src/main/resources/static/ -Recurse -Force # 重新打包后端 cd ../backend mvn clean package -DskipTests ``` 此时访问 `http://localhost:8080` 即可访问完整应用。 ## 开发规范 ### 代码规范 - 后端遵循阿里巴巴 Java 开发手册 - 前端遵循 Vue 官方风格指南 - 使用 Lombok 简化 Java 代码 - 使用 TypeScript 提供类型安全 - 统一使用 UTF-8 编码 - 代码缩进使用 4 个空格(Java)或 2 个空格(Vue/TypeScript) ### 注释规范 - 类和方法必须添加 Javadoc 注释 - 复杂业务逻辑必须添加行内注释 - 接口必须添加 Swagger 注解 - 前端组件必须添加组件说明注释 ### Git 提交规范 ``` feat: 新功能 fix: 修复 Bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 perf: 性能优化 test: 测试相关 chore: 构建/工具链相关 ``` 示例: ``` feat: 添加任务审核功能 fix: 修复钱包余额计算错误 docs: 更新 README 部署说明 ``` ### 分支管理 - `main`:主分支,用于生产环境 - `develop`:开发分支,用于日常开发 - `feature/*`:功能分支,开发新功能 - `hotfix/*`:热修复分支,紧急修复生产问题 ## 常见问题 ### 后端启动失败 1. 检查 JDK 版本是否为 17+ ```powershell java -version ``` 2. 检查 MySQL 、 Redis 、RocketMQ是否已启动 ```powershell # 检查 MySQL 服务 Get-Service | Where-Object {$_.Name -like "*mysql*"} # 检查 Redis 服务 Get-Service | Where-Object {$_.Name -like "*redis*"} ``` 3. 检查配置文件中的数据库连接信息是否正确 ### 前端启动失败 1. 检查 Node.js 版本是否符合要求 ```powershell node -v ``` 2. 清除缓存并重新安装依赖 ```powershell Remove-Item -Path node_modules -Recurse -Force Remove-Item -Path package-lock.json -Force npm install ``` ### 跨域问题 开发环境下,前端通过 Vite 代理解决跨域问题。如遇到跨域错误,检查 `vite.config.ts` 中的代理配置。 生产环境下,通过 Nginx 反向代理解决跨域问题。 ### WebSocket 连接失败 1. 检查后端 WebSocket 配置是否正确 2. 检查防火墙是否阻止了 WebSocket 连接 3. 检查前端 WebSocket URL 配置是否正确(`.env.development` 或 `.env.production`) ### 文件上传失败 1. 检查阿里云 OSS 配置是否正确 2. 检查 RAM 角色权限是否配置正确 3. 检查文件大小是否超过限制(默认 10MB) ## 相关文档 - [需求文档](doc/需求文档.md) - [接口文档](doc/接口文档.md) - [数据库设计](doc/数据库设计.md) - [页面设计](doc/页面设计.md) - [Swagger 接口文档](http://localhost:8080/swagger-ui.html)(需启动后端服务) ## 许可证 逸风组 All Rights Reserved