From 2d0151b1c35a420aab5648fe1edc768ea2b15b64 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 16 Jun 2025 11:16:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:app=E5=88=9B=E5=BB=BA=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E8=B6=85=E5=B8=82=E9=A2=84=E5=AE=9A=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/order/HardOrderController.java | 19 ++++- .../hard/service/HardOrderService.java | 7 +- .../impl/order/HardOrderServiceImpl.java | 69 +++++++++++++++++++ 3 files changed, 93 insertions(+), 2 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index ac7c979e2..3c35a300f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -161,7 +161,7 @@ public class HardOrderController { return R.ok(hardwareOrderService.join(id)); } - @Operation(summary = "app创建订单", description = "app创建订单") + @Operation(summary = "app创建食堂预定订单", description = "app创建食堂预定订单") @GetMapping("/app/create-order") @Idempotent(expireTime = 3, info = "正在创建订单中,请勿重复操作") public R appCreateOrder(@RequestParam Long carParentId, @RequestParam Long apptId, @RequestParam HardTypeEnum hardType) { @@ -170,6 +170,23 @@ public class HardOrderController { return R.ok(hardwareOrderService.appCreateOrder(dto)); } + @Operation(summary = "app创建线上超市预定订单", description = "app创建线上超市预定订单") + @GetMapping("/app/create-supermarket-order") + @Idempotent(expireTime = 3, info = "正在创建订单中,请勿重复操作") + public R appCreateSupermarketReserveOrder(@RequestParam Long carParentId, @RequestParam HardTypeEnum hardType) { + PjcloudUser user = SecurityUtils.getUser(); + HardAppCreateOrderDto dto = HardAppCreateOrderDto.builder() + .carParentId(carParentId).walletType(WalletTypeEnum.EAT) + .hardType(hardType) + .userId(user.getId()) + .walletType(WalletTypeEnum.PAY) + .orderType(HardOrderTypeEnum.RESERVE) + .payType(HardPayTypeEnum.WALLET_DEFAULT) + .hardType(HardTypeEnum.SUPERMARKET) + .build(); + return R.ok(hardwareOrderService.appCreateSupermarketReserveOrder(dto)); + } + @Operation(summary = "app创建订单扫一扫", description = "app创建订单扫一扫") @PostMapping("/app/create-order-scan-qrcode") @Idempotent(expireTime = 5, info = "正在创建订单中,请勿重复操作") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index ba614d93b..51336d73e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -43,10 +43,15 @@ public interface HardOrderService extends IService { Long createOrder(HardCreateOrderDto dto); /** - * 创建app订单 + * app创建食堂预定订单 */ Long appCreateOrder(@Valid HardAppCreateOrderDto dto); + /** + * app创建线上超市预定订单 + */ + Long appCreateSupermarketReserveOrder(HardAppCreateOrderDto dto); + /** * 创建app订单 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index e983d182a..9d73f71cf 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -412,6 +412,75 @@ public class HardOrderServiceImpl extends ServiceImpl carList = hardCarService.getByParentCarId(dto.getCarParentId()); + if (ObjectUtil.isEmpty(carList)) throw new RuntimeException("购物车不存在"); + Integer balance = wallet.getBalance(); + int totalPrice = (int) carList.stream().mapToLong(HardCarEntity::getTotalPrice).sum(); + if (balance < totalPrice) { + throw new RuntimeException("钱包余额不足"); + } + // 获取商品描述 + List carListDto = carList.stream().map(v -> { + HardCreateCarDto entity = new HardCreateCarDto(); + entity.setParentCarId(dto.getCarParentId()); + entity.setProductId(v.getProductId()); + entity.setProductWeight(v.getProductWeight()); + entity.setProductCount(v.getProductCount()); + return entity; + }).toList(); + HardTypeEnum hardType = ObjectUtil.equals(dto.getWalletType(), WalletTypeEnum.EAT) ? HardTypeEnum.CANTEEN : HardTypeEnum.SUPERMARKET; + String subject = hardCarService.computerCarSubject(hardType, dto.getOrderType(), carListDto); + // 添加硬件订单 + HardOrderEntity orderObj = HardOrderEntity.builder() + .userId(dto.getUserId()) + .userDeptId(userDetail.getSysUser().getDeptId()) + .parentCarId(dto.getCarParentId()) + .sysType(dto.getHardType().getType()) + .orderStatus(HardOrderStatusEnum.CREATE.getType()) + .merchantId(parentCar.getMerchantId()) + .merchantType(hardManager.getTypes()) + .merchantDeptId(hardManager.getDeptId()) + .orderType(dto.getOrderType().getType()) + .payType(dto.getPayType().getType()) + .orderSourceTypeId(dto.getOrderSourceTypeId()) + .totalPrice(totalPrice) + .extraPrice(0) + .payPrice(totalPrice) + .isOfflineOrder(YesNoEnum.NO.getCode()) + .productDesc(subject) + .walletId(wallet.getId()) + .build(); + baseMapper.insert(orderObj); + // 钱包扣款 + getSelf().fastReduceBalance(orderObj); + // 创建二维码 + getSelf().generateCode(orderObj); + // 发送mq消息 + getSelf().createOrderAfterSendMqMsg(orderObj.getId(), userDetail); + // 扣减库存 + getSelf().fastenerInventory(orderObj, YesNoEnum.YES); + return orderObj.getId(); + } + @Override // @GlobalTransactional @Transactional(rollbackFor = Exception.class)