项目总结

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

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

内容服务系统:

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

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

首页展示加缓存,使用hash数据类型,哈希的表名自己定义比如content,因为是固定的,单独分离出来写在配置文件中。

Key:cid

Value:内容列表。需要把java对象转换成json。(writeValueAsString)

搜索用like %name%.

展示商品详情时:根据商品id查询商品信息(tb_item)得到一个TbItem对象,缺少images属性,可以创建一个pojo继承TbItem,添加一个getImages方法。

展示商品数据时添加缓存,设置缓存过期时间缓解数据压力。由于hash不能设置某个filed的过期时间。

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

如果把二维表保存到redis:1、表名就是第一层2、主键是第二层3、字段名第三次

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

单点登录:

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

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

登陆之前做校验:

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

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

登录的处理流程:

1、登录页面提交用户名密码。

2、登录成功后生成tokenToken相当于原来的jsessionid,字符串,可以使用uuid

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

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

5、设置key的过期时间。模拟Session的过期时间。一般半个小时。

6、token写入cookie中。

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

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

9、登录成功。

添加购物车

在不登陆的情况下也可以添加购物车。把购物车信息写入cookie

优点:1、不占用服务端存储空间2、用户体验好。3、代码实现简单。

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

1、cookie中查询商品列表。2、判断商品在商品列表中是否存在。3、如果存在,商品数量相加。4、不存在,根据商品id查询商品信息。5、把商品添加到购车列表。

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

 

登录状态下,需要把购物车数据保存到服务端。需要永久保存,可以保存到数据库中。可以把购物车数据保存到redis中。

2、redis使用的数据类型

 

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

 

判断用户是否登录

应该使用拦截器实现。

1、实现一个HandlerInterceptor接口。

2、在执行handler方法之前做业务处理

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

4、没有取到token,用户未登录。放行

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

6、没有返回用户信息。登录已经过期,未登录,放行。

7、返回用户信息。用户是登录状态。可以把用户对象保存到request中,在Controller中可以通过判断request中是否包含用户对象,确定是否为登录状态。

订单服务时:

 

1、cookie中取token

 

2、如果没有取到,没有登录,跳转到sso系统的登录页面。拦截

 

3、如果取到token。判断登录是否过期,需要调用sso系统的服务,根据token取用户信息

 

4、如果没有取到用户信息,登录已经过期,重新登录。跳转到登录页面。拦截(登陆成功返回到原来的页面可以使用回调,在原页面保存url,然后登陆成功返回到原来的url)

 

5、如果取到用户信息,用户已经是登录状态,把用户信息保存到request中。放行

 

6、判断cookie中是否有购物车信息,如果有合并购物车

 

 

 

 

8、

 

posted @ 2018-08-20 00:06  Crazy、baby  阅读(104)  评论(0编辑  收藏