ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

基于微信小程序的共享雨伞租借系统:从业务闭环到答辩全攻略

基于微信小程序的共享雨伞租借系统:从业务闭环到答辩全攻略 简介共享经济作为一种成熟的互联网模式深刻影响着日常生活的方方面面。在校园、商圈等场景中共享雨伞以低成本、高频次的特点成为典型应用。微信小程序作为轻量级应用载体为这类短时租赁服务提供了便捷的入口和完整体验。理解共享经济系统的核心在于厘清业务状态流转与计费模型而Spring Boot等后端技术则为并发控制和数据一致性提供了保障。从扫码取伞、异地归还到押金管理与订单支付整个流程涉及小程序端、服务端与数据库的多层协作。对于计算机专业的学生而言掌握这类系统的设计思路和工程实践不仅是完成课题的关键更是理解真实互联网产品落地的重要路径。本文正是围绕这类系统的完整实现过程展开从需求分析到技术选型、从代码结构到部署答辩的详细拆解帮助读者构建系统化认知。 我去年帮一个学弟改这个方向的毕设他买了一套共享雨伞的源码包跑起来之后发现页面是有的流程是断的文档写得像目录问群里也没人理。最后我陪他从头把业务逻辑顺了一遍把计费、订单状态、归还流程这些关键环节重新捋清楚才算真正能拿去答辩。所以今天我想借这个“基于微信小程序的共享雨伞租借系统”的题目从业务模型、技术选型、代码结构、部署实操、答辩话术这几个角度把一套完整的高分毕设应该长什么样讲清楚。如果你是计算机相关专业的学生正在找小程序方向的项目或者你想快速理解一个完整共享租赁系统的实现套路这篇文章应该能让你少走很多弯路。先说一句大实话这个项目本身不复杂真正的难点从来不在“写代码”而在“把业务闭环讲圆”。下面我按我自己的复盘思路来拆。1. 先搞清楚一件事共享雨伞系统的业务闭环到底怎么画很多人拿到项目第一件事就是打开IDE跑代码这是错的。你要先看懂这个系统在解决什么问题才能知道代码为什么这么写。1.1 为什么共享雨伞的项目值得做共享雨伞和共享单车、共享充电宝逻辑类似但有几个非常鲜明的特点非常适合做成毕设选题。第一业务链路完整但不庞大。它不像电商系统那样有商品SPU、SKU、购物车、秒杀、优惠券叠加、售后一堆东西但也不像“图书借阅”那样纯CRUD毫无亮点。它的核心闭环是找伞、扫码、取伞、用伞、还伞、扣费一条线走完涉及的模块却涵盖了小程序端、后端接口、数据库、地图定位、支付流程、设备状态管理能展示的技术点足够多。第二场景化很强。地铁口、学校图书馆门口、商场出入口下雨天高频使用有地域属性、有时间属性、有状态流转这些都能在答辩时变成生动的业务场景故事。第三经济模型清晰。共享雨伞通常是按小时计费比如1元/小时24小时封顶5元还涉及押金模式或免押金信用模式。这套计费逻辑能用代码写清楚也能在文档里画清楚答辩时非常好讲。1.2 角色、流程与状态机整个系统一共有三类角色用户通过微信小程序扫码借伞、还伞、支付、查看订单。运营管理员通过管理后台维护网点、录入雨伞、处理异常订单、查看收入报表。系统负责调度、计费、记录以及各类状态之间的流转。核心流程大致是用户打开小程序授权登录系统通过微信openid识别身份。首页展示附近网点每个网点显示距离、可借伞数量。用户到达网点使用小程序扫描伞架上的二维码或雨伞上的二维码。扫码后后端校验该伞状态是否可借、用户是否有押金或信用分是否达标。校验通过生成租借订单更新雨伞状态为“租借中”。用户使用完毕到任意网点或者原网点扫描还伞点二维码完成归还。系统根据借用时长计算费用从余额或押金中扣款订单关闭。这里最关键的地方在于雨伞状态是核心状态机。一把伞只有四种状态可用、租借中、维护中、已报废。所有业务流程都是围绕这四种状态的流转来设计的。借伞操作的本质是“可用 → 租借中”还伞操作的本质是“租借中 → 可用”管理员报修是“可用 → 维护中”维修恢复是“维护中 → 可用”。我在帮学弟改代码的时候发现他原来的实现只有“可借”和“不可借”两个状态结果运营后台无法区分“这把伞是被人借走了还是坏了”这个设计缺陷直接导致还伞时无法正确结算。所以这里我特别强调状态设计是这种租赁系统的地基宁多勿少。1.3 计费、押金与信用分经济模型怎么落到代码里计费是共享经济项目的灵魂。雨伞租赁通常不是简单的“借一次多少钱”而是按时间段动态计算。常见计费规则是起步价按时长计算不满1小时按1小时收取超过24小时未归还视为逾期逾期按天计费并可能影响信用分。具体的费用计算逻辑要在后端完成不能在客户端算因为客户端的时间可以被篡改后端时间才是标准。押金模式有两种常见设计固定押金模式用户首次借伞前需缴纳固定押金比如20元、30元。还伞后如果无异常押金原路退回或保留在账户余额中。免押金信用模式需要接入第三方信用分或者维护用户自有的信用体系。信用分足够高时无需缴纳押金但如果逾期或者损坏会扣信用分。从实现难度上建议毕设采用“押金 平台余额”的组合借伞时可以缴纳押金还伞时费用从余额扣除余额不足则弹提示充值。这样你就能把“充值”和“支付”两个页面合理地做进小程序里能多展示不少功能点答辩工作量也更好看。2. 技术选型复盘为什么这么搭以及有没有更好的组合技术选型是答辩时必然被问到的问题。你要能说清楚“为什么用这个”而不是“因为别人都用这个”。2.1 微信小程序端从原生到框架的取舍这类项目的前端微信小程序原生开发其实是首选原因很实际题目明确要求“基于微信小程序”原生开发意味着最少的兼容问题也最容易跑通。官方组件和API对校园场景足够用地图组件map、定位接口wx.getLocation、扫码接口wx.scanCode、登录接口wx.login全套官方能力直接覆盖核心流程。微信开发者工具体验好模拟器、真机调试、前端报错信息都直观对毕设调试来说省心很多。如果你本身熟悉Vue也可以选择uni-app或Taro这类跨端框架。但我个人建议不折腾——毕设周期有限原生开发踩坑最少而且答辩时老师问“这个接口怎么调的”你能直接答得清清楚楚。用框架反而容易被追问“那你这个canvas是怎么跨端适配的”之类的问题。需要说明的是地图和定位这两个能力是小程序的亮点。首页的附近网点功能建议用wx.getLocation拿到用户经纬度再调后端接口计算附近网点列表。地图展示用官方map组件即可不用额外接高德或腾讯地图SDK能省掉不少配置麻烦。2.2 后端Spring Boot为主流的原因后端框架选择上Spring Boot是这个类型毕设的主流选择同时也是最稳妥的Java生态资料多报错信息网上都有现成解决方案。Spring Boot的约定优于配置让你写更少的配置跑起更多的功能。整合MyBatis-Plus或Spring Data JPA、MySQL、Redis这些组合在简历上写出去也有含金量。另外Spring Boot在部署上还有个隐藏优势可以打包成单机jar包运行不依赖Tomcat单独部署。这对毕设演示来说非常重要老师看你在命令行里一行java -jar把服务拉起来比你在IDE里点绿色按钮启动要有说服力得多。如果你对Node更熟用Express或Egg.js也能实现但需要额外解释“为什么不用更主流的技术栈”没必要给自己增加麻烦。2.3 辅助设施Redis、MySQL和对象存储这套系统的数据量不大MySQL单库足够。核心表也就七八张用户、网点、雨伞、订单、支付记录、配置表完全够用。Redis的用途主要有三块缓存登录态用户登录后后端返回tokentoken存在Redis里并设置过期时间解决小程序无状态登录问题。缓存热点数据某个网点的可借伞数量用户高频查看可以用Redis缓存减少MySQL压力。不过毕设阶段这个优化不是必须的做了是加分项不做也不影响完成度。处理并发扣减这个稍后在后端部分详细说。对象存储用于存放用户头像、还伞照片等图片资源。如果毕设不想折腾云存储也可以直接把图片转Base64存数据库或者存在服务器本地目录里。不过为了专业性建议了解一下阿里云OSS或腾讯云COS的接入方式答辩时可以作为扩展点来讲。3. 小程序端拆解用户看到的每一个页面背后是什么逻辑小程序端是整个系统的门面也是评分老师第一眼看到的东西。页面不需要多但每一页都要功能完整、逻辑自洽。3.1 首页与附近网点一个经纬度引发的问题首页通常由地图和网点列表两部分组成。地图上展示附近雨伞网点打点标记下方则列出可借伞数量、网点地址、距离信息。这里有一个新手经常踩的坑前端不能直接用两个经纬度计算距离距离计算必须放在后端或者在后端返回数据时把距离字段一起算好。距离计算用Haversine公式也就是球面距离公式private double getDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 Math.toRadians(lat1); double radLat2 Math.toRadians(lat2); double a radLat1 - radLat2; double b Math.toRadians(lng1) - Math.toRadians(lng2); double s 2 * Math.asin(Math.sqrt( Math.pow(Math.sin(a / 2), 2) Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2) )); return s * 6371.0; // 单位公里 }这个公式不需要你手推但你要知道原理并且要在答辩时能讲出来。这里有个细节如果网点数量很少也可以在前端把所有网点取回来再计算但毕设建议还是走后端计算因为这样你能展示“接口怎么处理业务逻辑”的过程。另外经纬度字段的存储精度要注意。数据库要用DECIMAL(10, 6)不要用FLOAT否则定位误差很大。这也是我学弟踩过的坑他用FLOAT存经纬度结果网点显示位置偏移了几百米找了大半天才发现是表结构精度问题。3.2 扫码取伞从扫描到开锁的状态流转扫码取伞是这个系统最有“科技感”的功能也是答辩时最能演示的部分。用户在网点扫雨伞上的二维码小程序端调用wx.scanCode拿到二维码内容。二维码内容通常是雨伞的唯一编码比如YS20240001。然后把编码传给后端接口后端做如下几步操作根据伞编码查询雨伞是否存在、状态是否为“可用”。查询用户是否有进行中的订单防止用户不还伞又借下一把。查询用户是否已缴纳押金或信用分是否达标。校验通过后创建订单并把雨伞状态改为“租借中”同时扣减网点可用伞数量。返回订单ID和租借成功信息。这里有一个关键的业务细节伞架上的二维码和雨伞上的二维码最好分开。雨伞上的码是唯一标识每把伞而伞架上的码是标识网点。这样设计的好处是用户可以在任意网点还伞——他只需要扫的是网点的码而不是原伞的码。这是一个很常见的业务设计也是很多入门项目没有考虑到的。如果打开方式更偏硬件一些可以做蓝牙锁或者模拟智能锁的实现。纯软件方向的毕设用“扫码 状态同步”来模拟开锁过程即可在文档中说明“真实场景下开锁信号会通过低功耗蓝牙下发到锁控模块”这个扩展点在答辩时非常有说服力。3.3 还伞流程如何把“用户说还了”变成系统事实还伞比借伞更容易出bug因为“还了”这句话必须有约束条件。好的还伞流程是这样的用户点击“我要还伞”进入还伞页面。系统展示当前正在租借的订单包括借用时长和当前预估费用。用户扫描还伞网点二维码系统识别归还网点。用户上传雨伞照片作为归还凭证。确认归还系统更新订单状态、雨伞状态计算实际费用。第4步很容易被忽略但强烈建议加上。归还照片的意义在于万一用户归还的是坏伞后台上传的照片可以作为责任认定依据。这一张照片的存在能让你在文档里多写一整节“异常流程处理”是非常划算的加分细节。还要注意一个边界情况如果用户A借走的伞在网点被用户B扫了怎么办这不应该是常见的正常流程但系统要处理当B扫码时后端要判断这个伞是“租借中”状态返回“该伞已被借用暂不可用”的提示。这个异常提示虽然简单但体现了一个重要思维每个接口都要考虑“不是预期状态时怎么办”。3.4 订单与个人中心最容易展示完成度的地方个人中心至少要包含这些功能用户信息展示头像、昵称、信用分如果有。我的订单进行中的订单、历史订单。押金管理缴纳押金、查看押金状态、申请退款。钱包余额充值、余额明细。异常记录逾期记录、赔偿记录。这里要注意一个交互细节订单列表要区分状态比如“租借中”的订单要显著置顶让用户一眼能看到当前是否有未还的伞。如果用户点进来发现自己有一笔进行了好几天的订单而毫无提示真实场景下很容易产生纠纷在答辩演示时也会显得考虑不周。4. 后端与数据库设计一把雨伞的完整生命周期前端再花哨后端设计拉胯都撑不起这个项目的质量。数据库设计和接口设计是你写设计文档时最核心的内容也是评委老师重点翻的部分。4.1 数据表结构五张关键表的关系我梳理了一套比较常规的表结构覆盖业务主体且不过度设计用户表 user字段类型说明idBIGINT 主键用户IDopenidVARCHAR(64) 唯一微信openid登录凭证nicknameVARCHAR(50)昵称avatar_urlVARCHAR(255)头像地址phoneVARCHAR(20)手机号可选绑定credit_scoreINT 默认100信用分deposit_statusTINYINT押金状态0未缴 1已缴 2已退balanceDECIMAL(10,2)账户余额create_timeDATETIME注册时间网点表 rental_site字段类型说明idBIGINT 主键网点IDnameVARCHAR(50)网点名称addressVARCHAR(255)详细地址longitudeDECIMAL(10,6)经度latitudeDECIMAL(10,6)纬度total_umbrellasINT总伞数available_umbrellasINT当前可借伞数雨伞表 umbrella字段类型说明idBIGINT 主键雨伞IDcodeVARCHAR(32) 唯一雨伞编码二维码内容current_site_idBIGINT当前所在网点statusTINYINT0可用 1租借中 2维护中 3报废purchase_dateDATE入库时间damage_countINT损坏次数订单表 rental_order字段类型说明idBIGINT 主键订单IDorder_noVARCHAR(32) 唯一订单号user_idBIGINT用户IDumbrella_idBIGINT雨伞IDpickup_site_idBIGINT取伞网点IDreturn_site_idBIGINT 可空还伞网点IDpickup_timeDATETIME取伞时间return_timeDATETIME 可空还伞时间amountDECIMAL(10,2)应收金额statusTINYINT0租借中 1已归还待支付 2已支付 3已取消 4逾期支付记录表 payment字段类型说明idBIGINT 主键支付IDpayment_noVARCHAR(32) 唯一支付流水号order_noVARCHAR(32)关联订单号user_idBIGINT用户IDamountDECIMAL(10,2)支付金额pay_typeTINYINT1余额支付 2微信支付statusTINYINT0待支付 1成功 2失败create_timeDATETIME支付时间这几张表之间关系清晰用户对订单是一对多雨伞对订单是一对一网点对雨伞是一对多。订单表是核心一头连着用户、一头连着雨伞、一头连着支付。我在原项目里还见过一张“操作流水表”记录每把伞每一次的状态变更时间和操作人。这是一张“日志表”虽然不参与核心业务但是文档里画出这张表后整个系统的可追溯性一下就体现出来了。建议加。4.2 核心接口契约登录、租借、归还是如何协作的后端接口设计遵循RESTful风格统一返回结构。建议封装一个统一的Result类包含code、message、data三个字段{ code: 0, message: success, data: {} }核心接口列表大致如下接口方法说明/api/user/loginPOST微信登录传code换openid返回token/api/site/nearbyGET附近网点列表传经纬度/api/umbrella/detailGET根据伞编码查伞信息/api/order/rentPOST创建租借订单/api/order/returnPOST归还伞结算费用/api/order/listGET用户订单列表/api/order/detailGET订单详情/api/pay/rechargePOST余额充值/api/pay/depositPOST缴纳/退还押金/api/pay/orderPOST订单支付这里我提一个接口设计上的细节租借接口必须做幂等处理。什么意思就是用户点击“借伞”后如果网络卡顿他又点了一次系统不能给同一个用户创建两笔租借订单。解决办法是在创建订单前先查该用户是否存在“租借中”的订单如果存在就直接返回错误或返回原订单而不是继续创建。另一个细节是归还接口要支持“非原网点还伞”。归还时传的是还伞网点的ID后端要把雨伞的current_site_id改成新的网点同时把旧网点的可借数加一、新网点的可借数加一还是减一答案是旧网点可借数减一因为伞原来挂在旧网点的可用库存里新网点可借数加一还回来的伞进入新网点可用库存。等等仔细想想借伞时伞所在网点A可借数减一。还伞时如果还在A网点网点A可借数加一。还伞时如果是B网点网点A可借数保持不变不对——借伞时已经从A网点减一了伞是归还到B网点的所以应该是A网点可借数减一因为伞从A网点借出去了没回来B网点可借数加一。不对重新梳理一下。网点表里的available_umbrellas表示“这个网点当前能借给用户的伞数量”。一把伞的物理位置就是它的current_site_id。借伞用户从A借走伞伞的 current_site_id 可以设置为NULL因为不在任何网点A的 available 减一。还伞到B伞的 current_site_id 设为BB的 available 加一。所以还伞时旧网点A的可借数是“不用操作”的因为借伞时已经减过了。唯一需要更新的是伞的归属网点和新网点的可用数。这个逻辑写清楚防止答辩时自己绕晕。4.3 并发与状态一致性不能出现“同一把伞被两个人借用”这是后端设计中最容易暴露水平的地方。假如两个用户同时扫描了同一把伞的二维码如果后端代码是“先查状态→再创建订单→再更新状态”那在高并发下就存在竞态条件两个请求都查到了状态是“可用”然后都创建了订单造成一把伞被借给两个人。解决方案有多种乐观锁在更新雨伞状态时用UPDATE umbrella SET status 1 WHERE id ? AND status 0如果影响行数为0说明该伞已被别人借走返回“操作失败请重试”。悲观锁用SELECT ... FOR UPDATE锁住该行数据再执行后续逻辑。推荐用第一种实现简单、性能好而且能在文档里写清楚原理。这不只是一个代码技巧更是共享类系统的核心一致性保障答辩时能讲得很有深度。5. 从压缩包到能演示部署实操与高频踩坑题目里那个压缩包叫“源码全部资料详细文档”但现实是很多人下载下来根本跑不起来。为什么会这样因为大部分问题不出在代码逻辑上而出在环境配置和依赖上。这一节我按实际操作的顺序来讲。5.1 拿到项目后的第一件事怎么拆解这个包千万别直接解压到桌面就开始跑。先看目录对不对。一个结构完整的毕设项目应该是这样的项目根目录/ ├── frontend/ # 微信小程序前端 ├── backend/ # 后端服务Spring Boot ├── database/ # SQL脚本或初始化数据 ├── docs/ # 设计文档、答辩PPT、演示视频 └── README.md # 项目说明如果是这种结构说明打包的人比较规范。如果打开压缩包发现一堆散落文件、没有目录区分那接下来每一步都要谨慎可能资料不全。第二步要检查数据库脚本文件。很多项目把SQL脚本放在database/目录下你要先看里面是不是包含建库、建表、插入初始数据的完整语句。在这个共享雨伞项目里尤其要确认有没有初始化的网点数据和雨伞数据如果没有你登录进去之后地图上是什么都看不见的。5.2 后端启动步骤与环境变量以Spring Boot为例通常的启动步骤是安装JDK 8或11配置JAVA_HOME。安装MySQL 5.7或8.0启动服务。执行SQL脚本创建数据库。安装Redis默认端口启动。修改application.yml或application.properties把你本地的数据库账号密码填进去。在项目根目录执行mvn spring-boot:run启动后端。看到Started Application in X seconds日志说明启动成功。修改配置文件这一步是最容易出幺蛾子的。常见错误包括数据库密码没改连接被拒。Redis配置了不需要的密码或者没开Redis服务。时区没设置导致订单时间差8个小时。端口被占用8080起不来。建议在配置里明确加上数据库时区设置不然会出现“中午下单、凌晨时间”的诡异问题spring: datasource: url: jdbc:mysql://localhost:3306/umbrella?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 你的密码5.3 小程序端配置与联调打开微信开发者工具导入前端目录接下来三件大事第一填AppID。如果还没有小程序账号可以先用测试号。如果项目代码里写了别人的AppID一定要换成自己的否则登录接口可能不正常。个人主体注册小程序是免费的毕设阶段直接注册一个个人开发者账号即可。第二配置request合法域名。本地调试时开发工具右上角“详情” → “本地设置” → 勾选“不校验合法域名、web-view业务域名、TLS版本以及HTTPS证书”。这一步不勾你的所有请求都会被拦截。很多新手在这里卡住小白一点的直接以为代码是坏的。第三确认后端接口地址。前端代码里通常有一个config.js或者request.js文件里面配置了BASE_URL本地调试时要改成你后端服务实际监听的地址比如http://localhost:8080。这里有个细节真机预览时localhost是不通的你需要使用电脑的局域网IP并且手机和电脑连同一个WiFi。如果用的是云服务器部署的后端那就配置服务器的公网IP或域名并且后端要允许跨域。5.4 我记录下来的坑位清单下面这些坑是我帮人调试真实遇到过的问题直接列成清单给你参考微信登录的code只能用一次。如果你在页面加载时调了两次wx.login后端的code2Session接口第二次就会报错。要确保登录逻辑只执行一次并且做好失败后的重试策略。地图组件不显示。很可能是没有在app.json里为使用地图的页面配置权限或者地图组件需要真机调试才能看到效果模拟器上显示不完全。扫码结果不是预期的格式。如果雨伞二维码内容是纯数字后端查询时要注意数据类型是字符串还是整数防止隐式转换导致的查不到数据。图片上传失败。如果是用wx.uploadFile上传还伞照片后端接口要接收MultipartFile并且返回的URL要能被小程序访问到。如果权限设置错了会出现“上传成功但图片打不开”的情况。订单状态查不到。检查Redis缓存有些项目在用户下单时把订单状态写进Redis但查询路径上却从数据库读两边不一致就会产生灵异现象。我的建议是毕设阶段状态一律以数据库为准Redis只做缓存不做最终数据源。6. 答辩与文档怎样把“高分毕设”的人设立住代码跑通了只是第一步。毕业设计最终要的是“设计说明文档 答辩汇报 系统演示”三件套这三者对你的分数影响一点都不比代码小。很多同学代码写得不错但文档像流水账答辩时讲不出设计思路最后反而被压分。6.1 文档结构你的设计说明书该怎么组织一份好的毕设文档结构通常是这样的绪论项目背景、国内外现状、研究意义。需求分析功能性需求、非功能性需求、用例图。系统设计系统架构图、功能模块划分、数据库设计。系统实现前端关键页面、后端核心接口、实现原理。系统测试测试用例、测试结果、结论。总结与展望。我见过很多同学在“需求分析”部分写得很虚全是“系统应该操作简便、界面友好”这种空话。更好的写法是把业务场景写成用户故事。比如作为用户我希望在雨天出门时能快速找到最近的雨伞网点。作为用户我希望扫码后能立即取走雨伞不需要复杂注册。作为管理员我希望看到一个网点的可借伞数量以便决定是否补货。作为管理员我希望看到逾期订单并及时联系用户。这种写法既清晰又接地气而且文档写完后直接映射到功能模块表和数据库表逻辑自然严谨。6.2 答辩现场最值得展示的三个点答辩时间有限一般十几分钟你要把最体现设计能力的内容放在前面。第一业务闭环图。画一张从用户找伞到还伞结算的流程图老师看到的第一眼就会觉得你对项目有整体把握。讲解时要说清楚“借伞”、“还伞”、“计费”三个阶段分别由哪些表、哪些接口支撑。第二状态设计。重点说明雨伞的状态机和订单状态机。可以现场打开数据库演示一把伞从“可用”到“租借中”到“可用”的状态变化这一步非常直观比你说一百句话都管用。第三并发控制方案。如果老师问“两个用户同时扫码这个伞怎么办”你就把乐观锁的实现代码展示出来并解释UPDATE ... WHERE status 0的影响行数判断逻辑。这一个问答环节就能立住“这个学生真的会写代码”的人设。6.3 如果你想在这套代码上继续扩展如果你不满足于“能跑就行”想做点扩展让项目更有深度这几个方向很值得考虑预约功能用户可在小程序上提前预约某个网点的伞预留30分钟取伞时间。这需要在网点表加一个“预约中”的库存概念。信用分体系用户按时还伞信用分增加逾期则扣分信用分低于阈值则无法借伞。这个能很好展示你对业务规则的理解。调度建议管理员后台展示各网点伞的流通率给“哪些网点需要补货”提供数据支撑。消息通知小程序订阅消息在订单即将逾期时推送提醒。这需要接入微信订阅消息模板是很好的加分点。我特别推荐做“逾期提醒”这个扩展因为它的业务价值很容易讲清楚用户忘记还伞是共享雨伞项目最典型的用户痛点订阅消息提醒是微信生态的原生能力做出来就是“产品思维 技术实现”的双重加分。接入步骤也不复杂主要是去微信公众平台申请一个订阅消息模板然后在用户借伞时调用一次requestSubscribeMessage让用户授权后端触发时推送即可。毕设做这个答辩基本稳了。最后再分享一个心得做这种全栈项目最忌讳的就是“一上来就写代码”。你花半天时间把业务流程图和数据表关系图画清楚后面写代码的时间能省下两倍。尤其是这种租赁类系统状态流转、计费规则、异常处理这些业务细节想清楚一个能省你一个通宵的debug时间。雨伞虽小五脏俱全祝你早日把晒不到太阳的伞送进系统里。本文还有配套的精品资源点击获取
返回列表