diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HardCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HardCreateOrderDto.java index 17669b554..f3169e9ee 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HardCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HardCreateOrderDto.java @@ -70,6 +70,9 @@ public class HardCreateOrderDto { private Long deptId; + @Schema(description = "钱包id") + private Long walletId; + @Schema(description = "离线支付是否成功") private Boolean offlinePaySuccess; } 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 d37a9ebe3..5bf80bde9 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 @@ -51,6 +51,7 @@ import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import com.bsd.pjcloud.wallet.api.feign.*; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -251,8 +252,18 @@ public class HardOrderServiceImpl extends ServiceImpl walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.EAT); - wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + if (ObjectUtil.equals(dto.getOrderPayType(), HardPayTypeEnum.WALLET_QR_CODE)) { + if (ObjectUtil.isEmpty(dto.getWalletId())) throw new RuntimeException("钱包二维码支付错误"); + R walletResult = remoteWalletService.getWalletById(dto.getWalletId()); + WalletManageVo walletVo = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + if (!ObjectUtil.equals(walletVo.getWalletTypeUniqueCode(), WalletTypeEnum.EAT.getCode())) { + throw new RuntimeException("请使用钱包二维码支付"); + } + wallet = walletVo; + } else { + R walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.EAT); + wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + } } int totalPrice = 0, extraPrice = 0, payPrice = 0; totalPrice = hardCarService.computerCarTotalPrice(dto.getSysType(), dto.getOrderType(), dto.getList()); diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index ae2ee8705..b3d6a4d54 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -6,6 +6,7 @@ import com.bsd.pjcloud.common.feign.annotation.NoToken; import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -23,6 +24,10 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/get-wallet") R getWallet(@RequestParam Long userId, @RequestParam WalletTypeEnum walletTypeCode); + @NoToken + @GetMapping("/wallet-manage/get-wallet-by-id") + R getWalletById(@RequestParam Long walletId); + @NoToken @GetMapping("/wallet-manage/get-wallet-by-card-number") R getWalletByCardNumber(@RequestParam String cardNumber); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index 44f82797d..091b42029 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -14,6 +14,8 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; +import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import com.bsd.pjcloud.wallet.service.WalletManageService; import org.springframework.security.access.prepost.PreAuthorize; @@ -42,9 +44,10 @@ import java.util.List; public class WalletManageController { private final WalletManageService walletManageService; - private final WalletCodeUseService walletCodeUseService; + private final WalletManageMapper walletManageMapper; + /* ************************************* start 远程调用 start ************************************* */ @Inner @GetMapping("/get-or-create-wallet") @@ -71,6 +74,14 @@ public class WalletManageController { return R.ok(wallet); } + @Inner + @GetMapping("/get-wallet-by-id") + public R getWalletById(@RequestParam Long walletId) { + WalletManageVo wallet = walletManageMapper.join(walletId); + if (ObjectUtil.isEmpty(wallet)) return R.failed("用户钱包不存在"); + return R.ok(wallet); + } + @Inner @GetMapping("/get-wallet-by-card-number") public R getWalletByCardNumber(@RequestParam String cardNumber) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java index f69f42b4f..55af4c61d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java @@ -90,7 +90,7 @@ public interface WalletManageService extends IService { Page scopePageList(Page page, WalletManageDto dto); - WalletManageVo join(Long id, Long walletId); + WalletManageVo join(Long user, Long walletId); /** * 生成钱包二维码参数