商品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中:一、表名就是第一层二、主键是第二层三、字段名第三次
三层使用“:”分隔做为key,value就是字段中的内容。
单点登陆:
一、可使用Session服务器,保存Session信息,使每一个节点是无状态。须要模拟Session。单点登陆系统是使用redis模拟Session,实现Session的统一管理。
用户表:用户名、密码、电话号码,邮箱,建立时间,更新时间。
登录以前作校验:
参数:从url中取参数1、String param(要校验的数据)2、Integer type(校验的数据类型)
响应的数据:json数据。e3Result,封装的数据校验的结果true:成功false:失败。
登陆的处理流程:
一、登陆页面提交用户名密码。
二、登陆成功后生成token。Token至关于原来的jsessionid,字符串,可使用uuid。
三、把用户信息保存到redis。Key就是token,value就是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) Hash的key应该是用户id。Hash中的field是商品id,value能够把商品信息转换成json
应该使用拦截器实现。
一、实现一个HandlerInterceptor接口。
二、在执行handler方法以前作业务处理
三、从cookie中取token。使用CookieUtils工具类实现。
四、没有取到token,用户未登陆。放行
五、取到token,调用sso系统的服务,根据token查询用户信息。
六、没有返回用户信息。登陆已通过期,未登陆,放行。
七、返回用户信息。用户是登陆状态。能够把用户对象保存到request中,在Controller中能够经过判断request中是否包含用户对象,肯定是否为登陆状态。
订单服务时:
一、从cookie中取token
二、若是没有取到,没有登陆,跳转到sso系统的登陆页面。拦截
三、若是取到token。判断登陆是否过时,须要调用sso系统的服务,根据token取用户信息
四、若是没有取到用户信息,登陆已通过期,从新登陆。跳转到登陆页面。拦截(登录成功返回到原来的页面可使用回调,在原页面保存url,而后登录成功返回到原来的url)
五、若是取到用户信息,用户已是登陆状态,把用户信息保存到request中。放行
六、判断cookie中是否有购物车信息,若是有合并购物车
八、