mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	支付模块的 code review
This commit is contained in:
		| @@ -11,6 +11,8 @@ import lombok.ToString; | |||||||
| @ToString(callSuper = true) | @ToString(callSuper = true) | ||||||
| public class PayChannelCreateReqVO extends PayChannelBaseVO { | public class PayChannelCreateReqVO extends PayChannelBaseVO { | ||||||
|  |  | ||||||
|  |     // TODO @aquan:我在想,要不这个创建和修改特殊一点。前端传递 string 过来,后端解析成对应的。因为有 code,所以我们都知道是哪个配置类。 | ||||||
|  |     //  然后,在 PayChannelEnum 里,枚举每个渠道对应的配置类。另外,我们就不单独给配置类搞 vo 了。参数校验,通过手动调用 Validator 去校验。 | ||||||
|  |     // 通过这样的方式,VO 和 api 都收成,一个 update,一个 create | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -62,5 +62,7 @@ public class PayWechatChannelUpdateReqVO extends PayChannelBaseVO { | |||||||
|  |  | ||||||
|         @ApiModelProperty(value = "apiclient_cert.pem 证书对应的字符串", required = true, example = "-----BEGIN CERTIFICATE-----") |         @ApiModelProperty(value = "apiclient_cert.pem 证书对应的字符串", required = true, example = "-----BEGIN CERTIFICATE-----") | ||||||
|         private String privateCertContent; |         private String privateCertContent; | ||||||
|  |  | ||||||
|  |         // TODO @aquan:参数校验。可以使用 @AssertTrue,v2 和 v3 的 | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +1,15 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app; | package cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app; | ||||||
|  |  | ||||||
| import java.util.*; | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppPageReqVO; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |  | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||||
|  | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | ||||||
| import org.apache.ibatis.annotations.Mapper; | import org.apache.ibatis.annotations.Mapper; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.*; |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 支付应用信息 Mapper |  * 支付应用信息 Mapper | ||||||
|   | |||||||
| @@ -1,26 +1,31 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.service.app.impl; | package cn.iocoder.yudao.adminserver.modules.pay.service.app.impl; | ||||||
|  |  | ||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppPageReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppUpdateReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.convert.app.PayAppConvert; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService; | import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; | ||||||
| import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import com.google.common.annotations.VisibleForTesting; | import com.google.common.annotations.VisibleForTesting; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import javax.annotation.Resource; |  | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
|  |  | ||||||
| import java.util.*; | import javax.annotation.Resource; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.*; | import java.util.Collection; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import java.util.Collections; | ||||||
|  | import java.util.List; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.convert.app.PayAppConvert; | import java.util.Set; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper; |  | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService; |  | ||||||
|  |  | ||||||
|  | import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.APP_NOT_EXISTS; | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 支付应用信息 Service 实现类 |  * 支付应用信息 Service 实现类 | ||||||
| @@ -84,6 +89,7 @@ public class PayAppServiceImpl implements PayAppService { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public PageResult<PayAppDO> getAppPage(PayAppPageReqVO pageReqVO) { |     public PageResult<PayAppDO> getAppPage(PayAppPageReqVO pageReqVO) { | ||||||
|  |         // TODO @aquan:会有一个场景,merchantName 匹配不到商户编号的时候,应该返回没数据的 | ||||||
|         return appMapper.selectPage(pageReqVO, this.getMerchantCondition(pageReqVO.getMerchantName())); |         return appMapper.selectPage(pageReqVO, this.getMerchantCondition(pageReqVO.getMerchantName())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -94,6 +100,7 @@ public class PayAppServiceImpl implements PayAppService { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 获取商户编号集合,根据商户名称模糊查询得到所有的商户编号集合 |      * 获取商户编号集合,根据商户名称模糊查询得到所有的商户编号集合 | ||||||
|  |      * | ||||||
|      * @param merchantName 商户名称 |      * @param merchantName 商户名称 | ||||||
|      * @return 商户编号集合 |      * @return 商户编号集合 | ||||||
|      */ |      */ | ||||||
| @@ -101,7 +108,7 @@ public class PayAppServiceImpl implements PayAppService { | |||||||
|         if (StrUtil.isBlank(merchantName)) { |         if (StrUtil.isBlank(merchantName)) { | ||||||
|             return Collections.emptySet(); |             return Collections.emptySet(); | ||||||
|         } |         } | ||||||
|         return CollectionUtils.convertSet(merchantService.getMerchantListByName(merchantName), PayMerchantDO::getId); |         return convertSet(merchantService.getMerchantListByName(merchantName), PayMerchantDO::getId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -1,22 +1,21 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.service.channel; | package cn.iocoder.yudao.adminserver.modules.pay.service.channel; | ||||||
|  |  | ||||||
| import java.util.*; |  | ||||||
| import javax.validation.*; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*; | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
|  |  | ||||||
|  | import javax.validation.Valid; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 支付渠道 |  * 支付渠道 Service 接口 | ||||||
|  * Service 接口 |  | ||||||
|  * |  * | ||||||
|  * @author 芋艿 |  * @author 芋艿 // TODO @aquan:作者不要我 | ||||||
|  */ |  */ | ||||||
| public interface PayChannelService { | public interface PayChannelService { | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 创建支付渠道 |      * 创建支付渠道 | ||||||
|      * |      * | ||||||
| @@ -72,8 +71,7 @@ public interface PayChannelService { | |||||||
|      * 列表, 用于 Excel 导出 |      * 列表, 用于 Excel 导出 | ||||||
|      * |      * | ||||||
|      * @param exportReqVO 查询条件 |      * @param exportReqVO 查询条件 | ||||||
|      * @return 支付渠道 |      * @return 支付渠道列表 | ||||||
|      * 列表 |  | ||||||
|      */ |      */ | ||||||
|     List<PayChannelDO> getChannelList(PayChannelExportReqVO exportReqVO); |     List<PayChannelDO> getChannelList(PayChannelExportReqVO exportReqVO); | ||||||
|  |  | ||||||
| @@ -83,6 +81,7 @@ public interface PayChannelService { | |||||||
|      * @param payIds 支付应用编号集合 |      * @param payIds 支付应用编号集合 | ||||||
|      * @return 支付渠道 |      * @return 支付渠道 | ||||||
|      */ |      */ | ||||||
|  |     // TODO @aquan:暂时不用提供这种哈。之前提供的原因,是数据字典比较特殊。 | ||||||
|     List<PayChannelDO> getSimpleChannels(Collection<Long> payIds); |     List<PayChannelDO> getSimpleChannels(Collection<Long> payIds); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -91,6 +90,7 @@ public interface PayChannelService { | |||||||
|      * @param file pem公私钥文件 |      * @param file pem公私钥文件 | ||||||
|      * @return 解析后的字符串 |      * @return 解析后的字符串 | ||||||
|      */ |      */ | ||||||
|  |     // TODO @aquan:可以前端读取么? | ||||||
|     String parsingPemFile(MultipartFile file); |     String parsingPemFile(MultipartFile file); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -99,6 +99,7 @@ public interface PayChannelService { | |||||||
|      * @param reqVO 创建信息 |      * @param reqVO 创建信息 | ||||||
|      * @return 创建结果 |      * @return 创建结果 | ||||||
|      */ |      */ | ||||||
|  |     // TODO @aquan:pojo 如果要做参数校验,需要添加 @Valid | ||||||
|     Long createWechatChannel(PayWechatChannelCreateReqVO reqVO); |     Long createWechatChannel(PayWechatChannelCreateReqVO reqVO); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -1,43 +1,34 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.service.channel.impl; | package cn.iocoder.yudao.adminserver.modules.pay.service.channel.impl; | ||||||
|  |  | ||||||
| import cn.hutool.core.io.IoUtil; | import cn.hutool.core.io.IoUtil; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; |  | ||||||
| import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |  | ||||||
| import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; |  | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |  | ||||||
| import com.fasterxml.jackson.annotation.JsonFormat; |  | ||||||
| import com.fasterxml.jackson.databind.json.JsonMapper; |  | ||||||
| import lombok.extern.slf4j.Slf4j; |  | ||||||
| import org.springframework.stereotype.Service; |  | ||||||
|  |  | ||||||
| import javax.annotation.Resource; |  | ||||||
|  |  | ||||||
| import org.springframework.util.Assert; |  | ||||||
| import org.springframework.validation.annotation.Validated; |  | ||||||
|  |  | ||||||
| import java.io.IOException; |  | ||||||
| import java.util.*; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*; | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.convert.channel.PayChannelConvert; | import cn.iocoder.yudao.adminserver.modules.pay.convert.channel.PayChannelConvert; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.channel.PayChannelMapper; | import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.channel.PayChannelMapper; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.service.channel.PayChannelService; | import cn.iocoder.yudao.adminserver.modules.pay.service.channel.PayChannelService; | ||||||
|  | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; | ||||||
|  | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import lombok.extern.slf4j.Slf4j; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |  | ||||||
| import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; | import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; | ||||||
|  | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 支付渠道 |  * 支付渠道 Service 实现类 | ||||||
|  * Service 实现类 |  | ||||||
|  * |  * | ||||||
|  * @author 芋艿 |  * @author 芋艿 // TODO aquan:作者写自己哈 | ||||||
|  */ |  */ | ||||||
| @Slf4j |  | ||||||
| @Service | @Service | ||||||
|  | @Slf4j | ||||||
| @Validated | @Validated | ||||||
| public class PayChannelServiceImpl implements PayChannelService { | public class PayChannelServiceImpl implements PayChannelService { | ||||||
|  |  | ||||||
| @@ -162,6 +153,7 @@ public class PayChannelServiceImpl implements PayChannelService { | |||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     // TODO @aquan:service 不出现 mybatis plus 哈 | ||||||
|     /** |     /** | ||||||
|      * 根据条件获取通道 |      * 根据条件获取通道 | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -1,15 +1,20 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.service.merchant; | package cn.iocoder.yudao.adminserver.modules.pay.service.merchant; | ||||||
|  |  | ||||||
| import java.util.*; |  | ||||||
| import javax.validation.*; |  | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.*; | import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantCreateReqVO; | ||||||
| import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; | import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantExportReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantPageReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo.PayMerchantUpdateReqVO; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||||
|  |  | ||||||
|  | import javax.validation.Valid; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.Collections; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 支付商户信息 Service 接口 |  * 支付商户信息 Service 接口 | ||||||
|  * |  * | ||||||
| @@ -87,6 +92,7 @@ public interface PayMerchantService { | |||||||
|      */ |      */ | ||||||
|     List<PayMerchantDO> getMerchantListByName(String merchantName); |     List<PayMerchantDO> getMerchantListByName(String merchantName); | ||||||
|  |  | ||||||
|  |     // TODO aquan:暂时不用提供这样的检索。商户不多的。 | ||||||
|     /** |     /** | ||||||
|      * 根据商户名称模糊查询一定数量的商户集合 |      * 根据商户名称模糊查询一定数量的商户集合 | ||||||
|      * @param merchantName 商户名称 |      * @param merchantName 商户名称 | ||||||
| @@ -100,6 +106,7 @@ public interface PayMerchantService { | |||||||
|      * @param merchantIds 商户编号数组 |      * @param merchantIds 商户编号数组 | ||||||
|      * @return 商户列表 |      * @return 商户列表 | ||||||
|      */ |      */ | ||||||
|  |     // TODO @aquan:和 getMerchantList 重复了 | ||||||
|     List<PayMerchantDO> getSimpleMerchants(Collection<Long> merchantIds); |     List<PayMerchantDO> getSimpleMerchants(Collection<Long> merchantIds); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -109,10 +116,12 @@ public interface PayMerchantService { | |||||||
|      * @return 商户 Map |      * @return 商户 Map | ||||||
|      */ |      */ | ||||||
|     default Map<Long, PayMerchantDO> getMerchantMap(Collection<Long> merchantIds) { |     default Map<Long, PayMerchantDO> getMerchantMap(Collection<Long> merchantIds) { | ||||||
|  |         // TODO @aquan:可以不用判空,交给 getMerchantList 解决 | ||||||
|         if (CollUtil.isEmpty(merchantIds)) { |         if (CollUtil.isEmpty(merchantIds)) { | ||||||
|             return Collections.emptyMap(); |             return Collections.emptyMap(); | ||||||
|         } |         } | ||||||
|         List<PayMerchantDO> list = getSimpleMerchants(merchantIds); |         List<PayMerchantDO> list = getSimpleMerchants(merchantIds); | ||||||
|         return CollectionUtils.convertMap(list, PayMerchantDO::getId); |         return CollectionUtils.convertMap(list, PayMerchantDO::getId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -113,6 +113,7 @@ public class PayMerchantServiceImpl implements PayMerchantService { | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<PayMerchantDO> getMerchantListByName(String merchantName) { |     public List<PayMerchantDO> getMerchantListByName(String merchantName) { | ||||||
|  |         // TODO @aquan:Service 层,不要出现 mybatis plus 的代码,要放到 mapper 里提供。技术与业务分离,原则上 | ||||||
|         return this.merchantMapper.selectList(new QueryWrapper<PayMerchantDO>() |         return this.merchantMapper.selectList(new QueryWrapper<PayMerchantDO>() | ||||||
|                 .lambda().likeRight(PayMerchantDO::getName, merchantName)); |                 .lambda().likeRight(PayMerchantDO::getName, merchantName)); | ||||||
|     } |     } | ||||||
| @@ -160,6 +161,7 @@ public class PayMerchantServiceImpl implements PayMerchantService { | |||||||
|         return merchantMapper.selectBatchIds(merchantIds); |         return merchantMapper.selectBatchIds(merchantIds); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     // TODO @芋艿:后续增加下合适的算法 | ||||||
|     /** |     /** | ||||||
|      * 根据年月日时分秒毫秒生成商户号 |      * 根据年月日时分秒毫秒生成商户号 | ||||||
|      * @return 商户号 |      * @return 商户号 | ||||||
| @@ -168,5 +170,4 @@ public class PayMerchantServiceImpl implements PayMerchantService { | |||||||
|        return  "M" + DateUtil.format(LocalDateTime.now(),"yyyyMMddHHmmssSSS"); |        return  "M" + DateUtil.format(LocalDateTime.now(),"yyyyMMddHHmmssSSS"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -61,5 +61,5 @@ yudao: | |||||||
|       - cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants |       - cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants | ||||||
|       - cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants |       - cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants | ||||||
|   pay: |   pay: | ||||||
|     payReturnUrl: http://127.0.0.1 |     payReturnUrl: http://127.0.0.1 # TODO @aquan:这个变量,配置到 dev 或者 local 里,不同环境有差别哈 | ||||||
| debug: false | debug: false | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.app.service; | package cn.iocoder.yudao.adminserver.modules.pay.app.service; | ||||||
|  |  | ||||||
| import javax.annotation.Resource; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.adminserver.BaseDbUnitTest; | import cn.iocoder.yudao.adminserver.BaseDbUnitTest; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO; | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO; | import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO; | ||||||
| @@ -10,22 +8,21 @@ import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppUpdateRe | |||||||
| import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper; | import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.service.app.impl.PayAppServiceImpl; | import cn.iocoder.yudao.adminserver.modules.pay.service.app.impl.PayAppServiceImpl; | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; | ||||||
| import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | ||||||
| import org.junit.jupiter.api.Test; | import org.junit.jupiter.api.Test; | ||||||
| import org.springframework.context.annotation.Import; | import org.springframework.context.annotation.Import; | ||||||
| import java.util.*; |  | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; | import javax.annotation.Resource; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.APP_NOT_EXISTS; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||||||
| import static org.junit.jupiter.api.Assertions.*; | import static org.junit.jupiter.api.Assertions.*; | ||||||
|  |  | ||||||
| import static org.mockito.Mockito.*; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
| * {@link PayAppServiceImpl} 的单元测试类 | * {@link PayAppServiceImpl} 的单元测试类 | ||||||
| * | * | ||||||
| @@ -148,7 +145,7 @@ public class PayAppServiceTest extends BaseDbUnitTest { | |||||||
|        assertPojoEquals(dbApp, pageResult.getList().get(0)); |        assertPojoEquals(dbApp, pageResult.getList().get(0)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test // TODO 请修改 null 为需要的值 |     @Test // TODO aquan:请修改 null 为需要的值 | ||||||
|     public void testGetAppList() { |     public void testGetAppList() { | ||||||
|        // mock 数据 |        // mock 数据 | ||||||
|        PayAppDO dbApp = randomPojo(PayAppDO.class, o -> { // 等会查询到 |        PayAppDO dbApp = randomPojo(PayAppDO.class, o -> { // 等会查询到 | ||||||
|   | |||||||
| @@ -1,30 +1,28 @@ | |||||||
| package cn.iocoder.yudao.adminserver.modules.pay.channel; | package cn.iocoder.yudao.adminserver.modules.pay.channel; | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; |  | ||||||
| import org.junit.jupiter.api.Test; |  | ||||||
|  |  | ||||||
| import javax.annotation.Resource; |  | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.adminserver.BaseDbUnitTest; | import cn.iocoder.yudao.adminserver.BaseDbUnitTest; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.service.channel.impl.PayChannelServiceImpl; | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.PayChannelCreateReqVO; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.*; | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.PayChannelExportReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.PayChannelPageReqVO; | ||||||
|  | import cn.iocoder.yudao.adminserver.modules.pay.controller.channel.vo.PayChannelUpdateReqVO; | ||||||
| import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.channel.PayChannelMapper; | import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.channel.PayChannelMapper; | ||||||
| import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | import cn.iocoder.yudao.adminserver.modules.pay.service.channel.impl.PayChannelServiceImpl; | ||||||
|  | import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | ||||||
| import org.junit.jupiter.api.Test; | import org.junit.jupiter.api.Test; | ||||||
| import org.springframework.context.annotation.Import; | import org.springframework.context.annotation.Import; | ||||||
| import java.util.*; |  | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; | import javax.annotation.Resource; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.CHANNEL_NOT_EXISTS; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||||||
| import static org.junit.jupiter.api.Assertions.*; | import static org.junit.jupiter.api.Assertions.*; | ||||||
|  |  | ||||||
| import static org.mockito.Mockito.*; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
| * {@link PayChannelServiceImpl} 的单元测试类 | * {@link PayChannelServiceImpl} 的单元测试类 | ||||||
| * | * | ||||||
| @@ -152,7 +150,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest { | |||||||
|        assertPojoEquals(dbChannel, pageResult.getList().get(0)); |        assertPojoEquals(dbChannel, pageResult.getList().get(0)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test // TODO 请修改 null 为需要的值 |     @Test // TODO aquan:请修改 null 为需要的值 | ||||||
|     public void testGetChannelList() { |     public void testGetChannelList() { | ||||||
|        // mock 数据 |        // mock 数据 | ||||||
|        PayChannelDO dbChannel = randomPojo(PayChannelDO.class, o -> { // 等会查询到 |        PayChannelDO dbChannel = randomPojo(PayChannelDO.class, o -> { // 等会查询到 | ||||||
|   | |||||||
| @@ -46,7 +46,6 @@ public class PayChannelDO extends BaseDO { | |||||||
|      * 渠道费率,单位:百分比 |      * 渠道费率,单位:百分比 | ||||||
|      */ |      */ | ||||||
|     private Double feeRate; |     private Double feeRate; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 备注 |      * 备注 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -45,5 +45,7 @@ public interface PayErrorCodeCoreConstants { | |||||||
|      */ |      */ | ||||||
|     ErrorCode CHANNEL_NOT_EXISTS = new ErrorCode(1007006000, "支付渠道不存在"); |     ErrorCode CHANNEL_NOT_EXISTS = new ErrorCode(1007006000, "支付渠道不存在"); | ||||||
|     ErrorCode CHANNEL_KEY_READ_ERROR = new ErrorCode(1007006002, "支付渠道秘钥文件读取失败"); |     ErrorCode CHANNEL_KEY_READ_ERROR = new ErrorCode(1007006002, "支付渠道秘钥文件读取失败"); | ||||||
|  |     // TODO @aquan:下面这个错误码,缺了 CHANNEL 前缀。另外,错误码的分段,上面有啦,合并下进去哈 | ||||||
|     ErrorCode EXIST_SAME_CHANNEL_ERROR = new ErrorCode(1007006003, "已存在相同的渠道"); |     ErrorCode EXIST_SAME_CHANNEL_ERROR = new ErrorCode(1007006003, "已存在相同的渠道"); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ public enum PayChannelEnum { | |||||||
|  |  | ||||||
|     WX_PUB("wx_pub", "微信 JSAPI 支付"), // 公众号的网页 |     WX_PUB("wx_pub", "微信 JSAPI 支付"), // 公众号的网页 | ||||||
|     // TODO @芋艿 这个地方你写的是 wx_lit 是不是少写了一个e? 还是我这里多加了一个e |     // TODO @芋艿 这个地方你写的是 wx_lit 是不是少写了一个e? 还是我这里多加了一个e | ||||||
|  |     // TODO @aquan:这里就是 lite 哈,轻量 | ||||||
|     WX_LITE("wx_lite","微信小程序支付"), |     WX_LITE("wx_lite","微信小程序支付"), | ||||||
|     WX_APP("wx_app", "微信 App 支付"), |     WX_APP("wx_app", "微信 App 支付"), | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV