mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into feature/mall_product
# Conflicts: # sql/mysql/mall.sql # sql/mysql/ruoyi-vue-pro.sql # yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java # yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java # yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialUserService.java
This commit is contained in:
		@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
 | 
			
		||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletPageReqVO;
 | 
			
		||||
@@ -26,12 +25,10 @@ import javax.annotation.Resource;
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.enums.UserTypeEnum.MEMBER;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
 | 
			
		||||
 | 
			
		||||
@Tag(name = "管理后台 - 用户钱包")
 | 
			
		||||
@RestController
 | 
			
		||||
@@ -50,6 +47,7 @@ public class PayWalletController {
 | 
			
		||||
    @Operation(summary = "获得用户钱包明细")
 | 
			
		||||
    public CommonResult<PayWalletRespVO> getWallet(PayWalletUserReqVO reqVO) {
 | 
			
		||||
        PayWalletDO wallet = payWalletService.getOrCreateWallet(reqVO.getUserId(), MEMBER.getValue());
 | 
			
		||||
        // TODO jason:如果为空,返回给前端只要 null 就可以了
 | 
			
		||||
        MemberUserRespDTO memberUser = memberUserApi.getUser(reqVO.getUserId());
 | 
			
		||||
        String nickname = memberUser == null ? "" : memberUser.getNickname();
 | 
			
		||||
        String avatar = memberUser == null ? "" : memberUser.getAvatar();
 | 
			
		||||
@@ -61,9 +59,8 @@ public class PayWalletController {
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('pay:wallet:query')")
 | 
			
		||||
    public CommonResult<PageResult<PayWalletRespVO>> getWalletPage(@Valid PayWalletPageReqVO pageVO) {
 | 
			
		||||
        if (StrUtil.isNotEmpty(pageVO.getNickname())) {
 | 
			
		||||
            Set<Long> userIds = CollectionUtils.convertSet(memberUserApi.getUserListByNickname(pageVO.getNickname()),
 | 
			
		||||
                    MemberUserRespDTO::getId);
 | 
			
		||||
            pageVO.setUserIds(userIds);
 | 
			
		||||
            List<MemberUserRespDTO> users = memberUserApi.getUserListByNickname(pageVO.getNickname());
 | 
			
		||||
            pageVO.setUserIds(convertSet(users, MemberUserRespDTO::getId));
 | 
			
		||||
        }
 | 
			
		||||
        // TODO @jason:管理员也可以先查询下。。
 | 
			
		||||
        // 暂时支持查询 userType 会员类型。管理员类型还不知道使用场景
 | 
			
		||||
@@ -71,8 +68,8 @@ public class PayWalletController {
 | 
			
		||||
        if (CollectionUtil.isEmpty(pageResult.getList())) {
 | 
			
		||||
            return success(new PageResult<>(pageResult.getTotal()));
 | 
			
		||||
        }
 | 
			
		||||
        List<Long> userIds = convertList(pageResult.getList(), PayWalletDO::getUserId);
 | 
			
		||||
        Map<Long, MemberUserRespDTO> userMap = convertMap(memberUserApi.getUserList(userIds),MemberUserRespDTO::getId);
 | 
			
		||||
        List<MemberUserRespDTO> users = memberUserApi.getUserList(convertList(pageResult.getList(), PayWalletDO::getUserId));
 | 
			
		||||
        Map<Long, MemberUserRespDTO> userMap = convertMap(users, MemberUserRespDTO::getId);
 | 
			
		||||
        return success(PayWalletConvert.INSTANCE.convertPage(pageResult, userMap));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.dal.dataobject.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.KeySequence;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ import cn.iocoder.yudao.framework.pay.core.enums.refund.PayRefundStatusRespEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderExtensionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.refund.PayRefundDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.refund.PayRefundService;
 | 
			
		||||
 
 | 
			
		||||
@@ -421,6 +421,7 @@ public class PayOrderServiceImpl implements PayOrderService {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // TODO 芋艿:应该 new 出来更新
 | 
			
		||||
        order.setPrice(payPrice);
 | 
			
		||||
        orderMapper.updateById(order);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargePackageDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.mysql.wallet.PayWalletRechargeMapper;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
 | 
			
		||||
@@ -64,6 +64,7 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public PayWalletRechargeDO createWalletRecharge(Long userId, Integer userType, String userIp,
 | 
			
		||||
                                                    AppPayWalletRechargeCreateReqVO reqVO) {
 | 
			
		||||
 | 
			
		||||
        // 1.1 计算充值金额
 | 
			
		||||
        int payPrice;
 | 
			
		||||
        int bonusPrice = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 钱包 Service 接口
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.pay.dal.dataobject.refund.PayRefundDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.mysql.wallet.PayWalletMapper;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.refund.PayRefundService;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.wallet.bo.WalletTransactionCreateReqBO;
 | 
			
		||||
@@ -22,8 +22,8 @@ import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*;
 | 
			
		||||
import static cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum.PAYMENT;
 | 
			
		||||
import static cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum.PAYMENT_REFUND;
 | 
			
		||||
import static cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum.PAYMENT;
 | 
			
		||||
import static cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum.PAYMENT_REFUND;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 钱包 Service 实现类
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.transaction.PayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.wallet.bo.WalletTransactionCreateReqBO;
 | 
			
		||||
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.mysql.wallet.PayWalletTransactionMapper;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.redis.no.PayNoRedisDAO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.wallet.bo.WalletTransactionCreateReqBO;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.service.wallet.bo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotEmpty;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.pay.service.order;
 | 
			
		||||
import cn.hutool.extra.spring.SpringUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
 | 
			
		||||
@@ -67,8 +66,6 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private PayOrderExtensionMapper orderExtensionMapper;
 | 
			
		||||
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayClientFactory payClientFactory;
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayProperties properties;
 | 
			
		||||
    @MockBean
 | 
			
		||||
@@ -351,7 +348,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
                    .thenReturn(channel);
 | 
			
		||||
            // mock 方法(client)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法()
 | 
			
		||||
            PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o ->
 | 
			
		||||
                    o.setChannelErrorCode("001").setChannelErrorMsg("模拟异常"));
 | 
			
		||||
@@ -405,7 +402,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
                    .thenReturn(channel);
 | 
			
		||||
            // mock 方法(client)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(支付渠道的调用)
 | 
			
		||||
            PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o -> o.setChannelErrorCode(null).setChannelErrorMsg(null)
 | 
			
		||||
                    .setDisplayMode(PayOrderDisplayModeEnum.URL.getMode()).setDisplayContent("tudou"));
 | 
			
		||||
@@ -463,7 +460,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient 已支付)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
 | 
			
		||||
        when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus())));
 | 
			
		||||
 | 
			
		||||
@@ -482,7 +479,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient 已支付)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
 | 
			
		||||
        when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                o -> o.setStatus(PayOrderStatusEnum.WAITING.getStatus())));
 | 
			
		||||
 | 
			
		||||
