mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 01:01:52 +08:00
多模块重构 7:pay 模块的重构完成
This commit is contained in:
parent
b757e1fccb
commit
d45213fe2a
3
pom.xml
3
pom.xml
@ -10,9 +10,10 @@
|
|||||||
<modules>
|
<modules>
|
||||||
<module>yudao-dependencies</module>
|
<module>yudao-dependencies</module>
|
||||||
<module>yudao-framework</module>
|
<module>yudao-framework</module>
|
||||||
|
|
||||||
<module>yudao-admin-server</module>
|
<module>yudao-admin-server</module>
|
||||||
<module>yudao-user-server</module>
|
<module>yudao-user-server</module>
|
||||||
<module>yudao-core-service</module>
|
|
||||||
<module>yudao-module-member</module>
|
<module>yudao-module-member</module>
|
||||||
<!-- <module>yudao-module-bpm</module>-->
|
<!-- <module>yudao-module-bpm</module>-->
|
||||||
<module>yudao-module-system</module>
|
<module>yudao-module-system</module>
|
||||||
|
@ -1,106 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
|
|
||||||
<artifactId>yudao-core-service</artifactId>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<name>yudao-core-service</name>
|
|
||||||
<description>
|
|
||||||
公共服务,通过 jar 包的方式,被 yudao-admin-server、yudao-user-service 使用。例如说:
|
|
||||||
1. 日志相关:访问日志、登录日志、异常日志等等
|
|
||||||
2. 认证相关:在线 Session
|
|
||||||
3. 短信相关:短信模板、短信日志
|
|
||||||
等等
|
|
||||||
</description>
|
|
||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<!-- 业务组件 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-sms</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-pay</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-tenant</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Web 相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-web</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- spring boot 配置所需依赖 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
|
||||||
<optional>true</optional>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-security</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- DB 相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-redis</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Config 配置中心相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-config</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 消息队列相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-mq</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 服务保障相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-protection</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Test 测试相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 工具类相关 -->
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.coreservice.modules.pay.service;
|
|
@ -1,5 +1,3 @@
|
|||||||
-- bpm 开头的 DB
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "bpm_form" (
|
CREATE TABLE IF NOT EXISTS "bpm_form" (
|
||||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
"name" varchar(63) NOT NULL,
|
"name" varchar(63) NOT NULL,
|
||||||
@ -13,4 +11,18 @@ CREATE TABLE IF NOT EXISTS "bpm_form" (
|
|||||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||||
PRIMARY KEY ("id")
|
PRIMARY KEY ("id")
|
||||||
) COMMENT '动态表单';
|
) COMMENT '动态表单';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "bpm_user_group" (
|
||||||
|
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
"name" varchar(63) NOT NULL,
|
||||||
|
"description" varchar(255) NOT NULL,
|
||||||
|
"status" tinyint NOT NULL,
|
||||||
|
"member_user_ids" varchar(255) NOT NULL,
|
||||||
|
"creator" varchar(64) DEFAULT '',
|
||||||
|
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updater" varchar(64) DEFAULT '',
|
||||||
|
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT '用户组';
|
||||||
|
@ -48,3 +48,7 @@ yudao:
|
|||||||
base-package2: cn.iocoder.yudao.module
|
base-package2: cn.iocoder.yudao.module
|
||||||
core-service:
|
core-service:
|
||||||
base-package: cn.iocoder.yudao.module.member.dal.mysql # TODO 芋艿:要清理掉
|
base-package: cn.iocoder.yudao.module.member.dal.mysql # TODO 芋艿:要清理掉
|
||||||
|
pay:
|
||||||
|
pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
|
||||||
|
pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
|
||||||
|
refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant;
|
package cn.iocoder.yudao.module.pay.dal.dataobject.merchant;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
@ -1,12 +1,12 @@
|
|||||||
package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant;
|
package cn.iocoder.yudao.module.pay.dal.mysql.merchant;
|
||||||
|
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.iocoder.yudao.coreservice.BaseDbAndRedisIntegrationTest;
|
import cn.iocoder.yudao.module.pay.dal.dataobject.merchant.PayChannelDO;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO;
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig;
|
import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig;
|
||||||
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
||||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||||
|
import cn.iocoder.yudao.module.pay.test.BaseDbIntegrationTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -15,10 +15,10 @@ import java.io.FileNotFoundException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
public class PayChannelCoreMapperTest extends BaseDbAndRedisIntegrationTest {
|
public class PayChannelMapperIntegrationTest extends BaseDbIntegrationTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PayChannelCoreMapper payChannelCoreMapper;
|
private PayChannelMapper payChannelMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插入 {@link PayChannelEnum#WX_PUB} 初始配置
|
* 插入 {@link PayChannelEnum#WX_PUB} 初始配置
|
||||||
@ -42,7 +42,7 @@ public class PayChannelCoreMapperTest extends BaseDbAndRedisIntegrationTest {
|
|||||||
config.setApiV3Key("joerVi8y5DJ3o4ttA0o1uH47Xz1u2Ase");
|
config.setApiV3Key("joerVi8y5DJ3o4ttA0o1uH47Xz1u2Ase");
|
||||||
payChannelDO.setConfig(config);
|
payChannelDO.setConfig(config);
|
||||||
// 执行插入
|
// 执行插入
|
||||||
payChannelCoreMapper.insert(payChannelDO);
|
payChannelMapper.insert(payChannelDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO @ouyang:Zfb 改成 AlipayQr
|
// TODO @ouyang:Zfb 改成 AlipayQr
|
||||||
@ -67,7 +67,7 @@ public class PayChannelCoreMapperTest extends BaseDbAndRedisIntegrationTest {
|
|||||||
// 创建客户端
|
// 创建客户端
|
||||||
payChannelDO.setConfig(config);
|
payChannelDO.setConfig(config);
|
||||||
// 执行插入
|
// 执行插入
|
||||||
payChannelCoreMapper.insert(payChannelDO);
|
payChannelMapper.insert(payChannelDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,7 +75,7 @@ public class PayChannelCoreMapperTest extends BaseDbAndRedisIntegrationTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testSelectList() {
|
public void testSelectList() {
|
||||||
List<PayChannelDO> payChannels = payChannelCoreMapper.selectList();
|
List<PayChannelDO> payChannels = payChannelMapper.selectList();
|
||||||
System.out.println(payChannels.size());
|
System.out.println(payChannels.size());
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +1,10 @@
|
|||||||
package cn.iocoder.yudao.coreservice.modules.pay.service.order;
|
package cn.iocoder.yudao.module.pay.service.order;
|
||||||
|
|
||||||
import cn.iocoder.yudao.coreservice.BaseDbIntegrationTest;
|
import cn.iocoder.yudao.module.pay.service.merchant.PayAppServiceImpl;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl.PayAppCoreServiceImpl;
|
import cn.iocoder.yudao.module.pay.service.merchant.PayChannelServiceImpl;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl.PayChannelCoreServiceImpl;
|
import cn.iocoder.yudao.module.pay.service.order.dto.PayOrderCreateReqDTO;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO;
|
import cn.iocoder.yudao.module.pay.service.order.dto.PayOrderSubmitReqDTO;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO;
|
import cn.iocoder.yudao.module.pay.test.BaseDbIntegrationTest;
|
||||||
import cn.iocoder.yudao.coreservice.modules.pay.service.order.impl.PayOrderCoreServiceImpl;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
import cn.iocoder.yudao.framework.pay.config.YudaoPayAutoConfiguration;
|
import cn.iocoder.yudao.framework.pay.config.YudaoPayAutoConfiguration;
|
||||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||||
@ -15,12 +14,12 @@ import org.springframework.context.annotation.Import;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
@Import({PayOrderCoreServiceImpl.class, PayAppCoreServiceImpl.class,
|
@Import({PayOrderServiceImpl.class, PayAppServiceImpl.class,
|
||||||
PayChannelCoreServiceImpl.class, YudaoPayAutoConfiguration.class})
|
PayChannelServiceImpl.class, YudaoPayAutoConfiguration.class})
|
||||||
public class PayOrderCoreServiceTest extends BaseDbIntegrationTest {
|
public class PayOrderServiceIntegrationTest extends BaseDbIntegrationTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PayOrderCoreService payOrderCoreService;
|
private PayOrderService payOrderService;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreatePayOrder() {
|
public void testCreatePayOrder() {
|
||||||
@ -34,7 +33,7 @@ public class PayOrderCoreServiceTest extends BaseDbIntegrationTest {
|
|||||||
reqDTO.setAmount(100);
|
reqDTO.setAmount(100);
|
||||||
reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1)));
|
reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1)));
|
||||||
// 发起请求
|
// 发起请求
|
||||||
payOrderCoreService.createPayOrder(reqDTO);
|
payOrderService.createPayOrder(reqDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -46,7 +45,7 @@ public class PayOrderCoreServiceTest extends BaseDbIntegrationTest {
|
|||||||
reqDTO.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
reqDTO.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
||||||
reqDTO.setUserIp("127.0.0.1");
|
reqDTO.setUserIp("127.0.0.1");
|
||||||
// 发起请求
|
// 发起请求
|
||||||
payOrderCoreService.submitPayOrder(reqDTO);
|
payOrderService.submitPayOrder(reqDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1 @@
|
|||||||
|
package cn.iocoder.yudao.module.pay.service;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.coreservice;
|
package cn.iocoder.yudao.module.pay.test;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
|
import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
|
||||||
import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
|
import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.coreservice;
|
package cn.iocoder.yudao.module.pay.test;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
|
import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
|
||||||
import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
|
import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.coreservice;
|
package cn.iocoder.yudao.module.pay.test;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration;
|
import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration;
|
||||||
import org.redisson.spring.starter.RedissonAutoConfiguration;
|
import org.redisson.spring.starter.RedissonAutoConfiguration;
|
@ -88,6 +88,7 @@ yudao:
|
|||||||
info:
|
info:
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
base-package: cn.iocoder.yudao.adminserver
|
base-package: cn.iocoder.yudao.adminserver
|
||||||
|
base-package2: cn.iocoder.yudao.module
|
||||||
core-service:
|
core-service:
|
||||||
base-package: cn.iocoder.yudao.coreservice
|
base-package: cn.iocoder.yudao.coreservice
|
||||||
pay:
|
pay:
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.pay.service.merchant;
|
package cn.iocoder.yudao.module.pay.service.merchant;
|
||||||
|
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppCreateReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppCreateReqVO;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppExportReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppExportReqVO;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppPageReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.merchant.vo.app.PayAppPageReqVO;
|
||||||
@ -30,11 +31,6 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
|||||||
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.*;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link PayAppServiceImpl} 的单元测试类
|
|
||||||
*
|
|
||||||
* @author 芋艿
|
|
||||||
*/
|
|
||||||
@Import(PayAppServiceImpl.class)
|
@Import(PayAppServiceImpl.class)
|
||||||
public class PayAppServiceTest extends BaseDbUnitTest {
|
public class PayAppServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pay.service.merchant;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
|
||||||
import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig;
|
import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig;
|
||||||
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig;
|
||||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||||
@ -14,9 +15,11 @@ import cn.iocoder.yudao.module.pay.dal.mysql.merchant.PayChannelMapper;
|
|||||||
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Validator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
|
||||||
@ -37,6 +40,11 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private PayChannelMapper channelMapper;
|
private PayChannelMapper channelMapper;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private PayClientFactory payClientFactory;
|
||||||
|
@MockBean
|
||||||
|
private Validator validator;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateWechatVersion2Channel_success() {
|
public void testCreateWechatVersion2Channel_success() {
|
||||||
// 准备参数
|
// 准备参数
|
||||||
|
@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
|
import cn.iocoder.yudao.framework.pay.config.PayProperties;
|
||||||
|
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
|
||||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderExportReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderExportReqVO;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderPageReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.order.vo.PayOrderPageReqVO;
|
||||||
@ -12,8 +14,12 @@ import cn.iocoder.yudao.module.pay.dal.mysql.order.PayOrderMapper;
|
|||||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderNotifyStatusEnum;
|
import cn.iocoder.yudao.module.pay.enums.order.PayOrderNotifyStatusEnum;
|
||||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
|
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
|
||||||
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundTypeEnum;
|
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.merchant.PayAppService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.merchant.PayChannelService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.notify.PayNotifyService;
|
||||||
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -30,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||||||
*
|
*
|
||||||
* @author 芋艿
|
* @author 芋艿
|
||||||
*/
|
*/
|
||||||
@Import(PayOrderServiceImpl.class)
|
@Import({PayOrderServiceImpl.class})
|
||||||
public class PayOrderServiceTest extends BaseDbUnitTest {
|
public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@ -39,6 +45,17 @@ public class PayOrderServiceTest extends BaseDbUnitTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private PayOrderMapper orderMapper;
|
private PayOrderMapper orderMapper;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private PayClientFactory payClientFactory;
|
||||||
|
@MockBean
|
||||||
|
private PayProperties properties;
|
||||||
|
@MockBean
|
||||||
|
private PayAppService appService;
|
||||||
|
@MockBean
|
||||||
|
private PayChannelService channelService;
|
||||||
|
@MockBean
|
||||||
|
private PayNotifyService notifyService;
|
||||||
|
|
||||||
public String generateNo() {
|
public String generateNo() {
|
||||||
return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999);
|
return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pay.service.refund;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
|
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
|
||||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.refund.vo.PayRefundExportReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.refund.vo.PayRefundExportReqVO;
|
||||||
import cn.iocoder.yudao.module.pay.controller.admin.refund.vo.PayRefundPageReqVO;
|
import cn.iocoder.yudao.module.pay.controller.admin.refund.vo.PayRefundPageReqVO;
|
||||||
@ -10,8 +11,14 @@ import cn.iocoder.yudao.module.pay.dal.mysql.refund.PayRefundMapper;
|
|||||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderNotifyStatusEnum;
|
import cn.iocoder.yudao.module.pay.enums.order.PayOrderNotifyStatusEnum;
|
||||||
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
|
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
|
||||||
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundTypeEnum;
|
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.merchant.PayAppService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.merchant.PayChannelService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.notify.PayNotifyService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.order.PayOrderExtensionService;
|
||||||
|
import cn.iocoder.yudao.module.pay.service.order.PayOrderService;
|
||||||
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
import cn.iocoder.yudao.module.pay.test.BaseDbUnitTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -22,12 +29,6 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEq
|
|||||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link PayRefundServiceImpl} 的单元测试类
|
|
||||||
*
|
|
||||||
* @author aquan
|
|
||||||
*/
|
|
||||||
@Import(PayRefundServiceImpl.class)
|
@Import(PayRefundServiceImpl.class)
|
||||||
public class PayRefundServiceTest extends BaseDbUnitTest {
|
public class PayRefundServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@ -37,6 +38,18 @@ public class PayRefundServiceTest extends BaseDbUnitTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private PayRefundMapper refundMapper;
|
private PayRefundMapper refundMapper;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private PayClientFactory payClientFactory;
|
||||||
|
@MockBean
|
||||||
|
private PayOrderService orderService;
|
||||||
|
@MockBean
|
||||||
|
private PayOrderExtensionService orderExtensionService;
|
||||||
|
@MockBean
|
||||||
|
private PayAppService appService;
|
||||||
|
@MockBean
|
||||||
|
private PayChannelService channelService;
|
||||||
|
@MockBean
|
||||||
|
private PayNotifyService notifyService;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetRefundPage() {
|
public void testGetRefundPage() {
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
spring:
|
||||||
|
main:
|
||||||
|
lazy-initialization: true # 开启懒加载,加快速度
|
||||||
|
banner-mode: off # 单元测试,禁用 Banner
|
||||||
|
|
||||||
|
--- #################### 数据库相关配置 ####################
|
||||||
|
|
||||||
|
spring:
|
||||||
|
# 数据源配置项
|
||||||
|
datasource:
|
||||||
|
name: ruoyi-vue-pro
|
||||||
|
url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写
|
||||||
|
driver-class-name: org.h2.Driver
|
||||||
|
username: sa
|
||||||
|
password:
|
||||||
|
schema: classpath:sql/create_tables.sql # MySQL 转 H2 的语句,使用 https://www.jooq.org/translate/ 工具
|
||||||
|
druid:
|
||||||
|
async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度
|
||||||
|
initial-size: 1 # 单元测试,配置为 1,提升启动速度
|
||||||
|
|
||||||
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
|
redis:
|
||||||
|
host: 127.0.0.1 # 地址
|
||||||
|
port: 16379 # 端口(单元测试,使用 16379 端口)
|
||||||
|
database: 0 # 数据库索引
|
||||||
|
|
||||||
|
mybatis:
|
||||||
|
lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试
|
||||||
|
|
||||||
|
--- #################### 定时任务相关配置 ####################
|
||||||
|
|
||||||
|
--- #################### 配置中心相关配置 ####################
|
||||||
|
|
||||||
|
--- #################### 服务保障相关配置 ####################
|
||||||
|
|
||||||
|
# Lock4j 配置项(单元测试,禁用 Lock4j)
|
||||||
|
|
||||||
|
# Resilience4j 配置项
|
||||||
|
|
||||||
|
--- #################### 监控相关配置 ####################
|
||||||
|
|
||||||
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
# 芋道配置项,设置当前项目所有自定义的配置
|
||||||
|
yudao:
|
||||||
|
info:
|
||||||
|
base-package: cn.iocoder.yudao.module.member.dal.mysql
|
||||||
|
base-package2: cn.iocoder.yudao.module
|
||||||
|
core-service:
|
||||||
|
base-package: cn.iocoder.yudao.module.member.dal.mysql # TODO 芋艿:要清理掉
|
||||||
|
captcha:
|
||||||
|
timeout: 5m
|
||||||
|
width: 160
|
||||||
|
height: 60
|
@ -0,0 +1,4 @@
|
|||||||
|
<configuration>
|
||||||
|
<!-- 引用 Spring Boot 的 logback 基础配置 -->
|
||||||
|
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||||
|
</configuration>
|
@ -0,0 +1,5 @@
|
|||||||
|
DELETE FROM pay_merchant;
|
||||||
|
DELETE FROM pay_app;
|
||||||
|
DELETE FROM pay_channel;
|
||||||
|
DELETE FROM pay_order;
|
||||||
|
DELETE FROM pay_refund;
|
@ -0,0 +1,115 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS "pay_merchant"
|
||||||
|
(
|
||||||
|
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
"no" varchar(32) NOT NULL,
|
||||||
|
"name" varchar(64) NOT NULL,
|
||||||
|
"short_name" varchar(64) NOT NULL,
|
||||||
|
"status" tinyint NOT NULL,
|
||||||
|
"remark" varchar(255) DEFAULT NULL,
|
||||||
|
"creator" varchar(64) DEFAULT '',
|
||||||
|
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updater" varchar(64) DEFAULT '',
|
||||||
|
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT '支付商户信息';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "pay_app" (
|
||||||
|
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
"name" varchar(64) NOT NULL,
|
||||||
|
"status" tinyint NOT NULL,
|
||||||
|
"remark" varchar(255) DEFAULT NULL,
|
||||||
|
`pay_notify_url` varchar(1024) NOT NULL,
|
||||||
|
`refund_notify_url` varchar(1024) NOT NULL,
|
||||||
|
`merchant_id` bigint(20) NOT NULL,
|
||||||
|
"creator" varchar(64) DEFAULT '',
|
||||||
|
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updater" varchar(64) DEFAULT '',
|
||||||
|
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT = '支付应用信息';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "pay_channel" (
|
||||||
|
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
"code" varchar(32) NOT NULL,
|
||||||
|
"status" tinyint(4) NOT NULL,
|
||||||
|
"remark" varchar(255) DEFAULT NULL,
|
||||||
|
"fee_rate" double NOT NULL DEFAULT 0,
|
||||||
|
"merchant_id" bigint(20) NOT NULL,
|
||||||
|
"app_id" bigint(20) NOT NULL,
|
||||||
|
"config" varchar(10240) NOT NULL,
|
||||||
|
"creator" varchar(64) NULL DEFAULT '',
|
||||||
|
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updater" varchar(64) NULL DEFAULT '',
|
||||||
|
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT = '支付渠道';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `pay_order` (
|
||||||
|
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
`merchant_id` bigint(20) NOT NULL,
|
||||||
|
`app_id` bigint(20) NOT NULL,
|
||||||
|
`channel_id` bigint(20) DEFAULT NULL,
|
||||||
|
`channel_code` varchar(32) DEFAULT NULL,
|
||||||
|
`merchant_order_id` varchar(64) NOT NULL,
|
||||||
|
`subject` varchar(32) NOT NULL,
|
||||||
|
`body` varchar(128) NOT NULL,
|
||||||
|
`notify_url` varchar(1024) NOT NULL,
|
||||||
|
`notify_status` tinyint(4) NOT NULL,
|
||||||
|
`amount` bigint(20) NOT NULL,
|
||||||
|
`channel_fee_rate` double DEFAULT 0,
|
||||||
|
`channel_fee_amount` bigint(20) DEFAULT 0,
|
||||||
|
`status` tinyint(4) NOT NULL,
|
||||||
|
`user_ip` varchar(50) NOT NULL,
|
||||||
|
`expire_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`success_time` datetime(0) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`notify_time` datetime(0) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`success_extension_id` bigint(20) DEFAULT NULL COMMENT '支付成功的订单拓展单编号',
|
||||||
|
`refund_status` tinyint(4) NOT NULL,
|
||||||
|
`refund_times` tinyint(4) NOT NULL,
|
||||||
|
`refund_amount` bigint(20) NOT NULL,
|
||||||
|
`channel_user_id` varchar(255) DEFAULT NULL,
|
||||||
|
`channel_order_no` varchar(64) DEFAULT NULL,
|
||||||
|
`creator` varchar(64) DEFAULT '',
|
||||||
|
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updater` varchar(64) DEFAULT '',
|
||||||
|
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT = '支付订单';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `pay_refund` (
|
||||||
|
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
`merchant_id` bigint(20) NOT NULL,
|
||||||
|
`app_id` bigint(20) NOT NULL,
|
||||||
|
`channel_id` bigint(20) NOT NULL,
|
||||||
|
`channel_code` varchar(32) NOT NULL,
|
||||||
|
`order_id` bigint(20) NOT NULL,
|
||||||
|
`trade_no` varchar(64) NOT NULL,
|
||||||
|
`merchant_order_id` varchar(64) NOT NULL,
|
||||||
|
`merchant_refund_no` varchar(64) NOT NULL,
|
||||||
|
`notify_url` varchar(1024) NOT NULL,
|
||||||
|
`notify_status` tinyint(4) NOT NULL,
|
||||||
|
`status` tinyint(4) NOT NULL,
|
||||||
|
`type` tinyint(4) NOT NULL,
|
||||||
|
`pay_amount` bigint(20) NOT NULL,
|
||||||
|
`refund_amount` bigint(20) NOT NULL,
|
||||||
|
`reason` varchar(256) NOT NULL,
|
||||||
|
`user_ip` varchar(50) NULL DEFAULT NULL,
|
||||||
|
`channel_order_no` varchar(64) NOT NULL,
|
||||||
|
`channel_refund_no` varchar(64) NULL DEFAULT NULL,
|
||||||
|
`channel_error_code` varchar(128) NULL DEFAULT NULL,
|
||||||
|
`channel_error_msg` varchar(256) NULL DEFAULT NULL,
|
||||||
|
`channel_extras` varchar(1024) NULL DEFAULT NULL,
|
||||||
|
`expire_time` datetime(0) NULL DEFAULT NULL,
|
||||||
|
`success_time` datetime(0) NULL DEFAULT NULL,
|
||||||
|
`notify_time` datetime(0) NULL DEFAULT NULL,
|
||||||
|
`creator` varchar(64) NULL DEFAULT '',
|
||||||
|
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updater` varchar(64) NULL DEFAULT '',
|
||||||
|
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT FALSE,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT = '退款订单';
|
Loading…
Reference in New Issue
Block a user