项目总结

商品id生成策略:当前时间毫秒值+两位随机数,不足两位前面补零。(因为须要不断的导入导出,不适合自增加)java

添加商品,返回的是自定义结构(包括响应状态,响应消息,响应数据),查询商品表和商品描述表。redis

内容服务系统:数据库

内容分类表:tb_content_category   id,名字,是否父节点,父id。主键返回。   json

内容表:tb_content   id,分类id,标题,副标题,url,图片,建立时间,更新时间。跨域

首页展现加缓存,使用hash数据类型,哈希的表名本身定义好比content,由于是固定的,单独分离出来写在配置文件中。浏览器

Key:cid缓存

Value:内容列表。须要把java对象转换成json。(writeValueAsString)服务器

搜索用like %name%.cookie

展现商品详情时:根据商品id查询商品信息(tb_item)获得一个TbItem对象,缺乏images属性,能够建立一个pojo继承TbItem,添加一个getImages方法。session

展现商品数据时添加缓存,设置缓存过时时间缓解数据压力。因为hash不能设置某个filed的过时时间。

须要使用String类型来保存商品数据。能够加前缀方法对象redis中的key进行归类。ITEM_INFO:123456:BASE、ITEM_INFO:123456:DESC。value就是商品数据

若是把二维表保存到redis:一、表名就是第一层二、主键是第二层三、字段名第三次

三层使用:”分隔做为keyvalue就是字段中的内容。

单点登陆:

一、可使用Session服务器,保存Session信息,使每一个节点是无状态。须要模拟Session单点登陆系统是使用redis模拟Session,实现Session的统一管理。

用户表:用户名、密码、电话号码,邮箱,建立时间,更新时间。

登录以前作校验:

参数:从url中取参数1String param(要校验的数据)2Integer type(校验的数据类型)

 响应的数据:json数据。e3Result,封装的数据校验的结果true:成功false:失败。

登陆的处理流程:

一、登陆页面提交用户名密码。

二、登陆成功后生成tokenToken至关于原来的jsessionid,字符串,可使用uuid

三、把用户信息保存到redisKey就是tokenvalue就是TbUser对象转换成json

四、使用String类型保存Session信息。可使用“前缀:token”为key

五、设置key的过时时间。模拟Session的过时时间。通常半个小时。

六、token写入cookie中。

七、Cookie须要跨域。例如www.e3.com\sso.e3.com\order.e3.com,可使用工具类。

八、Cookie的有效期。关闭浏览器失效。

九、登陆成功。

添加购物车

在不登录的状况下也能够添加购物车。把购物车信息写入cookie

优势:一、不占用服务端存储空间二、用户体验好。三、代码实现简单。

缺点:一、cookie中保存的容量有限。最大4k   二、把购物车信息保存在cookie中,更换设备购物车信息不能同步。

一、cookie中查询商品列表。二、判断商品在商品列表中是否存在。三、若是存在,商品数量相加。四、不存在,根据商品id查询商品信息。五、把商品添加到购车列表。

六、把购车商品列表写入cookie

 

登陆状态下,须要把购物车数据保存到服务端。须要永久保存,能够保存到数据库中。能够把购物车数据保存到redis中。

二、redis使用的数据类型

 

a) 使用hash数据类型b) Hashkey应该是用户idHash中的field是商品idvalue能够把商品信息转换成json

 

判断用户是否登陆

应该使用拦截器实现。

一、实现一个HandlerInterceptor接口。

二、在执行handler方法以前作业务处理

三、cookie中取token。使用CookieUtils工具类实现。

四、没有取到token,用户未登陆。放行

五、取到token,调用sso系统的服务,根据token查询用户信息。

六、没有返回用户信息。登陆已通过期,未登陆,放行。

七、返回用户信息。用户是登陆状态。能够把用户对象保存到request中,在Controller中能够经过判断request中是否包含用户对象,肯定是否为登陆状态。

订单服务时:

 

一、cookie中取token

 

二、若是没有取到,没有登陆,跳转到sso系统的登陆页面。拦截

 

三、若是取到token。判断登陆是否过时,须要调用sso系统的服务,根据token取用户信息

 

四、若是没有取到用户信息,登陆已通过期,从新登陆。跳转到登陆页面。拦截(登录成功返回到原来的页面可使用回调,在原页面保存url,而后登录成功返回到原来的url)

 

五、若是取到用户信息,用户已是登陆状态,把用户信息保存到request中。放行

 

六、判断cookie中是否有购物车信息,若是有合并购物车

 

 

 

 

八、

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息