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 | 160 | |
| 161 | 161 | // 2.1 执行请求 |
| 162 | 162 | AlipayTradeRefundResponse response; |
| 163 | - if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { | |
| 164 | - // 证书模式 | |
| 163 | + if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { // 证书模式 | |
| 165 | 164 | response = client.certificateExecute(request); |
| 166 | 165 | } else { |
| 167 | 166 | response = client.execute(request); |
| ... | ... | @@ -203,8 +202,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient<AlipayPa |
| 203 | 202 | |
| 204 | 203 | // 2.1 执行请求 |
| 205 | 204 | AlipayTradeFastpayRefundQueryResponse response; |
| 206 | - if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { | |
| 207 | - // 证书模式 | |
| 205 | + if (Objects.equals(config.getMode(), MODE_CERTIFICATE)) { // 证书模式 | |
| 208 | 206 | response = client.certificateExecute(request); |
| 209 | 207 | } else { |
| 210 | 208 | response = client.execute(request); | ... | ... |
yudao-module-pay/yudao-module-pay-biz/pom.xml
| ... | ... | @@ -23,12 +23,12 @@ |
| 23 | 23 | <artifactId>yudao-module-pay-api</artifactId> |
| 24 | 24 | <version>${revision}</version> |
| 25 | 25 | </dependency> |
| 26 | - | |
| 27 | 26 | <dependency> |
| 28 | 27 | <groupId>cn.iocoder.boot</groupId> |
| 29 | 28 | <artifactId>yudao-module-member-api</artifactId> |
| 30 | 29 | <version>${revision}</version> |
| 31 | 30 | </dependency> |
| 31 | + | |
| 32 | 32 | <!-- 业务组件 --> |
| 33 | 33 | <dependency> |
| 34 | 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 | 15 | @Service |
| 16 | 16 | @Validated |
| 17 | 17 | public class PayTransferApiImpl implements PayTransferApi { |
| 18 | + | |
| 18 | 19 | @Resource |
| 19 | 20 | private PayTransferService payTransferService; |
| 20 | 21 | |
| ... | ... | @@ -22,4 +23,5 @@ public class PayTransferApiImpl implements PayTransferApi { |
| 22 | 23 | public Long createTransfer(PayTransferCreateReqDTO reqDTO) { |
| 23 | 24 | return payTransferService.createTransfer(reqDTO); |
| 24 | 25 | } |
| 25 | -} | |
| 26 | 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 | 65 | MemberUserRespDTO::getId); |
| 66 | 66 | pageVO.setUserIds(userIds); |
| 67 | 67 | } |
| 68 | - // 暂时支持查询 userType 会员类型。管理员类型还不知道使用场景 | |
| 68 | + // TODO @jason:管理员也可以先查询下。。 | |
| 69 | + // 暂时支持查询 userType 会员类型。管理员类型还不知道使用场景 | |
| 69 | 70 | PageResult<PayWalletDO> pageResult = payWalletService.getWalletPage(MEMBER.getValue(),pageVO); |
| 70 | 71 | if (CollectionUtil.isEmpty(pageResult.getList())) { |
| 71 | 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 | 19 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 20 | 20 | private LocalDateTime createTime; |
| 21 | 21 | |
| 22 | - @Schema(description = "用户昵称") | |
| 22 | + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王**") | |
| 23 | 23 | private String nickname; |
| 24 | - | |
| 25 | - @Schema(description = "用户头像") | |
| 24 | + @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg") | |
| 26 | 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
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 | 10 | @Mapper |
| 11 | 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 | 16 | PayTransferDO convert(PayTransferCreateReqDTO dto); |
| 16 | 17 | |
| 17 | 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 | 26 | PageResult<PayWalletRespVO> pageResult = convertPage(page); |
| 27 | 27 | pageResult.getList().forEach( wallet -> MapUtils.findAndThen(userMap, wallet.getUserId(), |
| 28 | 28 | user -> { |
| 29 | + // TODO @jason:可以链式调用哈; | |
| 29 | 30 | wallet.setNickname(user.getNickname()); |
| 30 | 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 | 11 | import java.util.Map; |
| 12 | 12 | |
| 13 | 13 | // TODO @jason:转账是不是类似 refund,不用拓展单呀?支付做拓展单的原因,是因为它存在不确定性,可以切换多种;转账和退款,都是明确方式的; |
| 14 | -// @芋艿 转账是不是也存在多种方式。 例如转账到银行卡。 可以使用微信,也可以使用支付宝。 支付宝账号余额不够,可以切换到微信 | |
| 14 | +// @芋艿 转账是不是也存在多种方式。 例如转账到银行卡。 可以使用微信,也可以使用支付宝。 支付宝账号余额不够,可以切换到微信; | |
| 15 | +// TODO @jason:发起了,就不允许调整了,类似退款哈; | |
| 15 | 16 | /** |
| 16 | 17 | * 转账拓展单 DO |
| 17 | 18 | * |
| ... | ... | @@ -64,4 +65,4 @@ public class PayTransferExtensionDO extends BaseDO { |
| 64 | 65 | */ |
| 65 | 66 | private String channelNotifyData; |
| 66 | 67 | |
| 67 | -} | |
| 68 | 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 | 19 | .orderByDesc(PayWalletRechargePackageDO::getPayPrice)); |
| 20 | 20 | } |
| 21 | 21 | |
| 22 | + // TODO @jason:这里要有空格哈;String name) { | |
| 22 | 23 | default PayWalletRechargePackageDO selectByName(String name){ |
| 23 | 24 | return selectOne(PayWalletRechargePackageDO::getName, name); |
| 24 | 25 | } |
| 25 | -} | |
| 26 | 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 | 218 | PayChannelEnum payChannel = PayChannelEnum.getByCode(channelCode); |
| 219 | 219 | switch (transferType) { |
| 220 | 220 | case ALIPAY_BALANCE: { |
| 221 | + // TODO @jason:可以抽到 PayChannelEnum 里,isAlipay? 类似这种哈 | |
| 221 | 222 | if (!payChannel.getCode().startsWith("alipay")) { |
| 222 | 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 | 48 | public Long createWalletRechargePackage(WalletRechargePackageCreateReqVO createReqVO) { |
| 49 | 49 | // 校验套餐名是否唯一 |
| 50 | 50 | validateRechargePackageNameUnique(null, createReqVO.getName()); |
| 51 | + | |
| 51 | 52 | // 插入 |
| 52 | 53 | PayWalletRechargePackageDO walletRechargePackage = WalletRechargePackageConvert.INSTANCE.convert(createReqVO); |
| 53 | 54 | walletRechargePackageMapper.insert(walletRechargePackage); |
| ... | ... | @@ -61,6 +62,7 @@ public class PayWalletRechargePackageServiceImpl implements PayWalletRechargePac |
| 61 | 62 | validateWalletRechargePackageExists(updateReqVO.getId()); |
| 62 | 63 | // 校验套餐名是否唯一 |
| 63 | 64 | validateRechargePackageNameUnique(updateReqVO.getId(), updateReqVO.getName()); |
| 65 | + | |
| 64 | 66 | // 更新 |
| 65 | 67 | PayWalletRechargePackageDO updateObj = WalletRechargePackageConvert.INSTANCE.convert(updateReqVO); |
| 66 | 68 | walletRechargePackageMapper.updateById(updateObj); | ... | ... |