diff --git a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/CartController.java b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/CartController.java index f069ac19af8e6f97b389d34b0c9ead9384d7cf3a..30c55ba81b1dffcb9429a709eebd3be57e7e3c46 100644 --- a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/CartController.java +++ b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/CartController.java @@ -1,5 +1,6 @@ package com.youlai.mall.oms.controller.app; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.youlai.common.result.Result; import com.youlai.mall.oms.pojo.vo.CartVO; import com.youlai.mall.oms.service.ICartService; @@ -27,30 +28,27 @@ public class CartController { @ApiOperation(value = "查询购物车") @GetMapping + @ApiOperationSupport(order = 1) public Result getCart() { CartVO cart = cartService.getCart(); return Result.success(cart); } - @ApiOperation(value = "全选/全不选 购物车商品") - @ApiImplicitParam(name = "checked", value = "全选/全不选", required = true, paramType = "param", dataType = "Boolean") - @PatchMapping("/_check") - public Result check(boolean checked) { - boolean result = cartService.checkAll(checked); - return Result.judge(result); - } - - @ApiOperation(value = "清空购物车") + @ApiOperation(value = "删除购物车") @DeleteMapping + @ApiOperationSupport(order = 2) public Result deleteCart() { boolean result = cartService.deleteCart(); return Result.judge(result); } + + @ApiOperation(value = "添加购物车商品") @ApiImplicitParam(name = "skuId", value = "SKU ID", required = true, paramType = "param", dataType = "Long") @PostMapping + @ApiOperationSupport(order = 3) public Result addCartItem(@RequestParam Long skuId) { cartService.addCartItem(skuId); return Result.success(); @@ -58,20 +56,30 @@ public class CartController { @ApiOperation(value = "更新购物车商品") @PutMapping("/skuId/{skuId}") + @ApiOperationSupport(order = 4) public Result updateCartItem(@PathVariable Long skuId,@RequestBody CartVO.CartItem cartItem) { cartItem.setSkuId(skuId); boolean result = cartService.updateCartItem(cartItem); return Result.judge(result); } - @ApiOperation(value = "删除购物车商品") @ApiImplicitParam(name = "skuId", value = "SKU ID", required = true, paramType = "param", dataType = "Long") @DeleteMapping("/skuId/{skuId}") + @ApiOperationSupport(order = 5) public Result removeCartItem(@PathVariable Long skuId) { boolean result = cartService.removeCartItem(skuId); return Result.judge(result); } + @ApiOperation(value = "全选/全不选购物车商品") + @ApiImplicitParam(name = "checked", value = "全选/全不选", required = true, paramType = "param", dataType = "Boolean") + @PatchMapping("/_check") + @ApiOperationSupport(order = 6) + public Result check(boolean checked) { + boolean result = cartService.checkAll(checked); + return Result.judge(result); + } + } diff --git a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/OrderController.java b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/OrderController.java index 608324c68a82b24b93519386a4351abb1e44fad2..926a92faf0b08bf029d2706ed7e3cc006ae1c7f2 100644 --- a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/OrderController.java +++ b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/controller/app/OrderController.java @@ -31,9 +31,17 @@ import java.util.List; public class OrderController { private IOrderService orderService; - private IOrderPayService orderPayService; + + @ApiOperation("订单列表") + @GetMapping + @ApiImplicitParam(name = "status", value = "订单状态", required = true, defaultValue = "0") + public Result> list(Integer status) { + List orderList = orderService.list(status); + return Result.success(orderList); + } + @ApiOperation( "订单确认") @ApiImplicitParam(name = "orderConfirm",value = "确认订单信息",required = true, paramType = "body", dataType = "OrderConfirmDTO") @PostMapping("/_confirm") @@ -69,12 +77,5 @@ public class OrderController { return Result.success(); } - @ApiOperation("订单列表") - @GetMapping - public Result> list( - @ApiParam(name = "status", value = "订单状态", required = true, defaultValue = "0") - @RequestParam(value = "status", defaultValue = "0") Integer status) { - List orderList = orderService.list(status); - return Result.success(orderList); - } + } diff --git a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/listener/OmsListener.java b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/listener/OmsListener.java index 53a5f04fd8506031c683823c4d5cb410b3edefc6..bb868a8d9cc9f2100be8bd0c4a5b935f04950110 100644 --- a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/listener/OmsListener.java +++ b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/listener/OmsListener.java @@ -32,17 +32,18 @@ public class OmsListener { */ @RabbitListener(queues = "order.close.queue") public void closeOrder(String orderToken, Message message, Channel channel) { + log.info("=======================订单超时未支付,开始系统自动关闭订单======================="); try { if (orderService.closeOrder(orderToken)) { - // 如果关单成功,释放库存 + log.info("=======================关闭订单成功,开始释放已锁定的库存======================="); skuFeignService.unlockStock(orderToken); } else { - // 如果关单失败,则订单可能已经被处理,直接手动ACK确认消息 + log.info("=======================关单失败,订单状态已处理,手动确认消息处理完毕======================="); // basicAck(tag,multiple),multiple为true开启批量确认,小于tag值队列中未被消费的消息一次性确认 channel.basicAck(message.getMessageProperties().getDeliveryTag(), true); } } catch (IOException e) { - // 消费失败后,重新入队 + log.info("=======================系统自动关闭订单消息消费失败,重新入队======================="); try { channel.basicReject(message.getMessageProperties().getDeliveryTag(), true); } catch (IOException ioException) { diff --git a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/service/impl/OrderServiceImpl.java b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/service/impl/OrderServiceImpl.java index 68e2f44c21cf1c5b14485b37e59c47a48a7ed4a0..e0a7d984d7402090d81d38693bac65ccdc16f5b9 100644 --- a/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/service/impl/OrderServiceImpl.java +++ b/mall-oms/oms-boot/src/main/java/com/youlai/mall/oms/service/impl/OrderServiceImpl.java @@ -64,6 +64,7 @@ public class OrderServiceImpl extends ServiceImpl impleme */ @Override public OrderConfirmVO confirm(OrderConfirmDTO orderConfirmDTO) { + log.info("=======================订单确认======================="); OrderConfirmVO orderConfirmVO = new OrderConfirmVO(); Long memberId = RequestUtils.getUserId(); // 获取购买商品信息 @@ -111,6 +112,7 @@ public class OrderServiceImpl extends ServiceImpl impleme }, threadPoolExecutor); CompletableFuture.allOf(orderItemsCompletableFuture, addressesCompletableFuture, orderTokenCompletableFuture).join(); + log.info("获取确认信息",orderConfirmVO.toString()); return orderConfirmVO; } @@ -120,7 +122,7 @@ public class OrderServiceImpl extends ServiceImpl impleme @Override @GlobalTransactional public OrderSubmitVO submit(OrderSubmitDTO submitDTO) { - + log.info("=======================订单提交======================="); // 订单重复提交校验 String orderToken = submitDTO.getOrderToken(); DefaultRedisScript redisScript = new DefaultRedisScript<>(RELEASE_LOCK_LUA_SCRIPT, Long.class); @@ -188,6 +190,7 @@ public class OrderServiceImpl extends ServiceImpl impleme OrderSubmitVO submitVO = new OrderSubmitVO(); submitVO.setOrderId(order.getId()); submitVO.setOrderSn(order.getOrderSn()); + log.info("订单提交返回结果:{}",submitVO.toString()); return submitVO; } @@ -259,10 +262,10 @@ public class OrderServiceImpl extends ServiceImpl impleme @Override public OmsOrder getByOrderId(Long id) { - Long userId = RequestUtils.getUserId(); + Long memberId = RequestUtils.getUserId(); OmsOrder order = this.getOne(new LambdaQueryWrapper() .eq(OmsOrder::getId, id) - .eq(OmsOrder::getMemberId, userId)); + .eq(OmsOrder::getMemberId, memberId)); if (order == null) { throw new BizException("订单不存在,订单ID非法"); } diff --git a/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/common/constant/PmsConstants.java b/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/common/constant/PmsConstants.java index 87dce3fc8973e2c0993d07beebb5d9420fd40062..126aa5ad7d60e8f5331d51dc098832b0f27754c3 100644 --- a/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/common/constant/PmsConstants.java +++ b/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/common/constant/PmsConstants.java @@ -6,7 +6,7 @@ package com.youlai.mall.pms.common.constant; */ public interface PmsConstants { - String STOCK_LOCKED_PREFIX = "stock:locked:"; + String LOCKED_STOCK_PREFIX = "stock:locked:"; String LOCK_SKU_PREFIX="lock:sku:"; } diff --git a/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java b/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java index 531a43c6cddc64bdafba120c0835518521204cc7..fa13100db41709cdab3fd04a7dd160fadce9aee2 100644 --- a/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java +++ b/mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java @@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.common.web.exception.BizException; -import com.youlai.mall.pms.common.constant.PmsConstants; import com.youlai.mall.pms.mapper.PmsSkuMapper; import com.youlai.mall.pms.pojo.domain.PmsSku; import com.youlai.mall.pms.pojo.dto.SkuDTO; @@ -24,8 +23,8 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; +import static com.youlai.mall.pms.common.constant.PmsConstants.LOCKED_STOCK_PREFIX; import static com.youlai.mall.pms.common.constant.PmsConstants.LOCK_SKU_PREFIX; -import static com.youlai.mall.pms.common.constant.PmsConstants.STOCK_LOCKED_PREFIX; @Service @Slf4j @@ -41,7 +40,8 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme */ @Override public boolean lockStock(List skuLockList) { - + log.info("=======================创建订单,开始锁定商品库存======================="); + log.info("锁定商品信息:{}", skuLockList.toString()); if (CollectionUtil.isEmpty(skuLockList)) { throw new BizException("锁定的商品列表为空"); } @@ -80,7 +80,7 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme // 将锁定的商品保存至Redis中 String orderToken = skuLockList.get(0).getOrderToken(); - redisTemplate.opsForValue().set(STOCK_LOCKED_PREFIX + orderToken, JSONUtil.toJsonStr(skuLockList)); + redisTemplate.opsForValue().set(LOCKED_STOCK_PREFIX + orderToken, JSONUtil.toJsonStr(skuLockList)); return true; } @@ -89,7 +89,9 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme */ @Override public boolean unlockStock(String orderToken) { - String json = redisTemplate.opsForValue().get(STOCK_LOCKED_PREFIX + orderToken); + log.info("=======================订单超时未支付系统自动关单释放库存======================="); + String json = redisTemplate.opsForValue().get(LOCKED_STOCK_PREFIX + orderToken); + log.info("释放库存信息:{}", json); if (StrUtil.isNotBlank(json)) { return true; } @@ -103,7 +105,7 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme ); // 删除redis中锁定的库存 - redisTemplate.opsForValue().decrement(STOCK_LOCKED_PREFIX + orderToken); + redisTemplate.delete(LOCKED_STOCK_PREFIX + orderToken); return true; } @@ -112,7 +114,9 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme */ @Override public boolean deductStock(String orderToken) { - String json = redisTemplate.opsForValue().get(STOCK_LOCKED_PREFIX + orderToken); + log.info("=======================支付成功扣减订单中商品库存======================="); + String json = redisTemplate.opsForValue().get(LOCKED_STOCK_PREFIX + orderToken); + log.info("订单商品信息:{}", json); if (StrUtil.isBlank(json)) { return true; } @@ -131,7 +135,7 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme }); // 删除redis中锁定的库存 - redisTemplate.opsForValue().decrement(STOCK_LOCKED_PREFIX + orderToken); + redisTemplate.delete(LOCKED_STOCK_PREFIX + orderToken); return true; } @@ -148,7 +152,7 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme public Integer getStockById(Long id) { Integer stock = 0; // 读->缓存 - Object cacheVal = redisTemplate.opsForValue().get(STOCK_LOCKED_PREFIX + id); + Object cacheVal = redisTemplate.opsForValue().get(LOCKED_STOCK_PREFIX + id); if (cacheVal != null) { stock = Convert.toInt(cacheVal); return stock; @@ -162,7 +166,7 @@ public class PmsSkuServiceImpl extends ServiceImpl impleme if (pmsSku != null) { stock = pmsSku.getStock(); // 写->缓存 - redisTemplate.opsForValue().set(PmsConstants.STOCK_LOCKED_PREFIX + id, String.valueOf(stock)); + redisTemplate.opsForValue().set(LOCKED_STOCK_PREFIX + id, String.valueOf(stock)); } return stock; diff --git a/youlai-common/common-web/src/main/resources/logback-spring.xml b/youlai-common/common-web/src/main/resources/logback-spring.xml index f3a33e8417a520642fc7981a7ea1a0517e24716f..410c9c689f99f7f57d1f91d723314a103b670ba3 100644 --- a/youlai-common/common-web/src/main/resources/logback-spring.xml +++ b/youlai-common/common-web/src/main/resources/logback-spring.xml @@ -60,7 +60,8 @@ - + + INFO