本系统采用Maven来管理和开发,属于java分布式,由nginx负载均衡,tomcat作为服务器,搭建tomcat集群,nosql redis作为缓存和数据库,
Mysql作为后台数据库,主从结构,读写分离。服务器采用linux 作为服务器。
一:sso单点登录系统
1.检测参数是否可用jqueryAjax
2.用户注册,同时检测数据的可用性
3.用户登录,登录成功,并将其用户信息存入redis缓存,同时给客户端写回缓存的redis的key,且设置其生存时间。
4. 查询用户是否已经登录,即拿着客户端的cookie去redis缓存去查。
二 :ItemSearch 商品搜索系统
1. 根据搜索条件(page pageSize) 利用httpClient去搜索系统去查询商品信息。
2. 当后台商品信息时,通过RabbitMQ中交换机给搜索系统发来监听消息,搜索系统接收商品删除.修改.增加的消息并作出相应的处理。
三. Manager-后台商品
1.添加商品基本信息,商品描述信息,商品规格信息(三张表)
通过RabbitMQ declare 的Exchange发送信息给solr(ItemSearch(搜索系统),搜索系统将其添加到document中
2.更新商品基本信息,商品描述信息,商品规格参数
通过RabbitMQ 交换机发送到web(前台系统)和ItemSearch(商品搜索系统),web删除缓存 ,搜索系统更新document
3.查询商品所有信息,先走redis缓存,找不到再查询数据库,之后再存入redis
4.查询所有商品基本信息(分页)
四.Manager-类目系统
1.通过商品类目Id(itemCatId)查询出该类目的相关信息。
2.查询出所有类目(三级)封装在一个json里面
3.根据商品类目Id(itemCatId)查询出该类目对应的规格参数名称。
4.根据商品类目Id(itemCatId)保存该类目对应的规格参数名称。
5.查询该类目对应的规格参数名称,可以用来填写该商品的规格参数。(商品有唯一对应的类目)
6.商品图片上传,保存到图片服务器。
五.Manager-crm内容管理系统
1.内容保存查询 修改 删除 且通过RabbitMQ消息通知 Web前台系统,删除redis内容缓存。
六.web前台系统
1.加载首页,从后台Manager-crm内容管理系统查询出内容,并缓存到redis中,监听消息队列,删除缓存
2.商品详情页,先从redis缓存中拿item,如果不存在,再通过httpClient查询后台系统,得出商品详细信息。
监听消息队列,当后台商品信息删除,修改时,前台收到消息,删除redis缓存对应的商品信息。
3. 购物车(未登录时)
游客第一次添加商品到购物车,解决方案是将商品放在redis缓存中,生成一个购物车cartRedisKey,并将该cartRedisKey 以cookie写回到
客户端,并设置该购物车的生存时间。购物车的数据以json格式保存在redis中。
当用户已经有cartRedisKey时候,用户会通过cookie带过来,这样就可以在Redis中找到该cartRedisKey对应的购物车,同时为保证购物车的活力,
更新他的生存时间。
4.删除购物车的商品,通过cartRediskey找到购物车,删除相应的item。再将其保存到redis缓存中,更新其生存时间,
5 . 修改和以上同理,之下是购物车的在redis中的原理图:hget hset
6.购物车(用户登录时)
系统将userId和itemId保存到购物车系统中,通过httpClient保存购物车商品信息到购物车系统。删除,更新都是通过购物车系统
提供的接口来完成删除和修改甚至保存。
7,如果用户没有登录却在一直查看商品,配置拦截器每天一次刷新购物车的生存时间。当天是否刷新过以客户端cookie为准。
8. 在购物车生成订单,之前配置用户是否登录拦截器,没有登录的重定向去登录。
9. 去sso系统登录,登录成功以后,将客户端的cookie中的cartRedisKey以及userId发送到RabbitMQ交换机,购物车队列绑定到交换机上
获取消息,合并购物车。并删除redis缓存中的购物车数据。
10. 购物车生成订单,把订单数据发送到订单系统生成订单,存到数据库。通过RabbitMQ发送消息删除购物车信息。
RabbitMQ把订单的orderId和userId发送到orderSearch系统中添加到solrdocument中。
11.搜索商品,去itemSearch系统中搜索商品,分页查询和显示。
12.会员个人中心。显示所有的订单,去订单系统中查找所有的订单。
13.会员个人中心。根据订单号 或者商品title去搜索相应的订单并分页显示。
七.订单系统
1.创建订单 查询订单 修改订单状态 根据用户昵称查询订单。
八.订单查询系统
1.根据关键字查询去查询订单,分页。
2.监听队列,有消息过来就插入订单到solrdocument中。