Commit 9697aee898da044aac9fc5edba649efe902f47aa
1 parent
0db45810
code review:钱包的逻辑
Showing
12 changed files
with
24 additions
and
15 deletions
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java
| @@ -160,8 +160,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient<AlipayPa | @@ -160,8 +160,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient<AlipayPa | ||
| 160 | 160 | ||
| 161 | // 2.1 执行请求 | 161 | // 2.1 执行请求 |
| 162 | AlipayTradeRefundResponse response; | 162 | AlipayTradeRefundResponse response; |
| 163 | - if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { | ||
| 164 | - // 证书模式 | 163 | + if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { // 证书模式 |
| 165 | response = client.certificateExecute(request); | 164 | response = client.certificateExecute(request); |
| 166 | } else { | 165 | } else { |
| 167 | response = client.execute(request); | 166 | response = client.execute(request); |
| @@ -203,8 +202,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient<AlipayPa | @@ -203,8 +202,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient<AlipayPa | ||
| 203 | 202 | ||
| 204 | // 2.1 执行请求 | 203 | // 2.1 执行请求 |
| 205 | AlipayTradeFastpayRefundQueryResponse response; | 204 | AlipayTradeFastpayRefundQueryResponse response; |
| 206 | - if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { | ||
| 207 | - // 证书模式 | 205 | + if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { // 证书模式 |
| 208 | response = client.certificateExecute(request); | 206 | response = client.certificateExecute(request); |
| 209 | } else { | 207 | } else { |
| 210 | response = client.execute(request); | 208 | response = client.execute(request); |
yudao-module-pay/yudao-module-pay-biz/pom.xml
| @@ -23,12 +23,12 @@ | @@ -23,12 +23,12 @@ | ||
| 23 | <artifactId>yudao-module-pay-api</artifactId> | 23 | <artifactId>yudao-module-pay-api</artifactId> |
| 24 | <version>${revision}</version> | 24 | <version>${revision}</version> |
| 25 | </dependency> | 25 | </dependency> |
| 26 | - | ||
| 27 | <dependency> | 26 | <dependency> |
| 28 | <groupId>cn.iocoder.boot</groupId> | 27 | <groupId>cn.iocoder.boot</groupId> |
| 29 | <artifactId>yudao-module-member-api</artifactId> | 28 | <artifactId>yudao-module-member-api</artifactId> |
| 30 | <version>${revision}</version> | 29 | <version>${revision}</version> |
| 31 | </dependency> | 30 | </dependency> |
| 31 | + | ||
| 32 | <!-- 业务组件 --> | 32 | <!-- 业务组件 --> |
| 33 | <dependency> | 33 | <dependency> |
| 34 | <groupId>cn.iocoder.boot</groupId> | 34 | <groupId>cn.iocoder.boot</groupId> |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/api/transfer/PayTransferApiImpl.java
| @@ -15,6 +15,7 @@ import javax.annotation.Resource; | @@ -15,6 +15,7 @@ import javax.annotation.Resource; | ||
| 15 | @Service | 15 | @Service |
| 16 | @Validated | 16 | @Validated |
| 17 | public class PayTransferApiImpl implements PayTransferApi { | 17 | public class PayTransferApiImpl implements PayTransferApi { |
| 18 | + | ||
| 18 | @Resource | 19 | @Resource |
| 19 | private PayTransferService payTransferService; | 20 | private PayTransferService payTransferService; |
| 20 | 21 | ||
| @@ -22,4 +23,5 @@ public class PayTransferApiImpl implements PayTransferApi { | @@ -22,4 +23,5 @@ public class PayTransferApiImpl implements PayTransferApi { | ||
| 22 | public Long createTransfer(PayTransferCreateReqDTO reqDTO) { | 23 | public Long createTransfer(PayTransferCreateReqDTO reqDTO) { |
| 23 | return payTransferService.createTransfer(reqDTO); | 24 | return payTransferService.createTransfer(reqDTO); |
| 24 | } | 25 | } |
| 25 | -} | ||
| 26 | \ No newline at end of file | 26 | \ No newline at end of file |
| 27 | + | ||
| 28 | +} |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java
| @@ -65,7 +65,8 @@ public class PayWalletController { | @@ -65,7 +65,8 @@ public class PayWalletController { | ||
| 65 | MemberUserRespDTO::getId); | 65 | MemberUserRespDTO::getId); |
| 66 | pageVO.setUserIds(userIds); | 66 | pageVO.setUserIds(userIds); |
| 67 | } | 67 | } |
| 68 | - // 暂时支持查询 userType 会员类型。管理员类型还不知道使用场景 | 68 | + // TODO @jason:管理员也可以先查询下。。 |
| 69 | + // 暂时支持查询 userType 会员类型。管理员类型还不知道使用场景 | ||
| 69 | PageResult<PayWalletDO> pageResult = payWalletService.getWalletPage(MEMBER.getValue(),pageVO); | 70 | PageResult<PayWalletDO> pageResult = payWalletService.getWalletPage(MEMBER.getValue(),pageVO); |
| 70 | if (CollectionUtil.isEmpty(pageResult.getList())) { | 71 | if (CollectionUtil.isEmpty(pageResult.getList())) { |
| 71 | return success(new PageResult<>(pageResult.getTotal())); | 72 | return success(new PageResult<>(pageResult.getTotal())); |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/vo/wallet/PayWalletRespVO.java
| @@ -19,10 +19,9 @@ public class PayWalletRespVO extends PayWalletBaseVO { | @@ -19,10 +19,9 @@ public class PayWalletRespVO extends PayWalletBaseVO { | ||
| 19 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 19 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 20 | private LocalDateTime createTime; | 20 | private LocalDateTime createTime; |
| 21 | 21 | ||
| 22 | - @Schema(description = "用户昵称") | 22 | + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王**") |
| 23 | private String nickname; | 23 | private String nickname; |
| 24 | - | ||
| 25 | - @Schema(description = "用户头像") | 24 | + @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg") |
| 26 | private String avatar; | 25 | private String avatar; |
| 27 | 26 | ||
| 28 | } | 27 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/vo/wallet/PayWalletUserReqVO.java
| @@ -12,4 +12,5 @@ public class PayWalletUserReqVO { | @@ -12,4 +12,5 @@ public class PayWalletUserReqVO { | ||
| 12 | @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 12 | @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 13 | @NotNull(message = "用户编号不能为空") | 13 | @NotNull(message = "用户编号不能为空") |
| 14 | private Long userId; | 14 | private Long userId; |
| 15 | + | ||
| 15 | } | 16 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/convert/transfer/PayTransferConvert.java
| @@ -10,8 +10,9 @@ import org.mapstruct.factory.Mappers; | @@ -10,8 +10,9 @@ import org.mapstruct.factory.Mappers; | ||
| 10 | @Mapper | 10 | @Mapper |
| 11 | public interface PayTransferConvert { | 11 | public interface PayTransferConvert { |
| 12 | 12 | ||
| 13 | - PayTransferConvert INSTANCE = Mappers.getMapper(PayTransferConvert.class); | ||
| 14 | - @Mapping(source = "title", target = "subject") | 13 | + PayTransferConvert INSTANCE = Mappers.getMapper(PayTransferConvert.class); |
| 14 | + | ||
| 15 | + @Mapping(source = "title", target = "subject") // TODO @jason:是不是都改成 subject 完事呀? | ||
| 15 | PayTransferDO convert(PayTransferCreateReqDTO dto); | 16 | PayTransferDO convert(PayTransferCreateReqDTO dto); |
| 16 | 17 | ||
| 17 | PayTransferCreateReqDTO convert(PayDemoTransferCreateReqVO vo); | 18 | PayTransferCreateReqDTO convert(PayDemoTransferCreateReqVO vo); |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/convert/wallet/PayWalletConvert.java
| @@ -26,6 +26,7 @@ public interface PayWalletConvert { | @@ -26,6 +26,7 @@ public interface PayWalletConvert { | ||
| 26 | PageResult<PayWalletRespVO> pageResult = convertPage(page); | 26 | PageResult<PayWalletRespVO> pageResult = convertPage(page); |
| 27 | pageResult.getList().forEach( wallet -> MapUtils.findAndThen(userMap, wallet.getUserId(), | 27 | pageResult.getList().forEach( wallet -> MapUtils.findAndThen(userMap, wallet.getUserId(), |
| 28 | user -> { | 28 | user -> { |
| 29 | + // TODO @jason:可以链式调用哈; | ||
| 29 | wallet.setNickname(user.getNickname()); | 30 | wallet.setNickname(user.getNickname()); |
| 30 | wallet.setAvatar(user.getAvatar()); | 31 | wallet.setAvatar(user.getAvatar()); |
| 31 | })); | 32 | })); |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/transfer/PayTransferExtensionDO.java
| @@ -11,7 +11,8 @@ import lombok.Data; | @@ -11,7 +11,8 @@ import lombok.Data; | ||
| 11 | import java.util.Map; | 11 | import java.util.Map; |
| 12 | 12 | ||
| 13 | // TODO @jason:转账是不是类似 refund,不用拓展单呀?支付做拓展单的原因,是因为它存在不确定性,可以切换多种;转账和退款,都是明确方式的; | 13 | // TODO @jason:转账是不是类似 refund,不用拓展单呀?支付做拓展单的原因,是因为它存在不确定性,可以切换多种;转账和退款,都是明确方式的; |
| 14 | -// @芋艿 转账是不是也存在多种方式。 例如转账到银行卡。 可以使用微信,也可以使用支付宝。 支付宝账号余额不够,可以切换到微信 | 14 | +// @芋艿 转账是不是也存在多种方式。 例如转账到银行卡。 可以使用微信,也可以使用支付宝。 支付宝账号余额不够,可以切换到微信; |
| 15 | +// TODO @jason:发起了,就不允许调整了,类似退款哈; | ||
| 15 | /** | 16 | /** |
| 16 | * 转账拓展单 DO | 17 | * 转账拓展单 DO |
| 17 | * | 18 | * |
| @@ -64,4 +65,4 @@ public class PayTransferExtensionDO extends BaseDO { | @@ -64,4 +65,4 @@ public class PayTransferExtensionDO extends BaseDO { | ||
| 64 | */ | 65 | */ |
| 65 | private String channelNotifyData; | 66 | private String channelNotifyData; |
| 66 | 67 | ||
| 67 | -} | ||
| 68 | \ No newline at end of file | 68 | \ No newline at end of file |
| 69 | +} |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/wallet/PayWalletRechargePackageMapper.java
| @@ -19,7 +19,9 @@ public interface PayWalletRechargePackageMapper extends BaseMapperX<PayWalletRec | @@ -19,7 +19,9 @@ public interface PayWalletRechargePackageMapper extends BaseMapperX<PayWalletRec | ||
| 19 | .orderByDesc(PayWalletRechargePackageDO::getPayPrice)); | 19 | .orderByDesc(PayWalletRechargePackageDO::getPayPrice)); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | + // TODO @jason:这里要有空格哈;String name) { | ||
| 22 | default PayWalletRechargePackageDO selectByName(String name){ | 23 | default PayWalletRechargePackageDO selectByName(String name){ |
| 23 | return selectOne(PayWalletRechargePackageDO::getName, name); | 24 | return selectOne(PayWalletRechargePackageDO::getName, name); |
| 24 | } | 25 | } |
| 25 | -} | ||
| 26 | \ No newline at end of file | 26 | \ No newline at end of file |
| 27 | + | ||
| 28 | +} |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/transfer/PayTransferServiceImpl.java
| @@ -218,6 +218,7 @@ public class PayTransferServiceImpl implements PayTransferService { | @@ -218,6 +218,7 @@ public class PayTransferServiceImpl implements PayTransferService { | ||
| 218 | PayChannelEnum payChannel = PayChannelEnum.getByCode(channelCode); | 218 | PayChannelEnum payChannel = PayChannelEnum.getByCode(channelCode); |
| 219 | switch (transferType) { | 219 | switch (transferType) { |
| 220 | case ALIPAY_BALANCE: { | 220 | case ALIPAY_BALANCE: { |
| 221 | + // TODO @jason:可以抽到 PayChannelEnum 里,isAlipay? 类似这种哈 | ||
| 221 | if (!payChannel.getCode().startsWith("alipay")) { | 222 | if (!payChannel.getCode().startsWith("alipay")) { |
| 222 | throw exception(PAY_TRANSFER_TYPE_AND_CHANNEL_NOT_MATCH); | 223 | throw exception(PAY_TRANSFER_TYPE_AND_CHANNEL_NOT_MATCH); |
| 223 | } | 224 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargePackageServiceImpl.java
| @@ -48,6 +48,7 @@ public class PayWalletRechargePackageServiceImpl implements PayWalletRechargePac | @@ -48,6 +48,7 @@ public class PayWalletRechargePackageServiceImpl implements PayWalletRechargePac | ||
| 48 | public Long createWalletRechargePackage(WalletRechargePackageCreateReqVO createReqVO) { | 48 | public Long createWalletRechargePackage(WalletRechargePackageCreateReqVO createReqVO) { |
| 49 | // 校验套餐名是否唯一 | 49 | // 校验套餐名是否唯一 |
| 50 | validateRechargePackageNameUnique(null, createReqVO.getName()); | 50 | validateRechargePackageNameUnique(null, createReqVO.getName()); |
| 51 | + | ||
| 51 | // 插入 | 52 | // 插入 |
| 52 | PayWalletRechargePackageDO walletRechargePackage = WalletRechargePackageConvert.INSTANCE.convert(createReqVO); | 53 | PayWalletRechargePackageDO walletRechargePackage = WalletRechargePackageConvert.INSTANCE.convert(createReqVO); |
| 53 | walletRechargePackageMapper.insert(walletRechargePackage); | 54 | walletRechargePackageMapper.insert(walletRechargePackage); |
| @@ -61,6 +62,7 @@ public class PayWalletRechargePackageServiceImpl implements PayWalletRechargePac | @@ -61,6 +62,7 @@ public class PayWalletRechargePackageServiceImpl implements PayWalletRechargePac | ||
| 61 | validateWalletRechargePackageExists(updateReqVO.getId()); | 62 | validateWalletRechargePackageExists(updateReqVO.getId()); |
| 62 | // 校验套餐名是否唯一 | 63 | // 校验套餐名是否唯一 |
| 63 | validateRechargePackageNameUnique(updateReqVO.getId(), updateReqVO.getName()); | 64 | validateRechargePackageNameUnique(updateReqVO.getId(), updateReqVO.getName()); |
| 65 | + | ||
| 64 | // 更新 | 66 | // 更新 |
| 65 | PayWalletRechargePackageDO updateObj = WalletRechargePackageConvert.INSTANCE.convert(updateReqVO); | 67 | PayWalletRechargePackageDO updateObj = WalletRechargePackageConvert.INSTANCE.convert(updateReqVO); |
| 66 | walletRechargePackageMapper.updateById(updateObj); | 68 | walletRechargePackageMapper.updateById(updateObj); |