项目概述:古医堂商城是一个提供在线药品销售和内容浏览的项目。该项目宗旨是为用户提供方便、安全和高效的购药体验与舒适的内容浏览。项目分为后台管理端和app端;用户可以在app上浏览信息、下单问诊、购买药品,后台人员可以在后台上架药品,发布内容等。
技术选型: SpringCloud + ElasticSearch + Redis + Canal + RabbitMQ + XXL-JOB
项目详细内容:
下面我介绍一下我在项目中遇到比较棘手的一些问题以及相关解决方案。
文章内容推荐:用户登录之后切换到内容页面时会默认展示10条文章信息,当用户下拉的时候可以加载最新的文章(分页)本页文章列表中发布时间的最大时间为依据,当用户上拉也可以加载更多的文章信息(按照发布时间)本页文章列表发布时间最小的时间为依据。
技术解决:首先先判断redis中是否有文章的基本信息,如ID、标题、发布时间等,将这些信息作为缓存数据,接下来,需要构建一个动态SQL查询功能,可以根基用户提供的起始和结束ID范围,当用户发起上拉或者下拉请求时,前端将请求中的起始和结束ID发送到后端,后端接受到请求,经起始和结束ID放入Redis中,作为缓存,然后使用动态SQL查询,根据Radis中的ID缓存从数据库中查询列表,查询将结果返回前端,更新页面上的文章列表
支付模块
在支付方面,我们对接的是支付宝,将用户的订单号(使用 IDWorker(IDWorker 是一种可用于生成唯一标识符的工具类或算法。通常情况下,IDWorker 可以根据预定义的规则生成全局唯一的标识符,全局唯一的标识符,例如一个长整型数字。
这样的标识符可以在分布式系统中用于唯一标识对象、记录或事件,确保数据的一致性和准确性。IDWorker 常用于分布式系统中,可以使用不同的方式来生成唯一标识符,例如基于时间戳、序列号、机器 ID 等等。它可以在高并发环境下保证生成的唯一性,确保不会出现重复的 ID)生成的随机数,雪花算法)、订单名称(医院名称)、订单描述以及要支付的金额等参数提交给支付宝的接口,然后会跳转到支付宝的支付界面,用户可以选择扫码支付和账号密码支付,为了支付的安全性,我使用支付宝密钥生成器,配置支付宝的网关,拿着生成的参数密钥来进行网关的接口加密,保证了接口内容的传输的安全性