diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardOrderService.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardOrderService.java index e48024a33..b69f95feb 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardOrderService.java @@ -21,8 +21,10 @@ public interface RemoteHardOrderService { @GetMapping("/hard-order/get-by-ids") R> getByIds(@RequestParam List ids); - - @PostMapping("/hard-order/page") R>> getPage(@RequestParam Page page, @RequestBody HardOrderPreferencesDto hardOrderPreferencesDto); + + @NoToken + @GetMapping("/hard-order/mch-count-by-id") + R getMchCountById(@RequestParam Long id); } 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 58cb4a72e..6f5f2fa88 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 @@ -88,6 +88,16 @@ public class HardOrderController { dto.setOrderIds(ids); return R.ok(hardOrderMapper.list(dto)); } + + @Inner + @Operation(summary = "app查询订单列表", description = "app查询订单列表") + @GetMapping("/mch-count-by-id") + public R getMchCountById(@RequestParam Long id) { + LambdaQueryWrapper query = new LambdaQueryWrapper().eq(HardOrderEntity::getMerchantId, id); + Long count = hardOrderMapper.selectCount(query); + if (ObjectUtil.isEmpty(count)) count = 0L; + return R.ok(count); + } /* ************************************* end 远程调用 ************************************* */ /* ************************************* start app start ************************************* */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java index 4cf53a4a1..4e2993986 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java @@ -26,9 +26,12 @@ import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleLogMapper; import com.bsd.pjcloud.hard.service.HardAfterSaleService; import com.bsd.pjcloud.hard.service.HardOrderService; import com.bsd.pjcloud.hard.service.HardThirdSelfZyService; +import com.bsd.pjcloud.hard.zy.config.ZyCallbackConfig; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -48,11 +51,14 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { private final RemoteWalletService remoteWalletService; private final RemoteUserService remoteUserService; + private final RemoteMchService remoteMchService; private final HardOrderService hardOrderService; private final HardAfterSaleLogMapper hardAfterSaleLogMapper; private final HardAfterSaleService hardAfterSaleService; + private final ZyCallbackConfig zyCallbackConfig; + /** * 正元支付 */ @@ -69,6 +75,9 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { // 用户 UserInfo user = remoteUserService.getByUserId(wallet.getUserId()).getData(); if (ObjectUtil.isEmpty(user)) throw new RuntimeException("用户不存在"); + // 查询正元默认商户 + MchManageVo zyDefaultMch = getZyDefaultMch(); + if (ObjectUtil.isEmpty(zyDefaultMch)) throw new RuntimeException("默认商户不存在"); Integer balance = wallet.getBalance(); int totalPrice = dto.getPayPrice(); if (balance < totalPrice) { @@ -81,6 +90,9 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { HardOrderEntity orderObj = HardOrderEntity.builder() .orderNo(dto.getOrderNo()) .userId(dto.getUserId()) + .merchantId(zyDefaultMch.getId()) + .merchantType(zyDefaultMch.getTypes()) + .merchantDeptId(zyDefaultMch.getDeptId()) .userDeptId(userDetail.getSysUser().getDeptId()) .parentCarId(null) .sysType(null) @@ -172,4 +184,11 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { } } + /** + * 查询正元默认商户信息 + */ + private MchManageVo getZyDefaultMch() { + return remoteMchService.getById(zyCallbackConfig.getMchId()).getData(); + } + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/zy/config/ZyCallbackConfig.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/zy/config/ZyCallbackConfig.java new file mode 100644 index 000000000..84591da9d --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/zy/config/ZyCallbackConfig.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.hard.zy.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@ConfigurationProperties(prefix = "zy-callback") +@Component +public class ZyCallbackConfig { + + private Long mchId; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml index 98453c1fa..ff9086dc1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml @@ -16,3 +16,7 @@ spring: import: - optional:nacos:application-@profiles.active@.yml - optional:nacos:${spring.application.name}-@profiles.active@.yml + +# 正源回调配置 +#zy-callback: +# mch-id: 1909168994551459842 \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index ebbc3a64e..6b7586a53 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -301,14 +301,14 @@ public class WalletManageServiceImpl extends ServiceImpl itemList = baseMapper.selectBalance(dto); + List itemList = baseMapper.selectBalance(walletBalanceDto); if (ObjectUtil.isEmpty(itemList)) continue; for (WalletManageBalanceVo j : itemList) { - // j.setWalletTypeName(i.getName()); walletPage.getRecords().stream().filter(v -> ObjectUtil.equals(i.getId(), v.getWalletTypeId()) && ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> { if (ObjectUtil.isNotEmpty(j.getBalance())) { v.setBalance(j.getBalance()); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java index f4ef141f1..2faf3d468 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java @@ -20,6 +20,7 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.feign.RemoteHardOrderService; import com.bsd.pjcloud.hard.api.utils.Drawing2D; import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchSupType; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; @@ -67,6 +68,7 @@ public class MchManageServiceImpl extends ServiceImpl list) { if (ObjectUtil.isEmpty(list)) return; + // 判断下面是否有订单 + List mchList = baseMapper.list(MchManageDto.builder().ids(list).build()); + for (MchManageVo v : mchList) { + Long count = remoteHardOrderService.getMchCountById(v.getId()).getData(); + if (ObjectUtil.isNotEmpty(count) && count > 0) { + throw new RuntimeException("该商户<" + v.getName() + ">有订单交易记录,不能删除"); + } + } // 删除缓存 list.forEach(v -> { redisTemplate.opsForValue().getAndDelete(CacheConstants.WALLET_MCH + v);