diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java index eb5e16c03..1d054be0e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java @@ -36,6 +36,11 @@ public enum HardPayTypeEnum { CASH ); + public static final List isNotPay = List.of( + STRIDE_DEPT_QR_CODE, + FOREIGN_TICKET_QR_CODE + ); + public static HardPayTypeEnum valueOfByType(String type) { if (ObjectUtil.isEmpty(type)) return null; return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java index df637090a..cfe417b73 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCarServiceImpl.java @@ -142,8 +142,8 @@ public class HardCarServiceImpl extends ServiceImpl { // 查询食堂商品 AtomicInteger canteenTotalPrice = new AtomicInteger(); - // 线上 if (ObjectUtil.equals(HardOrderTypeEnum.RESERVE, orderType)) { + // 线上 List supList = onlineCanteenSpuService.getSpuListByIds(productIds).getData(); for (HardCreateCarDto v : list) { supList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getProductId())).findFirst().ifPresent(spu -> { @@ -151,9 +151,8 @@ public class HardCarServiceImpl extends ServiceImpl supList = canteenSpuService.getSpuListByIds(productIds).getData(); for (HardCreateCarDto v : list) { supList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getProductId())).findFirst().ifPresent(spu -> { 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 a09fbde1b..dfe832a2c 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 @@ -216,6 +216,10 @@ public class HardOrderServiceImpl extends ServiceImpl reduceRes = walletTransactionService.reduceWalletBalance(reduceBuild); - if (reduceRes.getCode() != 0 || ObjectUtil.isEmpty(reduceRes.getData())) { - throw new RuntimeException("钱包扣款错误"); - } - WalletTransactionEntity walletTransaction = reduceRes.getData(); - if (ObjectUtil.isNotEmpty(walletTransaction)) { - // 订单表订单状态 - Integer payPrice = isPay ? order.getTotalPrice() + order.getExtraPrice() : 0; - HardOrderEntity update = HardOrderEntity.builder().id(order.getId()).payTime(LocalDateTime.now()).orderStatus(HardOrderStatusEnum.PAY.getType()).payPrice(payPrice).build(); - baseMapper.updateById(update); - // 父购物车订单表订单状态 - if (ObjectUtil.isNotEmpty(order.getParentCarId())) { - HardParentCarEntity updateParentCar = HardParentCarEntity.builder().id(order.getParentCarId()).orderStatus(HardOrderStatusEnum.PAY.getType()).build(); - hardParentCarServiceImpl.updateById(updateParentCar); + if (isPay) { + WalletBalanceTransactionDto reduceBuild = new WalletBalanceTransactionDto(); + reduceBuild.setWalletId(order.getWalletId()); + reduceBuild.setPrice(order.getPayPrice()); + reduceBuild.setBizId(String.valueOf(order.getId())); + reduceBuild.setBizType(WalletBizEnum.PAYMENT); + reduceBuild.setForce(true); + R reduceRes = walletTransactionService.reduceWalletBalance(reduceBuild); + if (reduceRes.getCode() != 0 || ObjectUtil.isEmpty(reduceRes.getData())) { + throw new RuntimeException("钱包扣款错误"); } } + // 订单表订单状态 + Integer payPrice = isPay ? order.getTotalPrice() + order.getExtraPrice() : 0; + HardOrderEntity update = HardOrderEntity.builder().id(order.getId()).payTime(LocalDateTime.now()).orderStatus(HardOrderStatusEnum.PAY.getType()).payPrice(payPrice).build(); + baseMapper.updateById(update); + // 父购物车订单表订单状态 + if (ObjectUtil.isNotEmpty(order.getParentCarId())) { + HardParentCarEntity updateParentCar = HardParentCarEntity.builder().id(order.getParentCarId()).orderStatus(HardOrderStatusEnum.PAY.getType()).build(); + hardParentCarServiceImpl.updateById(updateParentCar); + } } @Override @@ -625,8 +634,12 @@ public class HardOrderServiceImpl extends ServiceImpl { @@ -818,6 +831,9 @@ public class HardOrderServiceImpl extends ServiceImpl> appPageJoin(@ParameterObject Page page, @ParameterObject WalletForeignDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); + dto.setIsFindUsed(false); return R.ok(walletForeignService.pageJoin(page, dto)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java index 77feb45b1..5245e1065 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletStrideController.java @@ -58,6 +58,7 @@ public class WalletStrideController { public R appPageJoin(@ParameterObject Page page, @ParameterObject WalletStrideDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); + dto.setIsFindUsed(false); return R.ok(walletStrideService.pageJoin(page, dto)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java index 17a47b352..63ee374a7 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletForeignMapper.java @@ -23,6 +23,7 @@ public interface WalletForeignMapper extends PjcloudBaseMapper() .eq(WalletCodeUseEntity::getBizId, id) + .eq(WalletCodeUseEntity::getStatus, YesNoEnum.NO.getCode()) + .last(" limit 1") + .orderByDesc(WalletCodeUseEntity::getCreateTime) + .orderByDesc(WalletCodeUseEntity::getId) ); if (ObjectUtil.isEmpty(codeUse)) return null; if (ObjectUtil.equals(codeUse.getStatus(), YesNoEnum.YES.getCode())) return false; WalletCodeUseEntity updateObj = WalletCodeUseEntity.builder().id(codeUse.getId()).status(YesNoEnum.YES.getCode()).useTime(LocalDateTime.now()).build(); + // 如果是跨单位或者外来人员增加使用数量 + // 跨单位 + if (ObjectUtil.equals(codeUse.getBizType(), WalletCodeBizEnum.STRIDE.getCode())) { + WalletStrideEntity strideDetail = walletStrideService.getById(codeUse.getBizId()); + if (ObjectUtil.isNotEmpty(strideDetail)) { + WalletStrideEntity useUpdateObj = WalletStrideEntity.builder().id(strideDetail.getId()).useCount(strideDetail.getUseCount() + 1).build(); + walletStrideService.updateById(useUpdateObj); + } + } + // 外来人员 + if (ObjectUtil.equals(codeUse.getBizType(), WalletCodeBizEnum.FOREIGN.getCode())) { + WalletForeignEntity foreignDetail = walletForeignService.getById(codeUse.getBizId()); + if (ObjectUtil.isNotEmpty(foreignDetail)) { + WalletForeignEntity useUpdateObj = WalletForeignEntity.builder().id(foreignDetail.getId()).useCount(foreignDetail.getUseCount() + 1).build(); + walletForeignService.updateById(useUpdateObj); + } + } return baseMapper.updateById(updateObj) > 0; } @Override @Transactional(rollbackFor = Exception.class) public Boolean isCancelCode(Long id) { - WalletCodeUseEntity codeUse = baseMapper.selectOne(new LambdaQueryWrapper() + // 跨单位和外来人员有多张二维码 + Long count = baseMapper.selectCount(new LambdaQueryWrapper() .eq(WalletCodeUseEntity::getBizId, id) + .eq(WalletCodeUseEntity::getStatus, YesNoEnum.NO.getCode()) ); - if (ObjectUtil.isEmpty(codeUse)) return null; - return ObjectUtil.equals(codeUse.getStatus(), YesNoEnum.YES.getCode()); + return count <= 0; } /**