医疗项目分析

项目由10人(一般来说后端开发,是前端的2倍)的开发团队完成。 产品经理:2 人(1 个经理,2 个产品),确定需求以及给出产品原型图。 项目经理:1 人,项目管理。 前端团队:2 人,根据产品经理给出的原型图制作静态页面。 后端团队:5 人,根据项目经理分配的任务完成产品功能。 测试团队:2 人,采用白盒测试以及黑盒测试对产品功能性能进行检测。 运维团队:1 人,项目的发布以及维护。

青少年兴趣培养app

项目架构:

SpringBoot + Redis + mysql +rabbitmq等

项目描述

青少年兴趣培养App旨在为青少年提供一个综合性平台,帮助他们在课余时间探索、培养和发展自己的兴趣爱好。除了提供课程管理、售卖课程管理、学生信息等基本功能外,该App还特别设计了点名功能、请假管理、线索管理、班级信息管理、成长档案等模块,以更好地满足青少年学习和成长的需求。 

所用技术

业务数据持久化采用 MySQL,数据缓存采用 Redis,系统微服务基于 SpringBoot 开发,数据库连接池采用 Druid,消息队列解耦用RabbitMQ,Mybatis Plus 持久层接口实现组件等。

主要职责:

课程管理:

用户可以看到在售的课程以及课程详细信息包括价格,学习周期以及开课时间;

点名管理:

可以根据时间查询当天的课程,点击课程查看课程详情,包括学生的出勤情况和时间,教师可以进行点名,点名之后不能再进行点名;还可以查看点名和未点名的;

请假管理:

学生可以提交请假信息并且设置请假状态为待批阅,老师可以查看选择同意或者拒绝,返回到请假查询页面并刷新,已经同意或拒绝的请假不能再进行操作;

负责模块具体业务逻辑:

课程管理模块:

查询在售课程信息:

客户端发起请求到后端接口获取在售课程列表。 后端服务首先尝试从Redis缓存中获取在售课程数据,如果存在则直接返回给客户端。 若缓存未命中,则查询MySQL数据库获取在售课程列表及详细信息。 将查询结果存储到Redis缓存中设置合理的过期时间(如根据课程更新频率决定)。 将查询结果返回给客户端,客户端展示课程列表和详情。

课程管理模块:查询与购买课程的业务逻辑

查询在售课程信息: 客户端(前端)发起请求至后端接口,请求获取在售课程列表。 后端服务首先尝试从Redis缓存中获取在售课程数据。如果存在且未过期,则直接返回给客户端。 若缓存未命中或已过期,后端查询MySQL数据库获取在售课程列表及详细信息,如课程ID、名称、价格、简介、讲师信息等。 将查询结果存入Redis缓存,并设置合理的过期时间(比如根据课程更新频率或者固定有效期)。 将查询结果(课程列表)返回给客户端,客户端展示课程列表和简要详情。

查看课程详情并进行购买操作: 用户在前端点击某门课程进入详情页面,客户端向后端发送获取该课程详细信息的请求,参数为课程ID。 后端接收到请求,从Redis缓存或MySQL数据库获取指定课程的详细信息(包括详细介绍、开课日期、上课时间、剩余名额等),然后返回给客户端。 用户购买课程流程:

客户端在课程详情页提供“立即购买”按钮,用户点击后触发购买请求,请求携带课程ID和用户ID等必要信息。 后端验证用户身份和课程状态(如是否仍在售、是否有足够名额等),通过验证后,开始处理购买事务:

a. 更新课程售卖记录(如减少剩余名额)。

b. 在订单表中创建一条新的订单记录,关联用户ID和课程ID。

c. 如果涉及到支付,生成预支付订单信息并调用支付宝或微信支付API发起支付请求。

d. 记录购买日志并更新用户的学习记录或积分等相关状态。

支付回调处理: 支付平台完成支付后会通过预先设定的回调地址通知后端服务,后端验证支付成功后:

a. 更新订单状态为已支付。

b. 如果有必要,将购买成功的消息推送至客户端,提示用户购买成功,可以开始学习课程。

客户端显示购买结果: 前端实时监听或定期刷新订单状态,当接收到购买成功的通知时,在界面上显示购买成功信息,同时引导用户跳转到课程学习页面或个人中心查看已购课程。

点名管理模块:

教师查询当天课程与点名状态:

教师通过前端页面触发查询当日课程及点名情况的请求。 后端接收到请求后,优先检查Redis缓存中是否存在当天课程和点名记录。 若缓存中有数据,直接返回点名状态;否则查询MySQL获取相关信息,并将查询结果存入Redis缓存中。

