省钱兄 JAVA 低空经济无人机飞手接单平台系统源码
✅ 支持 小程序 + 公众号 + APP + H5 全端覆盖
开发商:西安省钱兄网络科技有限公司
系统整体架构
层级技术选型后端框架Spring Boot 2.7.x + MyBatis-Plus 3.5.0数据库MySQL 8.0 + Redis 6.2(缓存/GEO地理查询)用户端UniApp 3.0(Vue3语法)→ 一套代码编译 小程序/公众号/APP/H5管理后台Vue3 + ElementPlus + ECharts 数据看板消息队列(订单状态异步通知/削峰)实时通信WebSocket + MQTT(订单状态实时推送)地图服务高德地图 JSAPI(LBS定位/路径规划/地理围栏)部署JDK 17 + Docker + Nginx + K8s支付微信支付 + 支付宝(分账/提现)
核心功能模块1️⃣ 双角色体系(飞手 + 客户)javahttps:// JWT 双角色认证@PostMapping("/login")public Result<LoginVO> login(@Re LoginDTO dto) { User user = userService.login(dto); String token = JwtUtil.generateToken(user.getId(), user.getRole()); https:// role = "pilot" 飞手 / "user" 客户 return Result.success(new LoginVO(token, user.getRole()));}
角色核心功能 飞手端飞手认证/资质上传、接单/抢单/议价、飞行记录上传、收益提现、信用评分 客户端需求发布(航拍/巡检/测绘等)、飞手浏览/筛选、在线下单、订单追踪、评价
2️⃣ 智能订单匹配(核心算法)java/** * 基于地理位置 + 技能标签的智能匹配 * Redis GEO 实现5公里内飞手快速检索 */public List<Order> matchOrders(DronePilot pilot) { https:// Haversine 算法计算距离 + 技能权重评分 return orderRepository.findNearbyOrders( pilot.getLocation(), https:// 飞手经纬度 pilot.getSkills(), https:// 技能标签: 航拍/测绘/农业/巡检 PageRe(0, 20) );}javascripthttps:// 前端匹配评分算法function matchOrder(pilotPos, orderPos, radius = 5000) { const distance = calculateDistance(pilotPos, orderPos); return distance <= radius ? 1 - (distance / radius) : 0; https:// 距离越近分数越高,权重可叠加技能匹配度}3️⃣ 订单全生命周期管理s TABLE `orders` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT, `order_no` VARCHAR(64) UNIQUE NOT NULL, `client_id` BIGINT NOT NULL, -- 客户ID `pilot_id` BIGINT DEFAULT NULL, -- 飞手ID `title` VARCHAR(100) NOT NULL, -- 订单标题 `flight_type` TINYINT COMMENT '1航拍 2巡检 3测绘 4农业', `price` DECIMAL(10,2) NOT NULL, `status` TINYINT DEFAULT 0, -- 0待接单 1进行中 2已完成 3异常 `location` POINT NOT NULL, -- 地理位置(SPATIAL KEY) `start_time` DATETIME NOT NULL, `end_time` DATETIME DEFAULT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, SPATIAL KEY `idx_location` (`location`) -- 地理索引,5km内快速检索);
状态流转说明0-待接单订单发布 → 推送至符合条件的飞手1-进行中飞手接单 → 实时追踪飞行进度2-已完成飞行完成 → 自动触发结算/评价3-异常终止设备故障/天气突变 → 降级策略+黑名单
4️⃣ 飞手接单/抢单核心接口java@RestController @Re("/api/orders")public class OrderController { @Autowired private OrderService orderService; https:// 客户发布需求 @PostMapping public ResponseEntity<Order> createOrder(@Re Order order) { order.setStatus("NEW"); order.setCreateTime(new Date()); Order saved = orderService.saveOrder(order); https:// WebSocket 实时推送给附近飞手 webSocketService.pushToNearbyPilots(saved); return ResponseEntity.ok(saved); } https:// 飞手抢单(分布式锁防超卖) @PostMapping("/{orderId}/accept") public ResponseEntity<Void> acceptOrder( @PathVariable Long orderId, @Re("Authorization") String token) { Long pilotId = JwtUtil.getUserIdFromToken(token); orderService.acceptOrder(orderId, pilotId); return ResponseEntity.ok().build(); }}@Service @Transactionalpublic class OrderServiceImpl implements OrderService { @Autowired private RedisTemte<String,Object> redisTemte; @Override public void acceptOrder(Long orderId, Long pilotId) { String lockKey = "order_lock:" + orderId; try { Boolean locked = redisTemte.opsForValue() .setIfAbsent(lockKey, "1", 30, TimeUnit.SECONDS); if (!locked) throw new RuntimeException("订单正在被其他飞手抢单"); Order order = orderRepository.findById(orderId) .orElseThrow(() -> new RuntimeException("订单不存在")); if (order.getStatus() != 0) throw new RuntimeException("订单已被接走"); order.setStatus("ACCEPTED"); order.setPilotId(pilotId); orderRepository.save(order); https:// 通知客户 webSocketService.notifyClient(order.getClientId(), "accepted"); } finally { redisTemte.delete(lockKey); } }}5️⃣ UniApp 前端核心页面
页面路径功能首页地图pages/index/index高德地图展示附近飞手/订单需求发布pages/order/create.vue拍摄类型+预算+时间+地点订单列表pages/order/list.vue多维筛选(距离/技能/价格)飞手接单pages/pilot/order-list.vue抢单/议价/接单飞行追踪pages/track/track.vue实时位置+进度+成果预览钱包提现pages/wallet/wallet.vue收益明细+提现个人中心pages/user/user.vue认证/评价/信用分
vue<!-- pages/index/index.vue - 地图展示附近订单 --><temte> <view> <map id="orderMap" :latitude="center.lat" :longitude="center.lng" :markers="markers" :polyline="routes" style="width:;height:400px" @markertap="onMarkerTap" /> <!-- 附近飞手列表 --> <scroll-view scroll-y class="pilot-list"> <view v-for="pilot in nearbyPilots" :key="pilot.id" @tap="viewPilot(pilot.id)"> <image :src="pilot.avatar" class="avatar"/> <text>{{ pilot.name }}</text> <text class="skills">{{ pilot.skills }}</text> <text class="rating">⭐ {{ pilot.rating }}</text> <text class="distance">{{ pilot.distance }}km</text> </view> </scroll-view> </view></temte>javascripthttps:// WebSocket 实时通信class SocketService { constructor() { this.socket = null; } connect(token) { this.socket = new WebSocket( `wss:https://api.example.com/ws?token=${token}` ); this.socket.onmessage = (event) => { const data = JSON.parse(event.data); https:// 订单状态实时更新 if (data.type === 'ORDER_STATUS') { this.updateOrderStatus(data.payload); } }; }}6️⃣ 信用评价体系(低空经济特色)
评分维度权重说明飞行安全记录30%无黑飞/违规记录任务完成率25%按时交付率客户评价25%评分+留言响应速度10%接单响应时间资质等级10%CAAC执照/行业认证
⚠️ 信用分与从业资格挂钩,黑名单制度实现"一处失信,处处受限"
售价与套餐(2026年5月新)
套餐价格包含内容套餐1¥8,888源码 + 技术文档 + 部署文档(不含搭建/维护/技术支持)套餐2¥10,888源码 + 文档 + 首次搭建 + 1年维护更新 + 技术支持
后续年度技术服务费:¥2,000/年(含免费系统升级)
联系方式(官方核实)
渠道信息电话(西安省钱兄网络科技有限公司)公司西安省钱兄网络科技有限公司地址陕西省西安市高新区高新四路13号朗臣大厦A座11808演示站联系客服获取管理后台 + 用户端演示地址
️ 部署架构┌─────────────────────────────────────────────┐│ Nginx │├──────────┬──────────┬───────────┬─────────────┤│ UniApp │ UniApp │ UniApp │ UniApp ││ 小程序 │ 公众号H5 │ APP │ H5 │├──────────┴──────────┴───────────┴─────────────┤│ Spring Boot 集群 ││ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ ││ │ 订单服务 │ │ 用户服务 │ │ 支付/匹配服务 │ ││ └─────────┘ └─────────┘ └─────────────────┘ │├───────────────────────────────────────────────┤│ MySQL(主从) │ Redis Cluster │ │├───────────────────────────────────────────────┤│ Prometheus + Grafana 监控 ││ Docker + K8s 容器化部署 │└───────────────────────────────────────────────┘ 系统亮点总结
特性说明✅ 全端覆盖小程序/公众号/APP/H5 一套 UniApp 源码✅ 智能匹配Redis GEO + 技能标签 + 距离权重,毫秒级匹配✅ 防超卖分布式锁 + 乐观锁,抢单不冲突✅ 实时通信WebSocket 订单状态实时推送✅ 信用体系飞行安全记录 + 黑名单 + 资质挂钩✅ 高并发 削峰 + Redis 缓存✅ 安全合规HTTPS + JWT + 敏感数据AES加密 + 接口签名✅ 数据看板ECharts 实时展示营收/热力图/飞手排名
获取源码:可通过 互站网(huzhan.com) 搜索"省钱兄低空经济无人机飞手接单"或直接联系官方QQ 710070994 获取演示站体验后下单。源码具有可复制性,不支持恶意退款。
省钱兄科技,低空经济,无人机飞手,接单平台