JAVA全系列 教程
3762个小节阅读:7095.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在进行购物车操作之前,要先获取用户的Id,而用户的令牌中只保存了用户名,所以我们要修改JWT工具类,让令牌中也保存用户的Id:
修改JWT工具类
xxxxxxxxxx
public class JWTUtil {
//token过期时间,一天
private static final Long EXPIRE_DATE = 1000*60*60*24L;
// 秘钥
private static final String SECRET = "baizhan";
// 签发者
private static final String ISSUER = "BAIZHAN";
/**
* 签名生成
* @param shoppingUser
* @return
*/
public static String sign(ShoppingUser shoppingUser){
String token = JWT.create()
.withIssuer(ISSUER) // 签发者
.withIssuedAt(new Date()) // 签发时间
.withExpiresAt(new Date(new Date().getTime() + EXPIRE_DATE)) // 过期时间
.withSubject(shoppingUser.getUsername()) // 保存用户名
.withClaim("userId",shoppingUser.getId()) // 保存用户id
.sign(Algorithm.HMAC256(SECRET)); // 秘钥
return token;
}
/**
* 签名解析
* @param token 签名字符串
* @return 解析得出的用户名
*/
public static String verify(String token){
try {
String username = JWT
.require(Algorithm.HMAC256(SECRET))
.withIssuer(ISSUER)
.build()
.verify(token)
.getSubject();
return username;
} catch (Exception e){
throw new BusException(CodeEnum.VERIFY_TOKEN_ERROR);
}
}
/**
* 签名解析,获取用户id
* @param token 签名字符串
* @return 用户id
*/
public static Long getId(String token){
try {
Long userId = JWT
.require(Algorithm.HMAC256(SECRET))
.withIssuer(ISSUER)
.build()
.verify(token)
.getClaim("userId")
.asLong();
return userId;
} catch (Exception e){
throw new BusException(CodeEnum.VERIFY_TOKEN_ERROR);
}
}
}
在购物车Api模块编写购物车控制器
xxxxxxxxxx
/**
* 购物车
*/
@RestController
@RequestMapping("/user/cart")
public class CartController {
@DubboReference
private CartService cartService;
/**
* 查询用户购物车
* @param token 用户令牌
* @return 用户购物车列表
*/
@GetMapping("/findCartList")
public BaseResult<List<CartGoods>> findCartList(@RequestHeader String token){
Long userId = JWTUtil.getId(token); // 获取用户id
List<CartGoods> cartList = cartService.findCartList(userId);
return BaseResult.ok(cartList);
}
/**
* 新增商品到购物车
* @param cartGoods 购物车商品
* @param token 用户令牌
* @return 操作结果
*/
@PostMapping("/addCart")
public BaseResult addCart(@RequestBody CartGoods cartGoods,@RequestHeader String token){
Long userId = JWTUtil.getId(token); // 获取用户id
cartService.addCart(userId,cartGoods);
return BaseResult.ok();
}
/**
* 修改购物车商品数量
* @param token 用户令牌
* @param goodId 商品id
* @param num 修改后的数量
* @return 操作结果
*/
@GetMapping("/handleCart")
public BaseResult addCart(@RequestHeader String token,Long goodId,Integer num){
Long userId = JWTUtil.getId(token); // 获取用户id
cartService.handleCart(userId,goodId,num);
return BaseResult.ok();
}
/**
* 删除购物车商品
* @param token 用户令牌
* @param goodId 商品id
* @return 操作结果
*/
@DeleteMapping("/deleteCart")
public BaseResult addCart(@RequestHeader String token,Long goodId){
Long userId = JWTUtil.getId(token); // 获取用户id
cartService.deleteCartOption(userId,goodId);
return BaseResult.ok();
}
}