执行点名操作:

教师在前端选择学生并执行点名操作,向后端发送包含学生ID、课程ID和点名状态的请求。 后端通过数据库事务确保原子性:

a. 先锁定相关记录,防止并发情况下同一学生的点名状态被多次修改。

b. 查询当前该学生在该课程下的点名状态。

c. 更新点名状态至数据库,同时记录点名操作日志。

d. 更新完成后释放锁,并清除或更新对应的Redis缓存数据。

请假管理模块:

学生提交请假申请:

学生在前端填写请假信息并提交,前端调用后端接口。 后端接收请假申请,将其保存到MySQL数据库中,同时在请假表中标记状态为“待批阅”。 同时将学生的请假状态信息同步至Redis缓存,方便后续快速查询。

老师审批请假申请:

老师在前端查看待处理的请假申请,点击同意或拒绝按钮触发审批请求。 后端接收到请求,根据审批结果更新MySQL数据库中的请假状态。 更新完毕后,立即清除或更新对应学生请假状态的Redis缓存。 前端更新请假状态

image-20240307135438560

解释流程图

  1. 概述系统架构:首先,简要介绍系统使用的技术栈(SpringBoot, Redis, MySQL, RabbitMQ等)以及各个技术的作用。这会给面试官一个大概的技术背景理解。

  2. 逐步解析各个模块

    • 课程列表和详情查询

      • 说明客户端如何请求课程列表和课程详情,后端首先检查Redis缓存是否有数据,如果没有,才会查询MySQL数据库。

      • 强调使用缓存的好处,比如减少数据库的负载,加快响应速度。

    • 购买课程流程

      • 描述用户发起购买请求的处理流程,包括用户身份和课程状态的验证,以及调用支付接口。

      • 提到如果支付成功,如何更新订单状态,并通知客户端购买成功。

    • 点名和请假管理

      • 解释教师如何查询和执行点名操作,以及学生如何提交请假请求,老师如何审批。

面对可能的问题

当面试官询问某些模块可能遇到的问题时,你可以从以下几个角度来回答:

  1. 缓存一致性:在使用Redis缓存时,如何保证缓存数据与数据库数据的一致性。解决策略包括缓存过期策略、使用消息队列进行数据库与缓存的同步等。

  2. 数据库性能:查询效率低下、数据写入延迟等问题。可以通过优化SQL查询、使用索引、调整数据库配置、读写分离等方式来提高性能。

  3. 系统扩展性:随着用户量的增加,系统如何水平扩展来应对高并发场景。可以提到使用微服务架构、负载均衡、数据库分片等策略。

  4. 安全性问题:包括数据泄露、SQL注入、XSS攻击等。强调代码的安全编写习惯、使用安全框架、定期进行安全审计。

  5. 事务管理:在执行购买流程时,如何保证事务的一致性和原子性,特别是在分布式系统中。可以提及使用分布式事务解决方案,如2PC(两阶段提交)、TCC(Try-Confirm-Cancel)等。

硕果满园综合供应链智能管理平台

项目描述:

该项目为硕果满园综合供应链智能管理平台,整合了销售、采购、基础信息、仓储和配送等关键业务模块。该系统利用先进的技术架构实现高效的数据处理与业务协同,确保从订单创建到商品配送全过程的自动化与精细化管理。

功能模块业务逻辑概要:

注册流程

  • 用户输入手机号并请求注册。

  • 后端系统接收到注册请求,向阿里云发送验证码。

  • 阿里云发送验证码到用户手机号,并设置过期时间。

  • 用户输入验证码和密码。

  • 后端系统对验证码进行验证,验证通过后对密码进行加密。

  • 创建用户账号,并生成返回的Token。

登录流程

  • 用户输入账号密码或手机号验证码。

  • 后端系统接收到登录请求,进行身份验证。

  • 验证通过后生成并返回Token。

基础信息管理流程

  • 用户进行登录鉴权,使用Token作为身份凭证。

  • 用户可以进行基础信息的增删改查操作。

销售管理模块流程

  • 用户进行登录鉴权,使用Token作为身份凭证。

  • 用户创建、修改、查询或删除订单。

  • 在订单创建时,后端系统验证用户权限,并将订单信息存储到MySQL数据库。

  • 利用Redis缓存订单状态,提高查询速度和并发性能。

仓储管理模块流程

  • 用户进行登录鉴权,使用Token作为身份凭证。

  • 用户进行入库、出库、盘点等操作。

  • 每当有操作发生时,后端系统即时更新MySQL中的库存数量,并更新Redis缓存中的库存数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值