项目逐字稿

1、负责药品模块:实现药品管理,将药品搜索热词与搜索记录,使用MongoDB储存;实现药品搜索和在app端首页实现轮播图推荐功能,实现对药品的推荐作用,使用ElasticSearch检索药品,并使用Canal保证MYSQL和ES中的数据一致,使用华为云储存app端首页轮播图。把商品评论数据存入MongonDB,减轻数据库压力

2、负责问诊购药模块:如果用户购买处方药,则必须在线问诊,用药人实名信息和用户上传处方/病例/检查报告等信息生成问诊单,实现患者在线问诊,医生在线开处方单,药师远程审核的功能。

3、负责订单管理模块开发,包括订单生成、支付、发货、退款、查询、订单详情等功能的代码实现并使用RabbitMQ实现订单消息的异步处理和分发,保证订单流程的顺畅进行,对接了第三方支付。

4、负责促销模块,秒杀活动的创建以及优惠券明细的查询,使用Redis缓存存储秒杀商品信息;实现优惠券的创建和领取功能,把优惠券分为每满减、满减、折扣、无门槛四种类型,发放模式分为手动领取和指定发放,指定发放需要生成兑换码,要用到兑换码算法,使用xxl-job中用于系统活动消息推送到用户端和优惠券的定时发放。

5、负责内容管理模块:对健康资讯和科普知识中的内容管理进行迭代,内容新增时选择定时发布或立即发布。使用Redisson的延迟队列以及异步线程池监听任务。

6、数据分析模块:负责收集和分析销售数据,提供可视化的报告和图表,帮助管理层了解业务运营状况,通过 EasyExcel 实现数据的导入导出。

药品模块:

药品模块是整个项目的核心模块。他的作用是药品管理,药品搜索

药品管理:

后台管理人员在后台点击新增药品按钮,浏览器请求发送到Nginx,Nginx反向代理到网关,网关去找微服务,微服务实现具体的新增药品功能

后台管理人员在后台点击新增药品按钮,浏览器向Nginx发送请求。

Nginx接收到浏览器发来的请求后,根据配置文件进行反向代理,将请求转发给API网关。

API网关接收到请求后,根据Nacos中的服务注册中心找到实现药品新增功能药品微服务,并把请求转发给该微服务。

药品微服务接收到请求后,把前端录入的药品信息(包括药品名称、价格、品牌、所治症状、生产日期,药品执行标准等字段)保存到MySQL数据库中。

行程微服务处理完请求后,把响应结果返回给网关。

最后,网关把处理后的响应结果返回给Nginx,Nginx再把结果返回给后台,最终app端展示给用户。

药品搜索:

用户在APP端点击搜索框,输入查询内容,点击搜索的时候,请求发送到nginx,nginx反向代理到网关,网关药品微服务,药品微服务使用了ES实现关键字搜索功能,之后把响应结果返回到前端展示。

用户在APP端点击搜索框并输入查询内容,然后点击搜索。

APP会把搜索请求发送到Nginx服务器,Nginx服务器会根据配置的反向代理规则把请求转发给网关。

网关接收到请求后会根据请求中的URL路径和HTTP方法,把请求转给药品微服务。

药品微服务接收到请求后,会使用ElasticSearch进行关键字搜索,并获取匹配的结果。

药品微服务会把搜索结果返回给网关。

网关把响应结果返回给Nginx服务器。

Nginx服务器将响应结果返回给用户APP端。

APP端展示搜索结果。

问诊购药模块:

问诊购药模块主要作用是用户在购买药品时,为用户提供线上指导和线上问诊,用户购买处方药时,为用户开具处方单。

用户点击APP端的客服的联系客服按钮,前端会向后端发送一个请求,打开聊天窗口并连接聊天服务器,请求用WebSocket实现,保证即时通信。请求中包含用户个人信息(姓名、联系方式等),信息经过加密后发送到后端。

后端收到前端发来的请求后,先验证用户身份和权限。

若用户是已注册用户,就从数据库中获取用户信息,验证用户身份。
若用户是未注册用户,需要通过手机验证码等方式来验证。

验证通过后,后端调用聊天服务器的API建立连接并打开聊天窗口。

如果用户要开具处方单,还需要用户填写问诊单(包括用药人实名信息,身份证号码,手机号,健康信息,与自己关系,线下确诊疾病等信息)可以选择上传历史处方图片,病历,报告单。

聊天过程中,后端会监听聊天服务器的信息,把消息记录保存到MongoDB数据库中。

医生查看问诊单,开具处方,用户可以凭处方购买处方药。把问诊单信息,处方信息保存到Mysql数据库中

用户关闭聊天窗口时,后端会中断与聊天服务器的连接,并返回确认消息给前端。后端会把聊天记录从MongoDB中都取出来并发送给前端,前端可以展示聊天记录。

订单模块:

用户按需选择好药品,下订单之后,使用RabbitMQ的延迟队列实现订单支付状态的更新。

用户在APP中选择好出游路线之后,填写订单信息,之后前端把订单信息作为请求的一部分发送给后端。

后端接收到订单消息之后,生成订单,把订单数据保存到数据库中,订单状态设置为未支付。

然后把订单信息投递到RabbitMQ的延迟队列中,设置延迟时间为15分钟。

延迟队列中的消息会在设置的延迟时间后变为可消费状态,然后消费者可以接收到消息并执行订单支付状态的更新操作。

若在订单支付有效期内,用户完成了支付,后端会接收到支付成功的通知,并把订单状态更新为已支付。

如果用户没在规定时间内完成支付,就会执行超时逻辑,将订单状态更新为超时未支付。

促销模块:

促销模块分为秒杀和优惠券。主要作用是通过降低价格,来买出更多的商品

秒杀:
后台管理人员在后台点击添秒杀商品按钮,然后填写秒杀商品数量,秒杀时间,秒杀价格
然后点击提交按钮。
用户就可以在app端查看秒杀商品,以及参加秒杀了。

后端将秒杀商品数据存入Redis。并使用异步监听的方法使Mysql数据同步到Redis。并使用 Redis 的分布式锁来确保秒杀活动期间对库存操作的原子性,避免多个服务实例之间的竞争导致超卖。
秒杀成功之后,用户就可以进行下单。

优惠券:

后台管理人员点击新增优惠券按钮,填写信息,包括优惠券类型,数值,使用商品,生效时间,发放模式等信息,然后将优惠券信息存入Mysql数据库。

发放后,用户可以app端领取、查看和使用,用户下单使用后,将订单信息发送到后端服务器。

若优惠券领取方式是指定发放,就需要生成兑换码。由于生成兑换码的数量较多,所以需要基于线程池异步生成

防止优惠券超领,兑换优惠券时在bitmap中根据兑换码id查询是否已领取,避免超领。解决多人超卖的方法是在SQL语句中增加一条条件语句解决单人超卖的方法是使用Synchronized实现悲观锁。

使用xxl-job中用于系统活动消息推送到用户端和优惠券的定时发放

内容管理模块

后台管理人员在后台新增文章按钮,然后填写文章内容,以及选择文章类型,发放时间等信息,将文章信息数据发送到后台,存入Mysql数据库中,然后使用异步监听同步到Redis中。

用户在app端可以查看文章。

数据分析模块

后台管理人员点击数据分析,然后从Mysql数据库中读取相关信息,然后展示在后台管理端页面上

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值