1. 项目背景与核心价值
钓鱼这项运动在国内拥有超过1.2亿的爱好者群体,但传统钓鱼活动存在明显的社交壁垒——钓友们往往独自驱车数十公里到达钓点,却难以结识同好。我们团队在实地调研中发现,87%的钓鱼爱好者表示"希望结识同城钓友",但现有社交平台缺乏垂直场景的匹配能力。这正是"同城钓鱼社交APP"要解决的核心痛点。
这个毕业设计项目采用SpringBoot+小程序的组合架构,实现了三大创新点:
- 基于LBS的智能钓友匹配算法,可识别5公里范围内的活跃钓友
- 独创的渔获AI识别系统,支持拍照自动识别鱼种并记录战绩
- 实时天气与水文数据对接,提供钓点适宜度评分
提示:项目完整源码包含14个功能模块,采用Maven多模块架构,数据库使用MySQL 8.0+Redis缓存,特别适合作为计算机专业毕业设计的参考模板。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 后端SpringBoot设计
采用SpringBoot 2.7.11版本构建后端服务,主要技术栈包括:
- 核心框架:Spring MVC + Spring Security OAuth2
- 数据层:MyBatis-Plus 3.5.3 + PageHelper分页
- 缓存:Redis 6.2(存储会话和热点数据)
- 文件存储:MinIO对象存储(渔获图片)
- 消息队列:RabbitMQ(处理异步通知)
数据库设计包含8张核心表:
sql复制CREATE TABLE `t_user` (
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`openid` varchar(64) DEFAULT NULL COMMENT '微信openid',
`fishing_age` int DEFAULT '0' COMMENT '钓龄',
`prefer_fish` varchar(255) DEFAULT NULL COMMENT '偏好鱼种',
`location_point` point DEFAULT NULL COMMENT '地理位置',
PRIMARY KEY (`user_id`),
SPATIAL KEY `idx_location` (`location_point`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.2 小程序端实现
微信小程序采用uniapp框架开发,主要技术亮点:
- 自定义导航栏:通过navigationStyle: "custom"实现沉浸式体验
- 地图组件:使用腾讯地图SDK绘制钓点热力图
- 蓝牙模块:支持连接智能鱼漂设备(需uni-app开发微信小程序实现蓝牙连接)
- 性能优化:使用vant-weapp组件库+分包加载
关键页面路由配置示例:
javascript复制{
"pages": [
"pages/index/index",
"pages/map/map",
"pages/social/social",
"pages/profile/profile"
],
"permission": {
"scope.userLocation": {
"desc": "需要获取您的位置以推荐附近钓友"
}
}
}
3. 核心功能实现细节
3.1 LBS匹配算法
基于MySQL空间函数实现附近钓友查询:
java复制public List<User> findNearbyUsers(Point center, double radius) {
String sql = "SELECT user_id, nickname, ST_Distance_Sphere(location_point, ?) as distance " +
"FROM t_user WHERE ST_Distance_Sphere(location_point, ?) <= ? " +
"ORDER BY distance LIMIT 20";
return jdbcTemplate.query(sql, new Object[]{
center, center, radius
}, (rs, rowNum) -> {
User user = new User();
user.setUserId(rs.getLong("user_id"));
user.setDistance(rs.getDouble("distance"));
return user;
});
}
3.2 渔获识别系统
集成OpenCV 4.5实现鱼类识别:
- 图片预处理:高斯模糊+直方图均衡化
- 特征提取:SIFT算法获取关键点
- 分类模型:使用SVM训练的分类器(训练集包含32种常见淡水鱼)
识别接口示例:
python复制import cv2
def recognize_fish(image_path):
img = cv2.imread(image_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT_create()
kp, des = sift.detectAndCompute(gray, None)
# 加载预训练模型进行预测...
3.3 实时数据对接
从中国天气网获取钓鱼指数:
java复制@Scheduled(cron = "0 0 6 * * ?")
public void updateFishingIndex() {
RestTemplate rest = new RestTemplate();
String url = "https://api.weather.com/...";
WeatherData data = rest.getForObject(url, WeatherData.class);
fishingIndexService.calculateIndex(
data.getTemperature(),
data.getWindSpeed(),
data.getPressure()
);
}
4. 开发中的典型问题与解决方案
4.1 微信登录会话保持
常见问题:SpringSecurity与微信会话机制冲突
解决方案:
- 自定义WechatAuthenticationFilter
- 实现OAuth2的TokenEndpoint
- 使用Redis存储会话信息
关键配置类:
java复制@Configuration
@EnableAuthorizationServer
public class OAuth2Config extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("wechat-app")
.secret(passwordEncoder.encode("secret"))
.authorizedGrantTypes("password", "refresh_token")
.scopes("all");
}
}
4.2 高并发场景优化
压力测试发现的问题:
- 渔获发布接口QPS>50时响应时间超过2s
- 附近的人查询延迟波动大
优化方案:
- 引入Caffeine本地缓存(热点用户数据)
- 对MySQL空间查询建立复合索引
- 使用Hystrix实现熔断降级
缓存配置示例:
yaml复制spring:
cache:
type: caffeine
caffeine:
spec: maximumSize=500,expireAfterWrite=5m
4.3 小程序性能调优
通过真机调试发现的性能瓶颈:
- 首页加载时间>1500ms
- 地图页面内存占用过高
优化措施:
- 图片懒加载+WebP格式转换
- 使用wx.createSelectorQuery优化DOM操作
- 对地图标记点进行聚类处理
关键代码:
javascript复制// 地图点聚类算法
function clusterMarkers(markers, distance) {
let clusters = [];
markers.forEach(marker => {
let found = clusters.some(cluster => {
let dist = getDistance(marker, cluster.center);
if (dist < distance) {
cluster.markers.push(marker);
return true;
}
});
if (!found) clusters.push({
center: marker,
markers: [marker]
});
});
return clusters;
}
5. 毕业设计扩展建议
5.1 技术深化方向
- 集成HanLP实现钓鱼日记的情感分析
- 使用Flowable添加钓友约战流程审批
- 基于Docker-Compose实现一键部署
5.2 业务扩展方向
- 增加渔具二手交易模块
- 开发钓鱼比赛报名系统
- 接入智能硬件数据(如鱼漂传感器)
部署方案对比:
| 方案 | 优点 | 缺点 |
|---|---|---|
| 传统部署 | 成本低 | 扩展性差 |
| Docker | 环境隔离 | 学习曲线陡峭 |
| Kubernetes | 自动扩缩容 | 资源消耗大 |
6. 项目交付内容说明
完整项目包含:
-
后端工程(Maven多模块)
- fishing-core 核心业务模块
- fishing-admin 管理后台
- fishing-generator 代码生成器
-
小程序源码
- 完整页面组件
- 自定义主题配置
- API接口文档
-
毕业设计文档
- 1.2万字论文(含UML图)
- 开题报告模板
- 答辩PPT模板
-
视频教程
- 环境搭建(含IDEA配置)
- 核心模块代码走读
- 常见问题排查演示
重要:数据库脚本包含测试数据,用户初始密码均为加密存储,安全起见建议正式使用时修改加密盐值。项目已通过SonarQube代码质量检测,技术债务率为0.8%(行业平均为3-5%)。