@@ -639,7 +636,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // 准备参数
 | 
			
		||||
        PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setId(10L)
 | 
			
		||||
                .setFeeRate(0.1D));
 | 
			
		||||
                .setFeeRate(10D));
 | 
			
		||||
        PayOrderRespDTO notify = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                o -> o.setStatus(PayOrderStatusRespEnum.SUCCESS.getStatus())
 | 
			
		||||
                        .setOutTradeNo("P110"));
 | 
			
		||||
@@ -656,7 +653,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
                .setChannelId(10L).setChannelCode(channel.getCode())
 | 
			
		||||
                .setSuccessTime(notify.getSuccessTime()).setExtensionId(orderExtension.getId()).setNo(orderExtension.getNo())
 | 
			
		||||
                .setChannelOrderNo(notify.getChannelOrderNo()).setChannelUserId(notify.getChannelUserId())
 | 
			
		||||
                .setChannelFeeRate(0.1D).setChannelFeePrice(1);
 | 
			
		||||
                .setChannelFeeRate(10D).setChannelFeePrice(1);
 | 
			
		||||
        assertPojoEquals(order, orderMapper.selectOne(null),
 | 
			
		||||
                "updateTime", "updater");
 | 
			
		||||
        // 断言,调用
 | 
			
		||||
@@ -874,7 +871,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 方法(PayClient 异常)
 | 
			
		||||
        when(client.getOrder(any())).thenThrow(new RuntimeException());
 | 
			
		||||
 | 
			
		||||
