模板商城用户端系统

模板商城用户端简介

首页部分

首页展示

在该模板系统中,所有主要业务围绕首页展开,主要关联如下几个微服务模块:商品模块、用户模块、认证模块、检索模块,购物车模块、订单模块、秒杀模块。

首页目前维护的功能展示

1.OA系统维护的菜单树展示,可点击叶子节点进入相应产品列表,由于此处是首页,考虑到访问量较大情况,菜单树庞大递归性能问题,此处将菜单数据放入缓存,由于菜单对强一致性要求不高,直接使用springCache分布式缓存完成

下面展示一些注解简单实现 具体使用参见https://spring.io/guides/gs/caching/

// 先查缓存,没有再查数据库
 @Cacheable(value = {"category"},key = "#root.method.name")

值得注意的是由于保证缓存的一致性,在菜单数据更改时,要注意同步缓存,具体的方式可以手动指定,也可以继续使用springCache,注解支持非常丰富,值得一看。当然,强一致性需求不太适用,一定要看业务需求去选择!
菜单树查看,可点击叶子节点进入相应产品列表
效果图如下:
在这里插入图片描述

2.通过搜索框输入关键字检索,此处采用ES实现。在后台商品上架时会将所有的商品信息,例如spu的信息、sku的信息、库存信息,基本属性信息等放入es存储,便于首页检索。

在这里插入图片描述
比如搜索华为,可以明显看出搜索关键字高亮处理,同时支持了属性聚合、品牌聚合、分类聚合。es学习参见springData ES
,复杂的检索聚合查询利器,且响应速度快,支持关键字高亮。在这里插入图片描述

3.首页的下图是秒杀部分,在后台OA维护的每日秒杀产品会通过跑批查询最近三天的秒杀存入redis,在秒杀时间开始后会根据存入的日期键值取出当日秒杀商品展示在首页。

在这里插入图片描述
点击秒杀商品会进入商品详情页,如图:
在这里插入图片描述
点击立即抢购前会判断用户有没有登录,登录会生成秒杀商品订单,没登录先去登录
在这里插入图片描述
然后进行支付宝付款,目前支付功能是使用的支付宝沙箱。
在这里插入图片描述
付款后的回调

在这里插入图片描述
此处笔者并没有对秒杀的库存作特殊处理,只是简单的将库存以信号量的方式存入redis,没有对数据库的库存进行同步,各位复用此代码的朋友应该特别注意。针对分布式下库存和其他功能的处理参见订单模块。此处秒杀虽然调用的订单模块进行支付,为避免混乱没有复用订单的创建订单功能,读者可以自行完善。

4.注册登录。用户注册填完基本信息,设置用户名和密码,提交之前会调用短信验证码验证是不是脚本恶意注册,短信功能使用阿里云短信。提交之后密码加密存储进数据库。登录采用社交登录和密码登录两种防止,目前社交登录只集成了微博登录,其他的社交登录读者可以自己根据相关api完成,原理基本差不多。

在这里插入图片描述

在这里插入图片描述

5.商品加入购物车,购物车结算,用户未登录也能加入购物车,以临时身份存放进Redis,这个临时身份会在cookie记录一个月,登录后从Redis取出合并放入数据库,删除Redis购物车对象,订单部分和秒杀基本走的同样流程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击去支付会进入结算页展示收货地址,运费、总金额等细节。

在这里插入图片描述

在这里插入图片描述
接下来进入付款操作,目前仅实现支付宝沙箱,读者感兴趣也可以实现微信支付,支付时由于支付宝会最大努力通知回调,一定得做好接口幂等处理。订单默认30分钟过期,当退单或者订单过期一定做好库存优惠券等的原子性。目前项目中基于rabbitMq死信队列实现了弱一致性。如果对一致性要求较强,可以选择阿里的分布式事务工具seata,简单易用,能够保证强一致性。

在这里插入图片描述

结语:

本项目纯属个人学习而开发的一款项目,并没有经过生产环境的实战检验,但实现的已有功能都尽力考虑到生产环境中尤其在并发条件下的功能问题和数据问题,文中大量用到分布式锁和分布式缓存,着力提升项目稳定性和可用性。模板商城项目在一些具体的业务细节上没有做过多实现,可以给各位留下充分的发挥空间。笔者非常希望和欢迎各位大牛提出问题,fork代码,让项目变得更好,能让笔者更进一步,哈哈。笔者由于业余时间有限,只开发了大致骨架,比如优惠券模块目前没有做处理,项目中遗留了较多有待完善的代码,比如秒杀扣的库存目前没有同步至数据库,springSession登录写了较多的冗余代码,后续考虑实现cas单点登录替代等等一系列的问题。
最后:本项目git地址和Oa项目访问地址参见如下博客
项目地址

同时感谢人人开发的作者对人人开发进行开源,个人觉得非常好用,同时感谢尚硅谷的项目静态资源和项目数据库等其他素材。
学习永不止步,生命永不沉沦,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值