use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.
the class MainTest method test1.
@Test
public void test1() {
TbUserService tbUserService = applicationContext.getBean(TbUserService.class);
TbUser tbUser = tbUserService.findById((long) 1);
System.out.println(tbUser);
}
use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.
the class CartController method addCart.
/**
* 添加商品到购物车, 返回购物车添加成功页面
*
* @param itemId
* 商品id
* @param num
* 商品数量
* @return 购物车页面
*/
@GetMapping("/add/{itemId}")
private String addCart(@PathVariable Long itemId, @RequestParam(defaultValue = "1") Integer num, HttpServletRequest request, HttpServletResponse response) {
/*
* 1. 判断用户是否登录
* 登录状态: 把购物车写入redis, 保存到服务端, 返回逻辑视图
* 未登录:
* 从cookie中取得购物车列表
* 判断商品是否存在:
* 存在: 数量相加
* 不存在: 根据商品id查询商品信息, 得到tbItem对象
* 把商品添加到商品列表, 写入cookie, 保存到客户端, 返回添加成功页面
*/
// 判断用户是否登录
TbUser tbUser = (TbUser) request.getAttribute("user");
if (tbUser != null) {
// 登录状态, 把购物车写入redis, 保存到服务端
cartService.addCart(tbUser.getId(), itemId, num);
return "cartSuccess";
}
// 用户未登录, 把购物车写入cookie, 保存到客户端
List<TbItem> cartList = this.getCartListFromCookie(request);
// 标识是存在商品
boolean flag = false;
for (TbItem tbItem : cartList) {
if (tbItem.getId() == itemId.longValue()) {
// 包装类型互相比较, 必须转成基础类型, 有一方为基础类型,另一方会自动拆箱
flag = true;
// 存在商品, 数量相加
tbItem.setNum(tbItem.getNum() + num);
// 根据id找,只可能存在一个商品,跳出循环
break;
}
}
// 不存在
if (!flag) {
TbItem tbItem = tbItemService.getTbItemById(itemId);
// 设置商品数量
tbItem.setNum(num);
// 取得第一张图片
String image = tbItem.getImage();
if (StringUtils.isNotBlank(image)) {
tbItem.setImage(image.split(",")[0]);
}
// 把商品添加到购物车列表
cartList.add(tbItem);
}
// 写入cookie
CookieUtils.setCookie(request, response, COOKIE_CART, JSON.toJSONString(cartList), COOKIE_CART_EXPIRE, true);
// 返回添加购物车成功页面
return "cartSuccess";
}
use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.
the class CartController method updateCartNum.
/**
* 更新购物车商品商品数量
*
* @param itemId
* 商品id
* @param num
* 商品修改后的数量
* @return
*/
@PostMapping("/update/num/{itemId}/{num}")
@ResponseBody
public E3Result updateCartNum(@PathVariable Long itemId, @PathVariable Integer num, HttpServletRequest request, HttpServletResponse response) {
// 判断用户是否登录
TbUser tbUser = (TbUser) request.getAttribute("user");
if (tbUser != null) {
cartService.updateCartNum(tbUser.getId(), itemId, num);
return E3Result.ok();
}
// 从cookie取得购物车列表
List<TbItem> cartList = this.getCartListFromCookie(request);
// 遍历商品列表找到对应商品
for (TbItem tbItem : cartList) {
if (tbItem.getId() == itemId.longValue()) {
// 更新数量
tbItem.setNum(num);
break;
}
}
// 把购物车列表写回cookie
CookieUtils.setCookie(request, response, COOKIE_CART, JSON.toJSONString(cartList), COOKIE_CART_EXPIRE, true);
// 返回成功
return E3Result.ok();
// 解决请求*.html后缀无法返回json数据的问题, 在web.xml里添加一个url-pattern的拦截格式
}
use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.
the class LoginInterceptor method preHandle.
/**
* 拦截处理程序的执行。在HandlerMapping之后调用确定了合适的处理程序对象,但在HandlerAdapter调用处理程序之前调用。
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
/*
* return true: 放行, false: 拦截
* 1. 从cookie中取token
* 没有token: 未登录状态, 直接放行
* 有token:
* 1). 调用sso系统的服务,根据token取用户信息
* 没有用户信息: 登录过期, 直接放行
* 有用户信息: 登录状态, 把用户信息放到request中, 只需要在controller中判断request中是否包含user信息.放行
*/
// 从cookie中取token
String token = CookieUtils.getCookieValue(request, TOKEN_KEY);
// 如果没有token,直接放行
if (StringUtils.isBlank(token)) {
return true;
}
// 取得token, 调用sso系统服务,根据token取用户信息
E3Result e3Result = tokenService.getUserByToken(token);
if (!e3Result.isSuccess()) {
// 没有用户信息
return true;
}
// 取得用户信息
TbUser tbUser = (TbUser) e3Result.getData();
request.setAttribute("user", tbUser);
return true;
}
use of cn.e3mall.manager.pojo.TbUser in project e3mall by colg-cloud.
the class TbUserServiceImpl method userLogin.
@Override
public E3Result userLogin(String username, String password) {
// 校验数据
if (StringUtils.isBlank(username)) {
return E3Result.fail(400, "请输入用户名");
}
if (StringUtils.isBlank(password)) {
return E3Result.fail(400, "请输入密码");
}
TbUser tbUser = tbUserMapper.findByUserNameAndPassword(username, DigestUtils.md5DigestAsHex(password.getBytes()));
if (tbUser == null) {
// 返回登录失败
return E3Result.fail(400, "用户名或密码错误");
}
// 生成token
// 密码不要存redis
tbUser.setPassword(null);
String token = UUID.randomUUID().toString().replace("-", "").toUpperCase();
String key = TOKEN_KEY + ":" + token;
jedisClient.set(key, JSON.toJSONString(tbUser));
jedisClient.expire(key, TOKEN_EXPIRE);
return E3Result.ok(token);
}
Aggregations