您的位置:首页 > 数据库

登录后,实现cookie信息和数据库信息的合并

2016-09-20 18:50 190 查看
购物车流程图:

逻辑:当用户登录之后,判断cookie中是否有购物车信息,如果有,和用户数据库中的购物车商品完成合并,如果cookie中没有购物车信息直接完成登录。



用户发起请求登录,前端控制器UserController调用SSO(单点登录)的一个接口,进行登录验证,成功后返回ticket,不成功返回error状态;登录成功还需发一条消息到(RabbitMQ的交换机),拿到这条消息的应用程序(RabbitMQ)绑定了消息队列,监听消息的应用程序得到这个消息后,做自己的业务逻辑,完成redis和数据库中购物车商品的合并。

发送的消息内容应当包含:1.用户——>> userId

2.redis中购物车信息——>> cookie中key——>>TT_CART



要想得到未登录前cookie中的商品信息,需要把用户登录时的cookie信息传递给controller,controller调用service,service,调用SSO登录验证,并把
cookie中的key
连同
userId
传递给RabbitMq的消息队列 :
this.rabbitTemplate.converAndSend(msg)


更改UserService中的dologin()方法和UserController的dologin()方法,如下



UserController.dologin()接受cookie



这样就把cookie中key传递到了业务逻辑中。

第二步,在
SSO
中接收
params.put("data",cartKey)
data参数
,并实现发送消息到
RabbitMQ的消息交换机




并配置MQ:



这样,消息就发送出来了。

第三步,在taotao-cart中监听队列消息并且完成数据的合并

首先来配置rabbitMQ队列的监听:

监听的类:
loginCarHandler


监听的队列:
taotao-car-login




处理逻辑:







完成队列和交换机的绑定



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: