diff --git a/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/transfer/dto/PayTransferCreateReqDTO.java b/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/transfer/dto/PayTransferCreateReqDTO.java index 2ea7b25a8..e421fdebc 100644 --- a/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/transfer/dto/PayTransferCreateReqDTO.java +++ b/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/transfer/dto/PayTransferCreateReqDTO.java @@ -10,6 +10,8 @@ import javax.validation.constraints.NotNull; import java.util.Map; /** + * 转账单创建 Request DTO + * * @author jason */ @Data diff --git a/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/package-info.java b/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/package-info.java deleted file mode 100644 index 756410aa8..000000000 --- a/yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.yudao.module.pay; diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java index 4eed8816f..6d61cca2e 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java @@ -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 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> getWalletPage(@Valid PayWalletPageReqVO pageVO) { if (StrUtil.isNotEmpty(pageVO.getNickname())) { - Set userIds = CollectionUtils.convertSet(memberUserApi.getUserListByNickname(pageVO.getNickname()), - MemberUserRespDTO::getId); - pageVO.setUserIds(userIds); + List 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 userIds = convertList(pageResult.getList(), PayWalletDO::getUserId); - Map userMap = convertMap(memberUserApi.getUserList(userIds),MemberUserRespDTO::getId); + List users = memberUserApi.getUserList(convertList(pageResult.getList(), PayWalletDO::getUserId)); + Map userMap = convertMap(users, MemberUserRespDTO::getId); return success(PayWalletConvert.INSTANCE.convertPage(pageResult, userMap)); } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java b/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java index c9a74d1d1..cf72aa819 100755 --- a/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java @@ -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())); diff --git a/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java b/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java index 512f952e8..a9296f93f 100755 --- a/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java @@ -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()); diff --git a/yudao-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt b/yudao-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt deleted file mode 100644 index ee06c0a6b..000000000 --- a/yudao-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt +++ /dev/null @@ -1 +0,0 @@ -DKOvVzFP7vPwwHx2 \ No newline at end of file diff --git a/yudao-server/src/main/resources/static/READMD.md b/yudao-server/src/main/resources/static/READMD.md deleted file mode 100644 index 2cf46688d..000000000 --- a/yudao-server/src/main/resources/static/READMD.md +++ /dev/null @@ -1,13 +0,0 @@ -## 微信公众号 - -参考文章:https://www.yuque.com/docs/share/0e2966dd-89f8-4b69-980d-b876168725df - -① 访问 social-login.html 选择【微信公众号】 - -② 微信公众号授权完成后,跳转回 social-login2.html,输入手机号 + 密码,进行绑定 - -## 微信小程序 - -参考文章:https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa - -① 暂时使用 mini-program-test 项目 diff --git a/yudao-server/src/main/resources/static/pay_wx_pub.html b/yudao-server/src/main/resources/static/pay_wx_pub.html deleted file mode 100644 index b41bb4b60..000000000 --- a/yudao-server/src/main/resources/static/pay_wx_pub.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - 支付测试页 - - - - -
点击如下按钮,发起支付的测试
-
- -
- - -