use of com.xatu.gmall.annotations.LoginRequired in project GMall by 18391713434.
the class CartController method addToCart.
@LoginRequired(loginSuccess = false)
@RequestMapping("/addToCart")
public String addToCart(String skuId, int quantity, HttpServletRequest request, HttpServletResponse response) {
// 调用商品服务查询商品信息
PmsSkuInfo pmsSkuInfo = skuService.getSkuById(skuId);
// 将商品信息封装成购物车信息
OmsCartItem omsCartItem = new OmsCartItem();
omsCartItem.setCreateDate(new Date());
omsCartItem.setDeleteStatus(0);
omsCartItem.setModifyDate(new Date());
omsCartItem.setPrice(BigDecimal.valueOf(pmsSkuInfo.getPrice()));
omsCartItem.setProductAttr("");
omsCartItem.setProductBrand("");
omsCartItem.setProductCategoryId(pmsSkuInfo.getCatalog3Id());
omsCartItem.setProductId(Long.valueOf(pmsSkuInfo.getSpuId()));
omsCartItem.setProductName(pmsSkuInfo.getSkuName());
omsCartItem.setProductPic(pmsSkuInfo.getSkuDefaultImg());
omsCartItem.setProductSkuCode("1111111111");
omsCartItem.setProductSkuId(Long.valueOf(skuId));
omsCartItem.setQuantity(quantity);
// 判断用户是否登录
String memberId = (String) request.getAttribute("memberId");
String nickname = (String) request.getAttribute("nickname");
if (StringUtils.isBlank(memberId)) {
// 用户未登录
List<OmsCartItem> omsCartItems = new ArrayList<>();
// 判断用户本地是由有cookie信息
String cartListCookie = CookieUtil.getCookieValue(request, "cartListCookie", true);
if (cartListCookie != null) {
// cookie不为空
omsCartItems = JSON.parseArray(cartListCookie, OmsCartItem.class);
boolean exist = if_cart_exist(omsCartItems, omsCartItem);
// 判断当点添加的商品在我们的购物车是否存在
if (exist) {
// 之前添加过,更新操作
for (OmsCartItem cartItem : omsCartItems) {
String productSkuId = cartItem.getProductSkuId().toString();
if (productSkuId.equals(omsCartItem.getProductSkuId())) {
cartItem.setQuantity(cartItem.getQuantity() + omsCartItem.getQuantity());
cartItem.setPrice(cartItem.getPrice().add(omsCartItem.getPrice()));
}
}
} else {
// 之前没有添加过
omsCartItems.add(omsCartItem);
}
} else {
// cookie为空
omsCartItems.add(omsCartItem);
}
CookieUtil.setCookie(request, response, "cartListCookie", JSON.toJSONString(omsCartItems), 60 * 60 * 72, true);
} else {
// 用户已登录
// 在db中查询购物车数据
OmsCartItem omsCartItemFromDB = cartService.getCartExistByUser(memberId, skuId);
if (omsCartItemFromDB == null) {
// 购物车中没有该商品
omsCartItem.setMemberId(Long.valueOf(memberId));
cartService.addCartIterm(omsCartItem);
} else {
// 购物车中有该商品 直接更新数据库
omsCartItemFromDB.setQuantity(omsCartItem.getQuantity());
cartService.updateCarItem(omsCartItemFromDB);
}
// 同步缓存
cartService.flushCache(memberId);
}
return "redirect:/success.html";
}
use of com.xatu.gmall.annotations.LoginRequired in project GMall by 18391713434.
the class OrderController method toTrade.
@LoginRequired(loginSuccess = true)
@RequestMapping("/toTrade")
public String toTrade(HttpServletRequest request, HttpServletResponse response, HttpSession session, ModelMap modelMap) {
String memberId = (String) request.getAttribute("memberId");
String nickname = (String) request.getAttribute("nickname");
// 收件人地址列表
List<MemberReceiveAddress> receiveAddressesByMemberId = userService.getReceiveAddressByMemberId(memberId);
modelMap.put("userAddressList", receiveAddressesByMemberId);
// 将购物车集合转换为页面计算 清单集合
List<OmsCartItem> omsCartItems = cartService.carList(memberId);
List<OmsOrderItem> omsOrderItems = new ArrayList<>();
for (OmsCartItem omsCartItem : omsCartItems) {
if (omsCartItem.getIsChecked().equals("1")) {
// 每循环一个购物车对象,封装一个商品的详情到OmsOrderItem
OmsOrderItem omsOrderItem = new OmsOrderItem();
omsOrderItem.setProductName(omsCartItem.getProductName());
omsOrderItem.setProductPrice(omsCartItem.getPrice());
omsOrderItem.setProductQuantity(omsCartItem.getQuantity());
omsOrderItem.setProductPic(omsCartItem.getProductPic());
omsOrderItems.add(omsOrderItem);
}
}
modelMap.put("omsOrderItems", omsOrderItems);
BigDecimal totalAmount = getTotalAmount(omsOrderItems);
modelMap.put("totalAmount", totalAmount.toString());
// 生成交易码,为了在提交订单时做交易码的校验
String tradeCode = orderService.genTradeCode(memberId);
modelMap.put("tradeCode", tradeCode);
return "trade";
}
use of com.xatu.gmall.annotations.LoginRequired in project GMall by 18391713434.
the class SeckillController method kill2.
/**
* 使用Redission
* @return
*/
@RequestMapping("/kill2")
@ResponseBody
@LoginRequired(loginSuccess = true)
public String kill2() {
String memberId = "1";
Jedis jedis = redisUtil.getJedis();
// 开启商品监控
RSemaphore semaphore = redissonClient.getSemaphore("106");
boolean b = semaphore.tryAcquire();
if (b) {
System.out.println("成功");
// 用消息队列发送订单消息
} else {
System.out.println("失败");
}
jedis.close();
return "success";
}
use of com.xatu.gmall.annotations.LoginRequired in project GMall by 18391713434.
the class SeckillController method kill.
@RequestMapping("/kill")
@ResponseBody
@LoginRequired(loginSuccess = true)
public String kill() {
String memberId = "1";
Jedis jedis = redisUtil.getJedis();
// 开启商品监控
jedis.watch("106");
if (Integer.parseInt(jedis.get("106")) > 0) {
Transaction multi = jedis.multi();
jedis.incrBy("106", -1);
List<Object> exec = multi.exec();
if (exec != null && exec.size() > 0) {
System.out.println("成功");
// 用消息队列发送订单消息
} else {
System.out.println("失败");
}
}
jedis.close();
return "success";
}
use of com.xatu.gmall.annotations.LoginRequired in project GMall by 18391713434.
the class PaymentController method alipay.
@RequestMapping("/alipay/submit")
@LoginRequired(loginSuccess = true)
@ResponseBody
public String alipay(String outTradeNo, BigDecimal totalAmount, HttpServletRequest request, ModelMap modelMap) {
String form = null;
AlipayTradePayRequest alipayTradePayRequest = new AlipayTradePayRequest();
// 回调函数地址
alipayTradePayRequest.setReturnUrl(AlipayConfig.return_payment_url);
alipayTradePayRequest.setNotifyUrl(AlipayConfig.notify_payment_url);
Map<String, Object> map = new HashMap<>();
map.put("out_trade_no", outTradeNo);
map.put("product_code", "FAST_INSTANT_TRADB_PAY");
map.put("total_amount", totalAmount);
map.put("subject", "华为p40徕卡八摄影");
String mapJSONStr = JSON.toJSONString(map);
alipayTradePayRequest.setBizContent(mapJSONStr);
// 获得一个支付宝请求客户端(它并不是一个连接,而是一个封装号的http的表单请求)
try {
form = alipayClient.pageExecute(alipayTradePayRequest).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
// 生成并保存用户的支付信息
OmsOrder omsOrder = orderService.getOrderByOutTradeNo(outTradeNo);
PaymentInfo paymentInfo = new PaymentInfo();
paymentInfo.setCreateTime(new Date());
paymentInfo.setOrderId(omsOrder.getId().toString());
paymentInfo.setPaymentStatus("未付款");
paymentInfo.setSubject("GMALL商城商品一件");
paymentInfo.setTotalAmount(totalAmount);
paymentService.savePaymentInfo(paymentInfo);
// 向消息中间件发送一个检查支付状态(支付服务消费)的延迟消息队列
paymentService.sendDelayPaymentCheckQueue(outTradeNo, 5);
return form;
}
Aggregations