以下为基于Spring Boot的JAVA家政自营O2O同城服务系统核心模块Java代码示例涵盖微信小程序交互、服务匹配、订单管理、支付集成等关键功能1. 用户端微信小程序交互示例Uniappvue !-- 首页服务浏览页面 pages/index/index.vue -- template view classcontainer !-- 服务类型筛选 -- scroll-view classcategory-scroll scroll-x view v-for(cat,index) in categories :keyindex :class[category-item, currentCatindex?active:] clickselectCategory(index) {{cat.name}} /view /scroll-view !-- 服务人员卡片列表 -- view classworker-list view v-forworker in filteredWorkers :keyworker.id classworker-card clickselectWorker(worker) image :srcworker.avatar classavatar / view classworker-info text classname{{worker.name}} ({{worker.rating}}分)/text view classskills text v-forskill in worker.skills classtag{{skill}}/text /view view classprice-row text classprice¥{{worker.price}}/小时/text text classdistance{{worker.distance}}km/text /view /view /view /view /view /template script export default { data() { return { categories: [ { id: 1, name: 全部服务 }, { id: 2, name: 保洁服务 }, { id: 3, name: 维修服务 } ], currentCat: 0, workers: [ { id: W1001, name: 李阿姨, avatar: /static/worker1.jpg, price: 50, rating: 4.9, skills: [日常保洁, 深度清洁], distance: 2.3 }, // 其他服务人员数据... ], filteredWorkers: [] } }, methods: { selectCategory(index) { this.currentCat index; // 根据类型筛选服务人员 if(index 0) { this.filteredWorkers this.workers; } else { const catId this.categories[index].id; this.filteredWorkers this.workers.filter(worker worker.category catId ); } }, selectWorker(worker) { uni.navigateTo({ url: /pages/booking/booking?workerId${worker.id} }); } } } /script2. 后端服务匹配算法示例java // 服务匹配服务类 Service public class WorkerMatchingService { Autowired private WorkerRepository workerRepository; public ListWorker matchWorkers(MatchRequest request) { SpecificationWorker spec (root, query, cb) - { ListPredicate predicates new ArrayList(); // 位置匹配 if(request.getLatitude() ! null request.getLongitude() ! null) { double distance DistanceCalculator.calculate( request.getLatitude(), request.getLongitude(), root.get(latitude), root.get(longitude) ); predicates.add(cb.lessThanOrEqualTo(root.get(serviceRadius), distance)); } // 技能匹配 if(!CollectionUtils.isEmpty(request.getSkills())) { predicates.add(root.get(skills).in(request.getSkills())); } // 评分排序 query.orderBy(cb.desc(root.get(rating))); return cb.and(predicates.toArray(new Predicate[0])); }; return workerRepository.findAll(spec); } } // 距离计算工具类 public class DistanceCalculator { public static double calculate(double lat1, double lon1, double lat2, double lon2) { // 简化版Haversine公式实现 double R 6371; // 地球半径千米 double dLat Math.toRadians(lat2 - lat1); double dLon Math.toRadians(lon2 - lon1); lat1 Math.toRadians(lat1); lat2 Math.toRadians(lat2); double a Math.sin(dLat / 2) * Math.sin(dLat / 2) Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2); double c 2 * Math.asin(Math.sqrt(a)); return R * c; } }3. 订单管理控制器示例java RestController RequestMapping(/api/order) public class OrderController { Autowired private OrderService orderService; PostMapping(/create) public ResponseEntityOrderResponse createOrder(RequestBody CreateOrderRequest request) { // 创建订单逻辑 Order order new Order(); order.setUserId(request.getUserId()); order.setWorkerId(request.getWorkerId()); order.setServiceType(request.getServiceType()); order.setAppointmentTime(request.getAppointmentTime()); order.setPrice(request.getPrice()); order.setStatus(OrderStatus.PENDING); // 保存订单 Order savedOrder orderService.createOrder(order); // 推送通知给服务人员 notificationService.sendPush(savedOrder.getWorkerId(), 您有新的订单); return ResponseEntity.ok(new OrderResponse(savedOrder)); } PutMapping(/{orderId}/complete) public ResponseEntityVoid completeOrder(PathVariable String orderId) { // 完成订单逻辑 orderService.completeOrder(orderId); return ResponseEntity.ok().build(); } } // 订单状态枚举 public enum OrderStatus { PENDING, // 待接单 ACCEPTED, // 已接单 IN_SERVICE, // 服务中 COMPLETED, // 已完成 CANCELLED // 已取消 }4. 支付集成示例java Service public class WechatPaymentService { Value(${wechat.pay.appid}) private String appId; Value(${wechat.pay.mch_id}) private String mchId; Value(${wechat.pay.key}) private String apiKey; public MapString, String createPayParams(Order order) throws Exception { // 生成预支付订单 UnifiedOrderRequest request new UnifiedOrderRequest(); request.setAppid(appId); request.setMch_id(mchId); request.setNonce_str(RandomStringUtils.randomAlphanumeric(32)); request.setBody(家政服务费); request.setOut_trade_no(order.getId()); request.setTotal_fee(order.getPrice().multiply(new BigDecimal(100)).intValue()); request.setSpbill_create_ip(123.12.12.12); request.setTrade_type(JSAPI); request.setOpenid(order.getUserId()); // 签名 request.setSign(generateSignature(request)); // 调用微信支付API UnifiedOrderResponse response wechatPayClient.unifiedOrder(request); // 生成前端支付参数 MapString, String payParams new HashMap(); payParams.put(appId, appId); payParams.put(timeStamp, String.valueOf(System.currentTimeMillis() / 1000)); payParams.put(nonceStr, RandomStringUtils.randomAlphanumeric(32)); payParams.put(package, prepay_id response.getPrepay_id()); payParams.put(signType, MD5); payParams.put(paySign, generatePaySignature(payParams)); return payParams; } private String generateSignature(UnifiedOrderRequest request) { // 微信支付签名生成逻辑 // ... } }5. 评价系统示例java Entity public class Review { Id GeneratedValue(strategy GenerationType.IDENTITY) private Long id; ManyToOne private User user; ManyToOne private Worker worker; Enumerated(EnumType.ORDINAL) private Rating rating; // 1-5星 private String comment; Column(updatable false) private Date createTime; // 计算平均评分 public static double calculateAverageRating(ListReview reviews) { return reviews.stream() .mapToInt(Review::getRatingValue) .average() .orElse(0); } private int getRatingValue() { return rating.ordinal() 1; } } // 评价提交控制器 RestController RequestMapping(/api/review) public class ReviewController { PostMapping public ResponseEntityVoid submitReview(RequestBody ReviewRequest request) { Review review new Review(); review.setUserId(request.getUserId()); review.setWorkerId(request.getWorkerId()); review.setRating(Rating.values()[request.getRating() - 1]); review.setComment(request.getComment()); review.setCreateTime(new Date()); reviewRepository.save(review); // 更新服务人员评分 workerService.updateRating(request.getWorkerId()); return ResponseEntity.ok().build(); } }技术架构特点微服务架构采用Spring Cloud实现服务拆分支持弹性扩展多端适配Uniapp实现微信小程序/H5/APP三端统一开发实时定位匹配基于Haversine算法实现5公里内服务人员快速匹配支付集成微信支付JSAPI接口实现安全支付评价系统动态评分计算与实时更新数据安全敏感信息加密存储支付数据符合PCI DSS标准通知系统集成微信模板消息实现订单状态实时推送该源码示例展示了家政O2O系统的核心功能实现实际项目需结合具体业务需求进行扩展和完善如增加服务人员资质审核、智能排班、服务过程追踪等高级功能。