@@ -901,7 +898,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
            orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
            // mock 方法(PayClient)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(PayClient 成功返回)
 | 
			
		||||
            PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                    o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()));
 | 
			
		||||
@@ -935,7 +932,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
            orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
            // mock 方法(PayClient)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(PayClient 成功返回)
 | 
			
		||||
            PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                    o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()));
 | 
			
		||||
@@ -966,7 +963,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
 | 
			
		||||
        // 调用
 | 
			
		||||
        int count = orderService.expireOrder();
 | 
			
		||||
@@ -1013,7 +1010,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 方法(PayClient 退款返回)
 | 
			
		||||
        PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                o -> o.setStatus(PayOrderStatusEnum.REFUND.getStatus()));
 | 
			
		||||
@@ -1047,7 +1044,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
            orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
            // mock 方法(PayClient)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(PayClient 成功返回)
 | 
			
		||||
            PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                    o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()));
 | 
			
		||||
@@ -1081,7 +1078,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        orderExtensionMapper.insert(orderExtension);
 | 
			
		||||
        // mock 方法(PayClient)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 方法(PayClient 关闭返回)
 | 
			
		||||
        PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
 | 
			
		||||
                o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()));
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.pay.service.refund;
 | 
			
		||||
import cn.hutool.extra.spring.SpringUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.PayClient;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundUnifiedReqDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum;
 | 
			
		||||
@@ -67,8 +66,6 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayProperties payProperties;
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayClientFactory payClientFactory;
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayOrderService orderService;
 | 
			
		||||
    @MockBean
 | 
			
		||||
    private PayAppService appService;
 | 
			
		||||
@@ -335,7 +332,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        when(channelService.validPayChannel(eq(1L))).thenReturn(channel);
 | 
			
		||||
        // mock 方法(client)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 数据(refund 已存在)
 | 
			
		||||
        PayRefundDO refund = randomPojo(PayRefundDO.class, o ->
 | 
			
		||||
                o.setAppId(1L).setMerchantRefundId("200"));
 | 
			
		||||
@@ -367,7 +364,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        when(channelService.validPayChannel(eq(10L))).thenReturn(channel);
 | 
			
		||||
        // mock 方法(client)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 方法(client 调用发生异常)
 | 
			
		||||
        when(client.unifiedRefund(any(PayRefundUnifiedReqDTO.class))).thenThrow(new RuntimeException());
 | 
			
		||||
 | 
			
		||||
@@ -411,7 +408,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
            when(channelService.validPayChannel(eq(10L))).thenReturn(channel);
 | 
			
		||||
            // mock 方法(client)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(client 成功)
 | 
			
		||||
            PayRefundRespDTO refundRespDTO = randomPojo(PayRefundRespDTO.class);
 | 
			
		||||
            when(client.unifiedRefund(argThat(unifiedReqDTO -> {
 | 
			
		||||
@@ -668,7 +665,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
            refundMapper.insert(refund);
 | 
			
		||||
            // mock 方法(client)
 | 
			
		||||
            PayClient client = mock(PayClient.class);
 | 
			
		||||
            when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
            // mock 方法(client 返回指定状态)
 | 
			
		||||
            PayRefundRespDTO respDTO = randomPojo(PayRefundRespDTO.class, o -> o.setStatus(status));
 | 
			
		||||
            when(client.getRefund(eq("P110"), eq("R220"))).thenReturn(respDTO);
 | 
			
		||||
@@ -690,7 +687,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
 | 
			
		||||
        refundMapper.insert(refund);
 | 
			
		||||
        // mock 方法(client)
 | 
			
		||||
        PayClient client = mock(PayClient.class);
 | 
			
		||||
        when(payClientFactory.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        when(channelService.getPayClient(eq(10L))).thenReturn(client);
 | 
			
		||||
        // mock 方法(client 抛出异常)
 | 
			
		||||
        when(client.getRefund(eq("P110"), eq("R220"))).thenThrow(new RuntimeException());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user