From 02c011a7324b4466a6ccfc83a6464876d89ce6eb Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 6 May 2025 20:23:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AC=AC=E4=B8=89=E6=96=B9=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/constant/order/HardOrderTypeEnum.java | 4 +- .../api/feign/RemoteHardThirdPayService.java | 16 +- .../pjcloud/hard/config/LbCallbackConfig.java | 7 +- .../third/HardThirdPayController.java | 21 ++- .../hard/service/HardThirdPayService.java | 14 +- .../impl/order/HardAfterSaleServiceImpl.java | 8 +- .../impl/order/HardOrderServiceImpl.java | 2 +- .../impl/third/HardThirdPayServiceImpl.java | 161 ++++++++++++++---- .../src/main/resources/application.yml | 8 +- .../constant/pay/ThirdPayApiBizTypeEnum.java | 1 + .../constant/pay/ThirdPayVoStatusEnum.java | 2 + .../pjcloud/thirdparty/dto/pay/RefundDto.java | 12 +- .../pjcloud/thirdparty/dto/pay/WaterDto.java | 26 +++ .../thirdparty/vo/pay/PayGetWalletInfoVo.java | 24 +++ .../pjcloud/thirdparty/vo/pay/PayWaterVo.java | 71 ++++++++ .../pjcloud/thirdparty/vo/pay/RefundVo.java | 2 +- .../controller/pay/ThirdPayApiController.java | 14 +- .../service/ThirdPayApiService.java | 6 + .../impl/pay/ThirdPayApiServiceImpl.java | 62 ++++++- .../src/main/resources/doc/第三方支付文档.wps | Bin 90112 -> 130560 bytes .../java/com/bsd/pjcloud/admin/PayTest.java | 44 ++++- .../admin/api/feign/RemoteUserService.java | 4 + .../admin/controller/SysUserController.java | 11 +- 23 files changed, 450 insertions(+), 70 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/WaterDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayGetWalletInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java index 0532ba06e..2e6dc277c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderTypeEnum.java @@ -18,7 +18,7 @@ public enum HardOrderTypeEnum { FOREIGN_TICKET("3", "外来人员"), STRIDE_DEPT("4", "跨单位"), ZY("5", "正元公务餐"), - LB("5", "宁波银行(美好生活)"), + LB("6", "宁波银行(美好生活)"), ; private final String type; private final String description; @@ -28,7 +28,7 @@ public enum HardOrderTypeEnum { return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); } - public static final List refundList = List.of(BELOW, RESERVE, FOREIGN_TICKET, ZY); + public static final List refundList = List.of(BELOW, RESERVE, FOREIGN_TICKET, ZY, LB); public static final List payList = List.of(BELOW, RESERVE); diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardThirdPayService.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardThirdPayService.java index 1ac6810e9..a23916164 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardThirdPayService.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/feign/RemoteHardThirdPayService.java @@ -2,17 +2,23 @@ package com.bsd.pjcloud.hard.api.feign; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.feign.annotation.NoToken; +import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; +import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto; import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo; import com.bsd.pjcloud.thirdparty.vo.pay.PayVo; +import com.bsd.pjcloud.thirdparty.vo.pay.PayWaterVo; import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; + @FeignClient(contextId = "remoteHardThirdPayService", value = ServiceNameConstants.HARDWARE_SERVICE) public interface RemoteHardThirdPayService { /** @@ -20,13 +26,19 @@ public interface RemoteHardThirdPayService { */ @NoToken @PostMapping("/hard-third-pay/wallet-pay") - PayBaseVo walletPay(@RequestBody PayDto dto, @RequestParam WalletTypeEnum walletType); + PayBaseVo walletPay(@RequestBody PayDto dto, @RequestParam WalletTypeEnum walletType, @RequestParam ThirdPaySoureBizTypeEnum soureType); /** * 第三方退款 */ @NoToken @PostMapping("/hard-third-pay/wallet-refund") - PayBaseVo walletRefund(@RequestBody RefundDto dto); + PayBaseVo walletRefund(@RequestBody RefundDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType); + /** + * 第三方退款 + */ + @NoToken + @PostMapping("/hard-third-pay/water") + PayBaseVo> waterList(@RequestBody WaterDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/LbCallbackConfig.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/LbCallbackConfig.java index 27f33778f..383a73cf4 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/LbCallbackConfig.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/LbCallbackConfig.java @@ -5,10 +5,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data -@ConfigurationProperties(prefix = "lb-callback") +@ConfigurationProperties(prefix = "pay-callback") @Component public class LbCallbackConfig { - private Long mchId; + /** + * 宁波银行(美好生活)商户id + */ + private Long lbMchId; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdPayController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdPayController.java index 9e99f50ba..b6900d15d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdPayController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdPayController.java @@ -3,10 +3,13 @@ package com.bsd.pjcloud.hard.controller.third; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.hard.service.HardThirdPayService; +import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; +import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto; import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo; import com.bsd.pjcloud.thirdparty.vo.pay.PayVo; +import com.bsd.pjcloud.thirdparty.vo.pay.PayWaterVo; import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import io.swagger.v3.oas.annotations.Operation; @@ -16,6 +19,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/hard-third-pay") @@ -29,16 +34,24 @@ public class HardThirdPayController { @PostMapping("/wallet-pay") @SysLog("第三方支付") @Operation(summary = "第三方支付") - public PayBaseVo walletPay(@RequestBody PayDto dto, @RequestParam WalletTypeEnum walletType) { - return hardThirdPayService.walletPay(dto, walletType); + public PayBaseVo walletPay(@RequestBody PayDto dto, @RequestParam WalletTypeEnum walletType, @RequestParam ThirdPaySoureBizTypeEnum soureType) { + return hardThirdPayService.walletPay(dto, walletType, soureType); } @Inner @PostMapping("/wallet-refund") @SysLog("第三方退款") @Operation(summary = "第三方退款") - public PayBaseVo walletRefund(@RequestBody RefundDto dto) { - return hardThirdPayService.walletRefund(dto); + public PayBaseVo walletRefund(@RequestBody RefundDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType) { + return hardThirdPayService.walletRefund(dto, soureType); + } + + @Inner + @PostMapping("/water") + @SysLog("获取流水") + @Operation(summary = "获取流水") + public PayBaseVo> waterList(@RequestBody WaterDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType) { + return hardThirdPayService.waterList(dto, soureType); } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdPayService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdPayService.java index e06ed18c0..5974e89b5 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdPayService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdPayService.java @@ -1,21 +1,31 @@ package com.bsd.pjcloud.hard.service; +import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; +import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto; import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo; import com.bsd.pjcloud.thirdparty.vo.pay.PayVo; +import com.bsd.pjcloud.thirdparty.vo.pay.PayWaterVo; import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import java.util.List; + public interface HardThirdPayService { /** * 第三方支付 */ - PayBaseVo walletPay(PayDto dto, WalletTypeEnum walletType); + PayBaseVo walletPay(PayDto dto, WalletTypeEnum walletType, ThirdPaySoureBizTypeEnum soureType); /** * 第三方退款 */ - PayBaseVo walletRefund(RefundDto dto); + PayBaseVo walletRefund(RefundDto dto, ThirdPaySoureBizTypeEnum soureType); + + /** + * 获取流水 + */ + PayBaseVo> waterList(WaterDto dto, ThirdPaySoureBizTypeEnum soureType); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index 3ca2d74de..1fa879bba 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -221,7 +221,11 @@ public class HardAfterSaleServiceImpl extends ServiceImpl walletRefundResult = walletRechargeService.refund(hardRefundDto); if (walletRefundResult.getCode() != 0 || ObjectUtil.isEmpty(walletRefundResult.getData())) { throw new RuntimeException("钱包退款错误"); @@ -232,7 +236,7 @@ public class HardAfterSaleServiceImpl extends ServiceImpl userIds = list.getRecords().stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList(); if (ObjectUtil.isNotEmpty(userIds)) { - R> userList = userService.getUserById(new ArrayList<>(userIds)); + R> userList = userService.getInnerUserById(new ArrayList<>(userIds)); if (ObjectUtil.isNotEmpty(userList.getData())) { DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java index f9935e3d3..6e1a915fd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java @@ -1,10 +1,11 @@ package com.bsd.pjcloud.hard.service.impl.third; import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; @@ -16,24 +17,26 @@ import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardAfterSaleOperateTypeEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleStatusEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleTypeEnum; -import com.bsd.pjcloud.hard.api.constant.third.HardCallbackPayStatus; -import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; +import com.bsd.pjcloud.hard.api.vo.order.HardOrderPayTypeVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; -import com.bsd.pjcloud.hard.api.vo.third.HardCallbackPayVo; import com.bsd.pjcloud.hard.config.LbCallbackConfig; import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleLogMapper; import com.bsd.pjcloud.hard.service.HardAfterSaleService; import com.bsd.pjcloud.hard.service.HardCarService; import com.bsd.pjcloud.hard.service.HardOrderService; import com.bsd.pjcloud.hard.service.HardThirdPayService; +import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum; import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayVoStatusEnum; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; +import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto; import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo; import com.bsd.pjcloud.thirdparty.vo.pay.PayVo; +import com.bsd.pjcloud.thirdparty.vo.pay.PayWaterVo; import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; @@ -42,12 +45,12 @@ 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.joda.time.DateTimeUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; @Validated @@ -74,11 +77,12 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { */ @Override @Transactional(rollbackFor = Exception.class) - public PayBaseVo walletPay(PayDto dto, WalletTypeEnum walletType) { + public PayBaseVo walletPay(PayDto dto, WalletTypeEnum walletType, ThirdPaySoureBizTypeEnum soureType) { PayBaseVo baseVo = new PayBaseVo(); try { + String orderType = getOrderType(soureType); // 默认商户 - MchManageVo defaultMch = getLbDefaultMch(); + MchManageVo defaultMch = getLbDefaultMch(soureType); if (ObjectUtil.isEmpty(defaultMch)) { baseVo.set(ThirdPayVoStatusEnum.MCH_EXIST); return baseVo; @@ -95,6 +99,16 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { baseVo.set(ThirdPayVoStatusEnum.USER_EXIST); return baseVo; } + // 改订单号是否重复 + long orderCount = hardOrderService.count(new LambdaQueryWrapper() + .eq(HardOrderEntity::getOrderNo, dto.getThirdOrderId()) + .eq(HardOrderEntity::getOrderType, orderType) + .eq(HardOrderEntity::getOrderStatus, HardOrderStatusEnum.PAY.getType()) + ); + if (orderCount > 0) { + baseVo.set(ThirdPayVoStatusEnum.ORDER_HAVE_PAY); + return baseVo; + } // 判断余额 Integer balance = wallet.getBalance(); int totalPrice = dto.getPrice(); @@ -102,12 +116,15 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { baseVo.set(ThirdPayVoStatusEnum.BALANCE_NOT_ENOUGH); return baseVo; } - List products = dto.getProducts(); - for (PayDto.Product v : products) { - if (!ObjectUtil.isAllNotEmpty(v.getName(), v.getCount(), v.getPrice())) continue; - products.add(v); + List products = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(dto.getProducts())) { + for (PayDto.Product v : dto.getProducts()) { + if (!ObjectUtil.isAllNotEmpty(v.getName(), v.getCount(), v.getPrice())) continue; + if (v.getCount() <= 0) continue; + products.add(v); + } } - String subject = "美好生活物品 * ?"; + String subject = "美好生活物品*?"; Integer orderTotalPrice = dto.getPrice(); Long parentCarId = null; if (ObjectUtil.isNotEmpty(products)) { @@ -127,11 +144,11 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { .userDeptId(userDetail.getSysUser().getDeptId()) .sysType(HardTypeEnum.OTHER.getType()) .orderStatus(HardOrderStatusEnum.CREATE.getType()) - .orderType(HardOrderTypeEnum.LB.getType()) + .orderType(orderType) .payType(HardPayTypeEnum.WALLET_CARD.getType()) .orderSourceTypeId(null) .totalPrice(orderTotalPrice) - .extraPrice(0) + .extraPrice(dto.getPrice() - orderTotalPrice) .payPrice(dto.getPrice()) .isOfflineOrder(YesNoEnum.NO.getCode()) .productDesc(subject) @@ -149,9 +166,10 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { baseVo.setData(payVo); return baseVo; } catch (Exception e) { - log.error("|{}|第三方支付异常dto|{}|walletType|{}|error|{}|", TAG, JSONUtil.toJsonStr(dto), walletType, e.getMessage()); - baseVo.set(ThirdPayVoStatusEnum.UNKNOWN_ERROR); - return baseVo; + String msg = String.format("|%s|第三方支付异常dto|%s|walletType|%s|", TAG, JSONUtil.toJsonStr(dto), walletType); + log.error(msg, e.getMessage()); + // 抛出错误 + throw new RuntimeException(msg); } } @@ -160,18 +178,34 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { */ @Override @Transactional(rollbackFor = Exception.class) - public PayBaseVo walletRefund(RefundDto dto) { + public PayBaseVo walletRefund(RefundDto dto, ThirdPaySoureBizTypeEnum soureType) { PayBaseVo baseVo = new PayBaseVo(); try { - // 查询用户 - UserInfo userDetail = userService.getInnerByUserId(dto.getUserId()).getData(); - if (ObjectUtil.isEmpty(userDetail)) { - baseVo.set(ThirdPayVoStatusEnum.USER_EXIST); + String orderType = getOrderType(soureType); + // 订单是否存在 + long orderCount = hardOrderService.count(new LambdaQueryWrapper() + .eq(HardOrderEntity::getId, dto.getPlatformOrderId()) + .eq(HardOrderEntity::getOrderType, orderType) + .eq(HardOrderEntity::getOrderStatus, HardOrderStatusEnum.PAY.getType()) + ); + if (orderCount <= 0) { + baseVo.set(ThirdPayVoStatusEnum.ORDER_EXIST); return baseVo; } + // 退款id是否重复 + long refundCount = hardAfterSaleService.count(new LambdaQueryWrapper() + .eq(HardAfterSaleEntity::getNo, dto.getThirdRefundId()) + .eq(HardAfterSaleEntity::getType, HardSaleTypeEnum.AFTER_SALE.getType()) + .eq(HardAfterSaleEntity::getStatus, HardSaleStatusEnum.COMPLETE.getStatus()) + ); + if (refundCount > 0) { + baseVo.set(ThirdPayVoStatusEnum.ORDER_HAVE_REFUND); + return baseVo; + } + // 是否已退款 HardOrderVo order = hardAfterSaleService.validateOrderCanRefund(Long.valueOf(dto.getPlatformOrderId())); - if (ObjectUtil.isEmpty(userDetail)) { - baseVo.set(ThirdPayVoStatusEnum.ORDER_EXIST); + if (ObjectUtil.isEmpty(order)) { + baseVo.set(ThirdPayVoStatusEnum.ORDER_HAVE_REFUND); return baseVo; } // 添加售后订单 @@ -181,7 +215,7 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { saveObj.setNo(dto.getThirdRefundId()); saveObj.setWay("10"); saveObj.setOrderId(order.getId()); - saveObj.setRefundPrice(order.getPayPrice()); + saveObj.setRefundPrice(dto.getPrice()); saveObj.setUserId(order.getUserId()); saveObj.setAuditUserId(null); saveObj.setAuditTime(LocalDateTime.now()); @@ -212,19 +246,82 @@ public class HardThirdPayServiceImpl implements HardThirdPayService { baseVo.setData(refundVo); return baseVo; } catch (Exception e) { - log.error("|{}|第三方退款dto|{}|error|{}|", TAG, JSONUtil.toJsonStr(dto), e.getMessage()); - baseVo.set(ThirdPayVoStatusEnum.UNKNOWN_ERROR); - return baseVo; + String msg = String.format("|%s|第三方退款错误,dto|%s|", TAG, JSONUtil.toJsonStr(dto)); + log.error(msg, e.getMessage()); + // 抛出错误 + throw new RuntimeException(msg); } } + /** + * 获取流水 + */ + @Override + public PayBaseVo> waterList(WaterDto dto, ThirdPaySoureBizTypeEnum soureType) { + String orderType = getOrderType(soureType); + Page page = new Page<>(); + page.setCurrent(dto.getCurrent()); + page.setSize(dto.getSize()); + HardOrderDto query = new HardOrderDto(); + query.setOrderType(orderType); + if (ObjectUtil.isNotEmpty(dto.getOrderStatus())) { + query.setOrderStatus(dto.getOrderStatus()); + } + Page pageList = hardOrderService.scopePageList(page, query, null); + List records = pageList.getRecords(); + List list = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(pageList.getRecords())) { + for (HardOrderVo v : records) { + PayWaterVo item = new PayWaterVo(); + item.setUserId(v.getUserId()); + item.setName(v.getUsername()); + item.setSignPhone(""); + item.setPlatformOrderId(String.valueOf(v.getId())); + item.setPlatformRefundId(String.valueOf(v.getPayRefundId())); + item.setThirdOrderId(v.getOrderNo()); + item.setThirdRefundId(""); + item.setOrderStatus(v.getOrderStatus()); + item.setOrderPrice(v.getPayPrice()); + item.setRefundPrice(v.getRefundPrice()); + if (ObjectUtil.isNotEmpty(v.getPayTime())) { + item.setPayTime(LocalDateTimeUtil.format(v.getPayTime(), DatePattern.NORM_DATETIME_PATTERN)); + } + if (ObjectUtil.isNotEmpty(v.getRefundTime())) { + item.setRefundTime(LocalDateTimeUtil.format(v.getRefundTime(), DatePattern.NORM_DATETIME_PATTERN)); + } + list.add(item); + } + } + PayBaseVo baseVo = new PayBaseVo>(); + baseVo.set(ThirdPayVoStatusEnum.SUCCESS); + baseVo.setData(list); + return baseVo; + } + /** * 查询美好生活默认商户信息 */ - private MchManageVo getLbDefaultMch() { - MchManageVo defaultMch = mchService.getById(lbCallbackConfig.getMchId()).getData(); - log.info("查询美好生活默认商户信息 mchId |{}|defaultMch{}", lbCallbackConfig.getMchId(), JSONUtil.toJsonStr(defaultMch)); - return defaultMch; + private MchManageVo getLbDefaultMch(ThirdPaySoureBizTypeEnum type) { + switch (type) { + case LB -> { + Long lbMchId = lbCallbackConfig.getLbMchId(); + if (ObjectUtil.isNotEmpty(lbMchId)) { + MchManageVo defaultMch = mchService.getById(lbMchId).getData(); + log.info("查询美好生活默认商户信息 mchId |{}|defaultMch{}", lbCallbackConfig.getLbMchId(), JSONUtil.toJsonStr(defaultMch)); + return defaultMch; + } + } + } + return null; + } + + private String getOrderType(ThirdPaySoureBizTypeEnum type) { + switch (type) { + case LB -> { + return HardOrderTypeEnum.LB.getType(); + } + } + return null; } /** 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 ff9086dc1..b0027050e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/application.yml @@ -18,5 +18,9 @@ spring: - optional:nacos:${spring.application.name}-@profiles.active@.yml # 正源回调配置 -#zy-callback: -# mch-id: 1909168994551459842 \ No newline at end of file +# zy-callback: +# mch-id: 1909168994551459842 + +# 第三方回调配置 +# pay-callback: +# lb-mch-id: 1919673632357584898 diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayApiBizTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayApiBizTypeEnum.java index e7c3219a3..acc1ab5ba 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayApiBizTypeEnum.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayApiBizTypeEnum.java @@ -15,6 +15,7 @@ public enum ThirdPayApiBizTypeEnum { PAY("10", "支付"), REFUND("20", "退款"), WALLET_INFO("30", "钱包详情"), + WATER("40", "流水"), ; private final String type; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayVoStatusEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayVoStatusEnum.java index 057450c69..325b595ba 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayVoStatusEnum.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayVoStatusEnum.java @@ -20,6 +20,8 @@ public enum ThirdPayVoStatusEnum { ORDER_EXIST(502, "订单不存在"), MCH_EXIST(503, "第三方商户未配置"), BALANCE_NOT_ENOUGH(505, "用户余额不足"), + ORDER_HAVE_PAY(506, "订单已支付"), + ORDER_HAVE_REFUND(507, "订单已退款"), UNKNOWN_ERROR(599, "未知错误,请联系管理员"), ; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/RefundDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/RefundDto.java index 64ef13c0e..c4e9894d1 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/RefundDto.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/RefundDto.java @@ -1,28 +1,28 @@ package com.bsd.pjcloud.thirdparty.dto.pay; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; @Data public class RefundDto { - /** - * 用户id - */ - private Long userId; - /** * 平台唯一订单号 */ + @NotEmpty(message = "平台唯一订单号不能为空") private String platformOrderId; /** - * 第三方退款单号 + * 第三方退款流水号 */ + @NotEmpty(message = "第三方退款流水号不能为空") private String thirdRefundId; /** * 退款金额(单位分) */ + @NotNull(message = "退款金额不能为空") private Integer price; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/WaterDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/WaterDto.java new file mode 100644 index 000000000..b813e5652 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/pay/WaterDto.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.thirdparty.dto.pay; + +import lombok.Data; + +@Data +public class WaterDto { + + /** + * 当前页号(默认1) + */ + private Long current; + + /** + * 当前页数据条数(默认100,最大200) + */ + private Long size; + + /** + * 订单状态 + * 1创建订单(未支付) + * 5已经支付 + * 10退款 + */ + private String orderStatus; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayGetWalletInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayGetWalletInfoVo.java new file mode 100644 index 000000000..07e8d1bd6 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayGetWalletInfoVo.java @@ -0,0 +1,24 @@ +package com.bsd.pjcloud.thirdparty.vo.pay; + +import lombok.Data; + +@Data +public class PayGetWalletInfoVo { + + /** + * sm4加密后的手机号 + */ + private String signPhone; + + /** + * 用户真实姓名 + */ + private String name; + + /** + * 用户余额(分) + */ + private int balance; + + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java new file mode 100644 index 000000000..572fc0264 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java @@ -0,0 +1,71 @@ +package com.bsd.pjcloud.thirdparty.vo.pay; + +import lombok.Data; + +@Data +public class PayWaterVo { + + /** + * 用户id + */ + private Long userId; + + /** + * 用户真实姓名 + */ + private String name; + + /** + * sm4加密后的手机号 + */ + private String signPhone; + + /** + * 平台订单id + */ + private String platformOrderId; + + /** + * 平台退款id + */ + private String platformRefundId; + + /** + * 第三方订单id + */ + private String thirdOrderId; + + /** + * 第三方退款id + */ + private String thirdRefundId; + + /** + * 订单状态 + * 1创建订单(未支付) + * 5已经支付 + * 10退款 + */ + private String orderStatus; + + /** + * 订单价格(分) + */ + private Integer orderPrice; + + /** + * 退款金额(分) + */ + private Integer refundPrice; + + /** + * 支付时间(yyyy-MM-dd HH:mm:ss格式) + */ + private String payTime; + + /** + * 退款时间(yyyy-MM-dd HH:mm:ss格式) + */ + private String refundTime; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/RefundVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/RefundVo.java index 106b4b8e0..26055eb09 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/RefundVo.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/RefundVo.java @@ -32,7 +32,7 @@ public class RefundVo { private Integer price; /** - * 退款时间 + * 退款时间(yyyy-MM-dd HH:mm:ss格式) */ private String refundTime; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/pay/ThirdPayApiController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/pay/ThirdPayApiController.java index 9171614ab..35d596b8e 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/pay/ThirdPayApiController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/pay/ThirdPayApiController.java @@ -6,10 +6,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.thirdparty.dto.pay.PayGetWalletInfoDto; import com.bsd.pjcloud.thirdparty.service.ThirdPayApiService; import com.bsd.pjcloud.thirdparty.service.ThirdPayLogService; -import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo; -import com.bsd.pjcloud.thirdparty.vo.pay.PayVo; -import com.bsd.pjcloud.thirdparty.vo.pay.PayWalletInfoVo; -import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo; +import com.bsd.pjcloud.thirdparty.vo.pay.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; @@ -18,6 +15,7 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; /** @@ -56,5 +54,13 @@ public class ThirdPayApiController { return thirdPayApiService.walletRefund(body, headers); } + @Inner(value = false) + @Operation(summary = "流水查询", description = "流水查询") + @PostMapping("/water") + public PayBaseVo> water(HttpEntity httpEntity, @RequestHeader Map headers) { + String body = httpEntity.getBody(); + return thirdPayApiService.water(body, headers); + } + } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdPayApiService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdPayApiService.java index 350370b9e..1f947dd25 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdPayApiService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdPayApiService.java @@ -6,6 +6,7 @@ import com.bsd.pjcloud.thirdparty.dto.pay.PayGetWalletInfoDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; import com.bsd.pjcloud.thirdparty.vo.pay.*; +import java.util.List; import java.util.Map; public interface ThirdPayApiService { @@ -24,4 +25,9 @@ public interface ThirdPayApiService { * 根据加密的手机号查询用户钱包信息 */ PayBaseVo getWalletInfo(String json, Map headers); + + /** + * 流水查询 + */ + PayBaseVo> water(String json, Map headers); } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/pay/ThirdPayApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/pay/ThirdPayApiServiceImpl.java index 75d672032..b9272d4c7 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/pay/ThirdPayApiServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/pay/ThirdPayApiServiceImpl.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayVoStatusEnum; import com.bsd.pjcloud.thirdparty.dto.pay.PayDto; import com.bsd.pjcloud.thirdparty.dto.pay.PayGetWalletInfoDto; import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto; +import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto; import com.bsd.pjcloud.thirdparty.entity.ThirdKeyManageEntity; import com.bsd.pjcloud.thirdparty.entity.api.ThirdPayLogEntity; import com.bsd.pjcloud.thirdparty.service.ThirdKeyManageService; @@ -24,9 +25,11 @@ import jakarta.validation.ConstraintViolation; import jakarta.validation.Validation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.List; import java.util.Map; import java.util.Set; @@ -68,8 +71,10 @@ public class ThirdPayApiServiceImpl implements ThirdPayApiService { } PayDto dto = JSONUtil.toBean(json, PayDto.class); Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(dto); - if (ObjectUtil.isEmpty(dto)) { + if (ObjectUtil.isNotEmpty(validate)) { + String firstError = validate.iterator().next().getMessage(); baseVo.set(ThirdPayVoStatusEnum.PARAMS_ERROR); + baseVo.setMessage(firstError); // 日志 logObj.setRes(JSONUtil.toJsonStr(baseVo)); logObj.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); @@ -78,7 +83,7 @@ public class ThirdPayApiServiceImpl implements ThirdPayApiService { } // 开始支付 try { - PayBaseVo payVoPayBaseVo = hardThirdPayService.walletPay(dto, WalletTypeEnum.PAY); + PayBaseVo payVoPayBaseVo = hardThirdPayService.walletPay(dto, WalletTypeEnum.PAY, ThirdPaySoureBizTypeEnum.valueOfByType(keySetting.getBizType())); if (ObjectUtil.isEmpty(payVoPayBaseVo)) { throw new RuntimeException("支付失败"); } @@ -117,8 +122,11 @@ public class ThirdPayApiServiceImpl implements ThirdPayApiService { return baseVo; } RefundDto dto = JSONUtil.toBean(json, RefundDto.class); - if (ObjectUtil.isEmpty(dto)) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(dto); + if (ObjectUtil.isNotEmpty(validate)) { + String firstError = validate.iterator().next().getMessage(); baseVo.set(ThirdPayVoStatusEnum.PARAMS_ERROR); + baseVo.setMessage(firstError); // 日志 logObj.setRes(JSONUtil.toJsonStr(baseVo)); logObj.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); @@ -127,7 +135,7 @@ public class ThirdPayApiServiceImpl implements ThirdPayApiService { } // 开始退款 try { - PayBaseVo payVoPayBaseVo = hardThirdPayService.walletRefund(dto); + PayBaseVo payVoPayBaseVo = hardThirdPayService.walletRefund(dto, ThirdPaySoureBizTypeEnum.valueOfByType(keySetting.getBizType())); if (ObjectUtil.isEmpty(payVoPayBaseVo)) { throw new RuntimeException("退款失败"); } @@ -210,4 +218,50 @@ public class ThirdPayApiServiceImpl implements ThirdPayApiService { return baseVo; } + /** + * 流水查询 + */ + @Override + public PayBaseVo> water(String json, Map headers) { + // 日志 + long startTime = System.currentTimeMillis(); + ThirdPayLogEntity logObj = ThirdPayLogEntity.builder().apiUrl("/third/third-pay-api/water").bizType(ThirdPayApiBizTypeEnum.WATER.getType()).req(json).paySourceType(ThirdPaySoureBizTypeEnum.LB.getType()).build(); + // 开始处理 + PayBaseVo baseVo = new PayBaseVo(); + ThirdKeyManageEntity keySetting = keyManageService.checkSignAndReturnConfig(json, headers); + if (ObjectUtil.isEmpty(keySetting)) { + baseVo.set(ThirdPayVoStatusEnum.SIGN_ERROR); + // 日志 + logObj.setRes(JSONUtil.toJsonStr(baseVo)); + logObj.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); + payLogService.save(logObj); + return baseVo; + } + // 处理一下查询参数 + WaterDto dto = JSONUtil.toBean(json, WaterDto.class); + if (ObjectUtil.isEmpty(dto.getCurrent())) dto.setCurrent(1L); + if (ObjectUtil.isEmpty(dto.getSize())) dto.setSize(100L); + if (dto.getSize() > 200L) dto.setSize(200L); + try { + PayBaseVo> pageList = hardThirdPayService.waterList(dto, ThirdPaySoureBizTypeEnum.valueOfByType(keySetting.getBizType())); + if (ObjectUtil.isEmpty(pageList.getData())) { + baseVo.set(ThirdPayVoStatusEnum.UNKNOWN_ERROR); + baseVo.setData(pageList.getData()); + // 日志 + logObj.setRes(JSONUtil.toJsonStr(baseVo)); + logObj.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); + payLogService.save(logObj); + return baseVo; + } + return pageList; + } catch (Exception e) { + log.error("|{}|流水查询,json|{}|headers|{}|", TAG, json, headers, e); + baseVo.set(ThirdPayVoStatusEnum.UNKNOWN_ERROR); + // 日志 + logObj.setRes(JSONUtil.toJsonStr(baseVo)); + logObj.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); + payLogService.save(logObj); + return baseVo; + } + } } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps index 79e2003ba95934cd8bfa27992e502196a278c503..3341d2e9994e81a3f7b69312f09200d4f9024032 100644 GIT binary patch delta 12109 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 delta 6570 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 paramsMap = new HashMap<>(); - // paramsMap.put("userId", 1875049673022279681L); - paramsMap.put("thirdOrderId", "1"); + paramsMap.put("userId", 1875049673022279681L); + paramsMap.put("thirdOrderId", "5"); paramsMap.put("price", 100); paramsMap.put("products", null); String body = JSONUtil.toJsonStr(paramsMap); @@ -71,7 +74,22 @@ public class PayTest { @Test public void walletCarPay() throws Exception { ThirdKeyManageEntity config = getLbConfig(); + // 购物车 + List> carList = new ArrayList<>(); + for (int i = 0; i < 3; i++) { + int index = i + 1; + Map item = new HashMap<>(); + item.put("name", "商品-" + index); + item.put("pic", "https://cdn-mms.hktvmall.com/HKTV/mms/uploadProductImage/bf8b/516f/5211/mNyyBROdFu20240514003744_1200.png"); + item.put("price", index * 100); + item.put("count", index); + carList.add(item); + } Map paramsMap = new HashMap<>(); + paramsMap.put("userId", 1875049673022279681L); + paramsMap.put("thirdOrderId", System.currentTimeMillis()); + paramsMap.put("price", 1500); + paramsMap.put("products", carList); String body = JSONUtil.toJsonStr(paramsMap); // 发送请求 String res = HttpRequest.post(baseUrl + walletPayUrl).contentType("application/json").header(apiCountersign(body)).body(body).execute().body(); @@ -83,12 +101,34 @@ public class PayTest { public void walletRefund() throws Exception { ThirdKeyManageEntity config = getLbConfig(); Map paramsMap = new HashMap<>(); + paramsMap.put("platformOrderId", "1919704180908027905"); + paramsMap.put("thirdRefundId", "10"); + paramsMap.put("price", "1000"); String body = JSONUtil.toJsonStr(paramsMap); // 发送请求 String res = HttpRequest.post(baseUrl + walletRefundUrl).contentType("application/json").header(apiCountersign(body)).body(body).execute().body(); log.info(res); } + // 查询流水 + @Test + public void water() throws Exception { + ThirdKeyManageEntity config = getLbConfig(); + Map paramsMap = new HashMap<>(); + paramsMap.put("current", 1); + paramsMap.put("size", 500); + /** + * 1创建订单(未支付) + * 5已经支付 + * 10退款 + */ + paramsMap.put("orderStatus", "10"); + String body = JSONUtil.toJsonStr(paramsMap); + // 发送请求 + String res = HttpRequest.post(baseUrl + waterUrl).contentType("application/json").header(apiCountersign(body)).body(body).execute().body(); + log.info(res); + } + private ThirdKeyManageEntity getLbConfig() { return keyManageService.get(ThirdKeyTypeEnum.LB); } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java index 1c3e0ba04..dcf42f978 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java @@ -83,6 +83,10 @@ public interface RemoteUserService { @PostMapping("/user/list") R> getUserById(@RequestBody List userIds); + @NoToken + @PostMapping("/user/inner/list") + R> getInnerUserById(@RequestBody List userIds); + @PostMapping("/user/user-dept") R> getUserDeptByIds(@RequestBody List userIds); diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 054a6c223..41d68b6e4 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -396,15 +396,18 @@ public class SysUserController { /** * 根据IDS获取用户列表 - * - * @param userIds ID列表 - * @return 用户列表 */ @PostMapping("/list") public R> getUserListByIds(@RequestBody List userIds) { return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); } + @Inner + @PostMapping("/inner/list") + public R> getInnerUserListByIds(@RequestBody List userIds) { + return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); + } + @PostMapping("/user-dept") public R> getUserDeptByIds(@RequestBody List userIds) { return R.ok(userService.getUserDeptByIds(userIds)); @@ -439,7 +442,7 @@ public class SysUserController { LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(mobile), SysUser::getPhone, mobile); sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(name), SysUser::getName, name); - sysUserLambdaQueryWrapper.eq(null!=userId,SysUser::getUserId, userId); + sysUserLambdaQueryWrapper.eq(null != userId, SysUser::getUserId, userId); List list = userService.listScope(sysUserLambdaQueryWrapper); return R.ok(list); }