关于商品添加 :
首先先处理商品类目,使用RasyUI的tree
创建一个pojo来描述tree,id,text,state
根据parentId查询目录的节点,查询数据库,返回一个集合
遍历集合,创建EasyUITreeNode对象,设置对象的属性,添加到集合中
处理图片的方法,搭建fastDfs服务器,将图片上传到图片服务器上,缓解服务器的压力
使用的是KingEditor插件,富文本编辑器,
将图片上传到服务器上,使用封装好的工具类上传图片
获得图片服务器上的url以及文件名
补全完整的url
封装到一个map中
将map转换成json数据
返回一个json数据
商品添加:
dao:涉及到两张表,一个商品表,一个商品描述表,向数据库中插入数据,使用逆向工程
service层:创建一个pojo接收表单的数据
参数TbItem item,String desc
返回值添加成功,E3Result,
业务逻辑:
使用IdUtils生成id
补全item对象的属性
向商品表中插入数据
创建商品描述表的对象
补全商品描述表的对象
向商品描述表中插入数据
返回添加成功
controller层:
url:/item/save
参数:TbItem item,String desc
返回值:E3Result
调用service层的服务
查询商品列表展示:
涉及到分页查询,使用pageHelper插件
依赖的jar包添加进来,在mybatis的xml中设置拦截器
查询商品列表
dao:逆向工程
service:getItemList
参数:page,rows
返回值,EasyUIDataGridResult的对象
创建一个EasyUIDataGridResult的pojo,
设置分页信息
执行查询
返回查询结果
商品详情页面的展示
dao:展示商品详情,涉及到两张表,商品表,以及商品描述表
单表查询,直接使用逆向工程即可
service层:
商品表
先去redis缓存中查找,如果缓存查不到去数据库中查找,
根据商品id查询数据库中商品表
将数据添加到缓存中
设置过期时间
返回查询到的结果
商品描述表
先去redis缓存中查找,如果缓存查不到去数据库中查找,
根据商品id查询数据库中商品表
将数据添加到缓存中
设置过期时间
返回查询到的结果
controller层:
url:/item/{itemId}
参数:itemId,model
调用服务层的itemService的两个方法
取商品表,转换成item,
取商品描述表
将信息传递给页面
返回“item”
购物车模块:分为两种情况,
在controller写一个从cookie中获得购物车的方法
利用cookie的工具类,获得cookie中的value值(json数据)
判断json数据是否为空
空,返回一个空集合
不为空,将json数据转成商品列表
未登入
将购物车写入cookie中,
调用获得购物车的方法,取到购物车
判断cookie中的购物车是否有相同商品
有,数量相加
没有,根据id查询商品对象
设置商品的id,获取一张图片url
将商品添加到商品列表中
使用cookieUtils写入到cookie中
返回添加成功的界面:“cartSuccess”
已登入:
将购物车写入到redis服务器中
写入之前,先判断用户是否登入了
使用拦截器实现
拦截器的实现:
从cookie中获得token,判断
获取不到,用户未登入,跳转到登入页面,放行
获取到了token,调用单点登入系统,判断token中是否有user信息
没有,登入过期
有,登入状态
把用户信息放入到request中,只需要判断request中是否有user信息
需要配置拦截器
将购物车添加到redis中
使用的是hset数据类型
判断商品是否存在
存在,数量相加
不存在,根据id查询商品
设置购物车商品的数量
取一张图片
将商品添加到购物车中,写回redis中
controller层:判断用户是否登入
从request中取出user
取不到,调用未登入的购物车
取到,调用已登入的购物车(redis)
订单模块:dao层:
涉及三个表,订单表,订单商品表,订单物流表
插入三张表,单表查询,可以直接使用逆向工程
插入数据之前,判断用户是否登入,使用拦截器实现
拦截器实现:
从cookie中去token,判断是否存在
不存在,未登入,跳转到登入页面,登入成功,跳转到当前请求的url
存在,调用sso登入系统,取用户信息user
取不到,用户登入过期,未登入,跳转到登入页面,登入成功,跳转到当前请求的url
取到,将用户user放入到request中
判断cookie中是否有购物车
有,合并购物车到redis中
创建一个pojo来接受表单中的数据,继承订单表
包含订单商品表,以及订单物流表
业务逻辑:
生成订单的id,使用redis的incr生成
补全订单的属性
向订单表插入数据
向订单明细表中插入数据
生成订单明细的id
补全订单明细的属性
向订单明细表插入数据
向订单物流表中插入数据
id等于订单的id
补全属性
向订单物流表插入数据
返回E3Result.ok
controller层:
从request中取出用户的信息user
将用户信息添加到订单表中
调用service的服务,创建订单
如果订单创建成功,需要清空cookie中的购物车
把订单号传递给页面
返回逻辑视图 “success”