From f5a9bf72aa69853807122667d4e198db33577122 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sun, 17 Mar 2024 19:39:21 +0800 Subject: [PATCH 01/45] =?UTF-8?q?feat=20=E9=A9=BE=E9=A9=B6=E8=88=B1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 +--- _doc/Task.md | 7 +- .../report/CockpitReportController.java | 75 ++++++++++++ .../core/report/dao/CockpitReportMapper.java | 48 ++++++++ .../core/report/entity/ChannelOrderLine.java | 25 ++++ .../report/entity/ChannelProportionPie.java | 29 +++++ .../report/service/CockpitReportService.java | 108 ++++++++++++++++++ .../service/dto/report/ChannelLineReport.java | 29 +++++ .../param/report/CockpitReportQuery.java | 35 ++++++ .../mapper/report/CockpitReportMapper.xml | 100 ++++++++++++++++ 10 files changed, 458 insertions(+), 19 deletions(-) create mode 100644 daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelOrderLine.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/report/ChannelLineReport.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java create mode 100644 daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml diff --git a/README.md b/README.md index 69bb4366..d09e9ef9 100644 --- a/README.md +++ b/README.md @@ -163,24 +163,9 @@ public class SimplePayOrderTest { ## 🛣️ 路线图 > 当前处于功能开发阶段,部分功能可能会有调整,`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容 -[**开发进度和任务池**](/_doc/Task.md) - -[**更新记录**](/_doc/ChangeLog.md) - -### 2.0.X版本: -- [x] 对账比对功能实现 -- [ ] 支持转账、分账操作 -- [ ] 云闪付支付支持 -- [ ] 支付宝和微信增加V3版本接口支持 -- [ ] 消息通知支持消息中间件模式 - -### 2.1.X版本: -- [ ] 增加账户金额表 -- [ ] 增加统计管理 -- [ ] 支持微信消息通知 -- [ ] 支持钉钉消息通知 -- [ ] 新增支付单预警功能, 处理支付单与网关状态不一致且无法自动修复的情况 +[**当前开发进度和任务池**](/_doc/Task.md) +[**历史更新记录**](/_doc/ChangeLog.md) ## 🥂 Bootx 项目合集 - Bootx-Platform:单体版脚手架 [Gitee地址](https://gitee.com/bootx/bootx-platform) @@ -197,7 +182,7 @@ QQ扫码加入QQ交流群 微信扫码加入微信交流群

-微信图片_20240226144703 +微信图片_20240226144703

## 🍻 鸣谢 diff --git a/_doc/Task.md b/_doc/Task.md index 3f322585..66f6c9be 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,10 +1,15 @@ - 2.0.4: - [ ] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 - [ ] 首页驾驶舱功能: 各通道收入和支付情况 + - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 + - [x] 第二排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 + - [x] 第三排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 +- [ ] 报表功能 + - [ ] 各通道收入和支付情况 - [ ] 微信新增V3版本接口 - [ ] 增加转账功能 - [ ] 云闪付支持对账功能 +- [ ] 结算台DEMO增加云闪付示例 2.0.x 版本内容 - [ ] 统一关闭接口增加使用撤销关闭订单 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java new file mode 100644 index 00000000..526dd9f1 --- /dev/null +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java @@ -0,0 +1,75 @@ +package cn.bootx.platform.daxpay.admin.controller.report; + +import cn.bootx.platform.common.core.annotation.IgnoreAuth; +import cn.bootx.platform.common.core.rest.Res; +import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.common.core.util.ValidationUtil; +import cn.bootx.platform.daxpay.service.core.report.service.CockpitReportService; +import cn.bootx.platform.daxpay.service.dto.report.ChannelLineReport; +import cn.bootx.platform.daxpay.service.param.report.CockpitReportQuery; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springdoc.api.annotations.ParameterObject; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 驾驶舱接口 + * @author xxm + * @since 2024/3/17 + */ +@IgnoreAuth// TODO 测试用, 后续删除 +@Tag(name = "驾驶舱接口") +@RestController +@RequestMapping("/report/cockpit") +@RequiredArgsConstructor +public class CockpitReportController { + private final CockpitReportService cockpitReportService; + + @Operation(summary = "支付金额(分)") + @GetMapping("/getPayAmount") + public ResResult getPayAmount(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getPayAmount(query)); + } + + @Operation(summary = "退款金额(分)") + @GetMapping("/getRefundAmount") + public ResResult getRefundAmount(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getRefundAmount(query)); + } + + @Operation(summary = "支付订单数量") + @GetMapping("/getPayOrderCount") + public ResResult getPayOrderCount(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getPayOrderCount(query)); + } + + @Operation(summary = "退款订单数量") + @GetMapping("/getRefundOrderCount") + public ResResult getRefundOrderCount(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getRefundOrderCount(query)); + } + + @Operation(summary = "支付通道折线图") + @GetMapping("/getPayChannelLine") + public ResResult> getPayChannelLine(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getPayChannelLine(query)); + } + + @Operation(summary = "退款通道折线图") + @GetMapping("/getRefundChannelLine") + public ResResult> getRefundChannelLine(@ParameterObject CockpitReportQuery query){ + ValidationUtil.validateParam(query); + return Res.ok(cockpitReportService.getRefundChannelLine(query)); + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java new file mode 100644 index 00000000..0654abcd --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java @@ -0,0 +1,48 @@ +package cn.bootx.platform.daxpay.service.core.report.dao; + +import cn.bootx.platform.daxpay.service.core.report.entity.ChannelOrderLine; +import cn.bootx.platform.daxpay.service.param.report.CockpitReportQuery; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 查询报表 + * @author xxm + * @since 2024/3/17 + */ +@Mapper +public interface CockpitReportMapper { + + /** + * 获取支付金额 + */ + Integer getPayAmount(CockpitReportQuery query); + + /** + * 获取退款金额 + */ + Integer getRefundAmount(CockpitReportQuery query); + + /** + * 获取支付订单数量 + */ + Integer getPayOrderCount(CockpitReportQuery query); + + /** + * 获取退款订单数量 + */ + Integer getRefundOrderCount(CockpitReportQuery query); + + /** + * 支付通道订单折线图 + */ + List getPayChannelLine(CockpitReportQuery query); + + /** + * 退款通道订单折线图 + */ + List getRefundChannelLine(CockpitReportQuery query); + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelOrderLine.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelOrderLine.java new file mode 100644 index 00000000..aefdc54e --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelOrderLine.java @@ -0,0 +1,25 @@ +package cn.bootx.platform.daxpay.service.core.report.entity; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 通道订单折线图 + * @author xxm + * @since 2024/3/17 + */ +@Data +@Accessors(chain = true) +@Schema(title = "通道订单折线图") +public class ChannelOrderLine { + + @Schema(description = "通道编码") + private String channel; + + @Schema(description = "订单金额") + private Integer count; + + @Schema(description = "订单数量") + private Integer sum; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java new file mode 100644 index 00000000..2d0762fa --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java @@ -0,0 +1,29 @@ +package cn.bootx.platform.daxpay.service.core.report.entity; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 支付通道占比饼图 + * @author xxm + * @since 2024/3/17 + */ +@Data +@Accessors(chain = true) +@Schema(title = "支付通道占比饼图") +public class ChannelProportionPie { + + @Schema(description = "通道编码") + private String code; + + @Schema(description = "通道名称") + private String name; + + @Schema(description = "占比") + private Double proportion; + + @Schema(description = "数量") + private Integer count; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java new file mode 100644 index 00000000..3432a730 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java @@ -0,0 +1,108 @@ +package cn.bootx.platform.daxpay.service.core.report.service; + +import cn.bootx.platform.common.core.function.CollectorsFunction; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.report.dao.CockpitReportMapper; +import cn.bootx.platform.daxpay.service.core.report.entity.ChannelOrderLine; +import cn.bootx.platform.daxpay.service.dto.report.ChannelLineReport; +import cn.bootx.platform.daxpay.service.param.report.CockpitReportQuery; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 驾驶舱接口 + * @author xxm + * @since 2024/3/15 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CockpitReportService { + + private final CockpitReportMapper cockpitReportMapper; + + /** + * 支付金额(分) + */ + public Integer getPayAmount(CockpitReportQuery query){ + // 获取支付成功的订单 + return cockpitReportMapper.getPayAmount(query); + } + + /** + * 退款金额(分) + */ + public Integer getRefundAmount(CockpitReportQuery query){ + return cockpitReportMapper.getRefundAmount(query); + } + + /** + * 支付订单数量 + */ + public Integer getPayOrderCount(CockpitReportQuery query){ + return cockpitReportMapper.getPayOrderCount(query); + } + + /** + * 退款订单数量 + */ + public Integer getRefundOrderCount(CockpitReportQuery query){ + return cockpitReportMapper.getRefundOrderCount(query); + } + + /** + * (折线图)显示各通道支付分为支付金额和订单数, + */ + public List getPayChannelLine(CockpitReportQuery query){ + Map lineMap = cockpitReportMapper.getPayChannelLine(query) + .stream() + .collect(Collectors.toMap(ChannelOrderLine::getChannel, Function.identity(), CollectorsFunction::retainLatest)); + // 根据系统中有的通道编码,获取对应的通道名称 + return Arrays.stream(PayChannelEnum.values()) + .map(e->{ + ChannelOrderLine channelOrderLine = lineMap.get(e.getCode()); + ChannelLineReport channelLineReport = new ChannelLineReport() + .setChannelCode(e.getCode()) + .setChannelName(e.getName()); + if (Objects.isNull(channelOrderLine)){ + channelLineReport.setOrderAmount(0).setOrderCount(0); + } else { + channelLineReport.setOrderAmount(channelOrderLine.getCount()) + .setOrderCount(channelOrderLine.getSum()); + } + return channelLineReport; + }).collect(Collectors.toList()); + } + + /** + * (折线图)显示各通道退款金额和订单数, + */ + public List getRefundChannelLine(CockpitReportQuery query){ + Map lineMap = cockpitReportMapper.getRefundChannelLine(query) + .stream() + .collect(Collectors.toMap(ChannelOrderLine::getChannel, Function.identity(), CollectorsFunction::retainLatest)); + // 根据系统中有的通道编码,获取对应的通道名称 + return Arrays.stream(PayChannelEnum.values()) + .map(e->{ + ChannelOrderLine channelOrderLine = lineMap.get(e.getCode()); + ChannelLineReport channelLineReport = new ChannelLineReport() + .setChannelCode(e.getCode()) + .setChannelName(e.getName()); + if (Objects.isNull(channelOrderLine)){ + channelLineReport.setOrderAmount(0).setOrderCount(0); + } else { + channelLineReport.setOrderAmount(channelOrderLine.getCount()) + .setOrderCount(channelOrderLine.getSum()); + } + return channelLineReport; + }).collect(Collectors.toList()); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/report/ChannelLineReport.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/report/ChannelLineReport.java new file mode 100644 index 00000000..10c7e96f --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/report/ChannelLineReport.java @@ -0,0 +1,29 @@ +package cn.bootx.platform.daxpay.service.dto.report; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 支付通道折线图报表 + * @author xxm + * @since 2024/3/17 + */ +@Data +@Accessors(chain = true) +@Schema(title = "支付通道折线图报表") +public class ChannelLineReport { + + @Schema(description = "支付通道编码") + private String channelCode; + + @Schema(description = "支付通道名称") + private String channelName; + + @Schema(description = "订单金额") + private Integer orderAmount; + + @Schema(description = "订单数量") + private Integer orderCount; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java new file mode 100644 index 00000000..0c59ce38 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java @@ -0,0 +1,35 @@ +package cn.bootx.platform.daxpay.service.param.report; + +import cn.hutool.core.date.DatePattern; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +/** + * 驾驶舱报表查询参数 + * @author xxm + * @since 2024/3/15 + */ +@Data +@Accessors(chain = true) +@Schema(title = "驾驶舱报表查询参数") +public class CockpitReportQuery { + + @NotNull(message = "开始时间不得为空") + @Schema(description = "开始时间") + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + private LocalDateTime startTime; + + @NotNull(message = "开始时间不得为空") + @Schema(description = "开始时间") + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + private LocalDateTime endTime; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml new file mode 100644 index 00000000..ffba7400 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Gitee From 095850700a9f4f06d1b18d04c89ca47f4cd2eee7 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 18 Mar 2024 00:10:15 +0800 Subject: [PATCH 02/45] =?UTF-8?q?feat=20=E9=A9=BE=E9=A9=B6=E8=88=B1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/CockpitReportController.java | 16 ++++++++-------- .../core/report/dao/CockpitReportMapper.java | 9 +++++---- .../report/service/CockpitReportService.java | 16 ++++++++-------- .../service/param/report/CockpitReportQuery.java | 4 ++-- .../mapper/report/CockpitReportMapper.xml | 4 ++-- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java index 526dd9f1..0a06f805 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/report/CockpitReportController.java @@ -58,18 +58,18 @@ public class CockpitReportController { return Res.ok(cockpitReportService.getRefundOrderCount(query)); } - @Operation(summary = "支付通道折线图") - @GetMapping("/getPayChannelLine") - public ResResult> getPayChannelLine(@ParameterObject CockpitReportQuery query){ + @Operation(summary = "显示通道支付订单金额和订单数") + @GetMapping("/getPayChannelInfo") + public ResResult> getPayChannelInfo(@ParameterObject CockpitReportQuery query){ ValidationUtil.validateParam(query); - return Res.ok(cockpitReportService.getPayChannelLine(query)); + return Res.ok(cockpitReportService.getPayChannelInfo(query)); } - @Operation(summary = "退款通道折线图") - @GetMapping("/getRefundChannelLine") - public ResResult> getRefundChannelLine(@ParameterObject CockpitReportQuery query){ + @Operation(summary = "显示通道退款订单金额和订单数") + @GetMapping("/getRefundChannelInfo") + public ResResult> getRefundChannelInfo(@ParameterObject CockpitReportQuery query){ ValidationUtil.validateParam(query); - return Res.ok(cockpitReportService.getRefundChannelLine(query)); + return Res.ok(cockpitReportService.getRefundChannelInfo(query)); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java index 0654abcd..4a09e3a9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/CockpitReportMapper.java @@ -5,6 +5,7 @@ import cn.bootx.platform.daxpay.service.param.report.CockpitReportQuery; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Optional; /** * 查询报表 @@ -17,12 +18,12 @@ public interface CockpitReportMapper { /** * 获取支付金额 */ - Integer getPayAmount(CockpitReportQuery query); + Optional getPayAmount(CockpitReportQuery query); /** * 获取退款金额 */ - Integer getRefundAmount(CockpitReportQuery query); + Optional getRefundAmount(CockpitReportQuery query); /** * 获取支付订单数量 @@ -37,12 +38,12 @@ public interface CockpitReportMapper { /** * 支付通道订单折线图 */ - List getPayChannelLine(CockpitReportQuery query); + List getPayChannelInfo(CockpitReportQuery query); /** * 退款通道订单折线图 */ - List getRefundChannelLine(CockpitReportQuery query); + List getRefundChannelInfo(CockpitReportQuery query); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java index 3432a730..96615c2b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java @@ -34,14 +34,14 @@ public class CockpitReportService { */ public Integer getPayAmount(CockpitReportQuery query){ // 获取支付成功的订单 - return cockpitReportMapper.getPayAmount(query); + return cockpitReportMapper.getPayAmount(query).orElse(0); } /** * 退款金额(分) */ public Integer getRefundAmount(CockpitReportQuery query){ - return cockpitReportMapper.getRefundAmount(query); + return cockpitReportMapper.getRefundAmount(query).orElse(0); } /** @@ -59,10 +59,10 @@ public class CockpitReportService { } /** - * (折线图)显示各通道支付分为支付金额和订单数, + * (折线图/占比图)显示各通道支付分为支付金额和订单数 */ - public List getPayChannelLine(CockpitReportQuery query){ - Map lineMap = cockpitReportMapper.getPayChannelLine(query) + public List getPayChannelInfo(CockpitReportQuery query){ + Map lineMap = cockpitReportMapper.getPayChannelInfo(query) .stream() .collect(Collectors.toMap(ChannelOrderLine::getChannel, Function.identity(), CollectorsFunction::retainLatest)); // 根据系统中有的通道编码,获取对应的通道名称 @@ -83,10 +83,10 @@ public class CockpitReportService { } /** - * (折线图)显示各通道退款金额和订单数, + * (折线图/占比图)显示各通道退款金额和订单数, */ - public List getRefundChannelLine(CockpitReportQuery query){ - Map lineMap = cockpitReportMapper.getRefundChannelLine(query) + public List getRefundChannelInfo(CockpitReportQuery query){ + Map lineMap = cockpitReportMapper.getRefundChannelInfo(query) .stream() .collect(Collectors.toMap(ChannelOrderLine::getChannel, Function.identity(), CollectorsFunction::retainLatest)); // 根据系统中有的通道编码,获取对应的通道名称 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java index 0c59ce38..e7a073a8 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/report/CockpitReportQuery.java @@ -26,8 +26,8 @@ public class CockpitReportQuery { @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime startTime; - @NotNull(message = "开始时间不得为空") - @Schema(description = "开始时间") + @NotNull(message = "结束时间不得为空") + @Schema(description = "结束时间") @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime endTime; diff --git a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml index ffba7400..26a0e40e 100644 --- a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml +++ b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml @@ -47,7 +47,7 @@ - SELECT channel, count(*) as count, @@ -62,7 +62,7 @@ - SELECT channel, count(*) as count, -- Gitee From fe18f41f84b89b1ed99b5fd4050d41e361b3027c Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 18 Mar 2024 14:18:48 +0800 Subject: [PATCH 03/45] =?UTF-8?q?fix=20=E8=AE=A2=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E5=80=BC=E5=92=8C=E9=87=91=E9=A2=9D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/core/report/service/CockpitReportService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java index 96615c2b..a0015f82 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/CockpitReportService.java @@ -75,8 +75,8 @@ public class CockpitReportService { if (Objects.isNull(channelOrderLine)){ channelLineReport.setOrderAmount(0).setOrderCount(0); } else { - channelLineReport.setOrderAmount(channelOrderLine.getCount()) - .setOrderCount(channelOrderLine.getSum()); + channelLineReport.setOrderAmount(channelOrderLine.getSum()) + .setOrderCount(channelOrderLine.getCount()); } return channelLineReport; }).collect(Collectors.toList()); @@ -99,8 +99,8 @@ public class CockpitReportService { if (Objects.isNull(channelOrderLine)){ channelLineReport.setOrderAmount(0).setOrderCount(0); } else { - channelLineReport.setOrderAmount(channelOrderLine.getCount()) - .setOrderCount(channelOrderLine.getSum()); + channelLineReport.setOrderAmount(channelOrderLine.getSum()) + .setOrderCount(channelOrderLine.getCount()); } return channelLineReport; }).collect(Collectors.toList()); -- Gitee From a8c1bb470b28600e49a76c49e2bebcfe41385e1f Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 18 Mar 2024 23:30:31 +0800 Subject: [PATCH 04/45] =?UTF-8?q?feat=20=E7=BB=93=E7=AE=97=E5=8F=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=91=E9=97=AA=E4=BB=98=E6=BC=94=E7=A4=BA?= =?UTF-8?q?,=20=E5=A2=9E=E5=8A=A0=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 7 +- .../daxpay/demo/service/AggregateService.java | 11 +- .../daxpay/sdk/code/AggregatePayEnum.java | 3 +- .../wechat/entity/WeChatPayConfig.java | 7 +- .../service/WeChatPayCallbackService.java | 1 - .../channel/wechat/WeChatPayConfigParam.java | 4 + .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application-prod.yml | 161 ++++++++++++++++++ 8 files changed, 187 insertions(+), 9 deletions(-) create mode 100644 daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml diff --git a/_doc/Task.md b/_doc/Task.md index 66f6c9be..bbddbe5e 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,12 +1,13 @@ 2.0.4: - [ ] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 -- [ ] 首页驾驶舱功能: 各通道收入和支付情况 +- [x] 首页驾驶舱功能: 各通道收入和支付情况 - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - - [x] 第二排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 - - [x] 第三排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 + - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 + - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 - [ ] 报表功能 - [ ] 各通道收入和支付情况 - [ ] 微信新增V3版本接口 + - [ ] 付款码回退到V2接口 - [ ] 增加转账功能 - [ ] 云闪付支持对账功能 - [ ] 结算台DEMO增加云闪付示例 diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java index ed0c3c96..bc406180 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java @@ -90,11 +90,15 @@ public class AggregateService { // 跳转支付宝中间页 return StrUtil.format("{}/aggregate/alipay?code={}", daxPayDemoProperties.getFrontH5Url(),code); } + // 微信支付 else if (ua.contains(AggregatePayEnum.UA_WECHAT_PAY.getCode())) { // 微信重定向到中间页, 因为微信需要授权后才能发起支付 return this.wxJsapiAuthPage(code); } - else { + // 云闪付 + else if (ua.contains(AggregatePayEnum.UA_UNION_PAY.getCode())) { + return StrUtil.format("{}/aggregate/wechatPay?code={}", daxPayDemoProperties.getFrontH5Url(),code); + } else { // 跳转到异常页 return StrUtil.format("{}/result/error?msg={}", daxPayDemoProperties.getFrontH5Url(), URLEncodeUtil.encode("请使用微信或支付宝扫码支付")); } @@ -247,6 +251,7 @@ public class AggregateService { } String[] wx = { "10", "11", "12", "13", "14", "15" }; String[] ali = { "25", "26", "27", "28", "29", "30" }; + String[] union = { "62" }; // 微信 if (StrUtil.startWithAny(authCode.substring(0, 2), wx)) { @@ -256,6 +261,10 @@ public class AggregateService { else if (StrUtil.startWithAny(authCode.substring(0, 2), ali)) { return PayChannelEnum.ALI; } + // 云闪付 + else if (StrUtil.startWithAny(authCode.substring(0, 2), union)) { + return PayChannelEnum.UNION_PAY; + } else { throw new BizException("不支持的支付方式"); } diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/AggregatePayEnum.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/AggregatePayEnum.java index c2ddb8c7..c05e4250 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/AggregatePayEnum.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/AggregatePayEnum.java @@ -13,7 +13,8 @@ import lombok.Getter; public enum AggregatePayEnum { UA_ALI_PAY("Alipay", "支付宝"), - UA_WECHAT_PAY("MicroMessenger", "微信支付"); + UA_WECHAT_PAY("MicroMessenger", "微信支付"), + UA_UNION_PAY("CloudPay", "云闪付"); /** 支付渠道字符编码 */ private final String code; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java index b1f32303..23a2429e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java @@ -5,6 +5,7 @@ import cn.bootx.platform.common.core.annotation.EncryptionField; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.common.mybatisplus.handler.StringListTypeHandler; +import cn.bootx.platform.daxpay.service.code.WeChatPayCode; import cn.bootx.platform.daxpay.service.core.channel.wechat.convert.WeChatConvert; import cn.bootx.platform.daxpay.service.dto.channel.wechat.WeChatPayConfigDto; import cn.bootx.table.modify.annotation.DbColumn; @@ -63,11 +64,13 @@ public class WeChatPayConfig extends MpBaseEntity implements EntityBaseFunction< @DbColumn(comment = "同步通知路径") private String returnUrl; - /** 接口版本, 使用v2还是v3接口 */ + /** + * 接口版本, 使用v2还是v3接口 + * @see WeChatPayCode#API_V2 + */ @DbColumn(comment = "接口版本") private String apiVersion; - /** 商户平台「API安全」中的 APIv2 密钥 */ @TableField(updateStrategy = FieldStrategy.ALWAYS) @BigField diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCallbackService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCallbackService.java index 34534224..0fba7715 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCallbackService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayCallbackService.java @@ -38,7 +38,6 @@ public class WeChatPayCallbackService extends AbsCallbackStrategy { @Resource private WeChatPayConfigService weChatPayConfigService; - /** * 策略标识 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java index f9c1a1d2..69f55dab 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java @@ -35,6 +35,10 @@ public class WeChatPayConfigParam { @Schema(description ="同步通知地址") private String returnUrl; + /** 接口版本, 使用v2还是v3接口 */ + @Schema(description = "接口版本") + private String apiVersion; + @Schema(description = "商户平台「API安全」中的 APIv2 密钥") private String apiKeyV2; diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index 26636ab5..76d7e30e 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -133,7 +133,7 @@ bootx: # 文件上传 file-upload: server-url: http://127.0.0.1:9000 -# 自动建表 +# 自动建表 生产环境关闭 table-modify: update-type: update database-type: mysql diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml new file mode 100644 index 00000000..dacc8b74 --- /dev/null +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml @@ -0,0 +1,161 @@ +server: + port: 9000 +spring: + datasource: + dynamic: + primary: master + datasource: + # 默认数据源 + master: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/dax-pay?serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&useSSL=false&nullCatalogMeansCurrent=true + username: root + password: root + hikari: + # 30 秒, 心跳检测 + keepalive-time: 30000 + # 300 分钟, 连接最大存活时间 + max-lifetime: 18000000 + redis: + host: 127.0.0.1 + port: 6379 + database: 1 + lettuce: + cluster: + refresh: + # 自适应拓扑刷新 + adaptive: true + # 群集拓扑刷新周期 + period: 60s + #静态资源加载配置 + mvc: + static-path-pattern: /** + web: + resources: + static-locations: classpath:/static/,classpath:/public/ + thymeleaf: + cache: false + # 定时任务 + quartz: + # 持久化方式 + job-store-type: jdbc + #定时任务启动开关,true-开 false-关 + auto-startup: true + #启动时更新己存在的Job + overwrite-existing-jobs: true + properties: + org: + quartz: + scheduler: + instanceName: quartzScheduler + instanceId: AUTO + threadPool: + threadCount: 10 + threadPriority: 5 + threadsInheritContextClassLoaderOfInitializingThread: true +knife4j: + # 开启增强配置 + enable: true + # 开启生产环境屏蔽 + production: true +# 项目配置 +bootx: + common: + # 接口文档 + swagger: + enabled: false + author: bootx + version: 2.0.3 + title: 开源支付平台-单商户 + description: 开源支付平台-单商户版 + # 缓存 + cache: + # 默认超时时间 30分钟 + default-ttl: 1800 + # 序列生成器 + sequence: + # 生成方式 + type: jdbc + # 序列生成器起始值 + range-start: 1 + # 序列生成器区间, 设置1每次都会操作数据库 + range-step: 1 + # 步长 + step: 1 + # 异常 + exception: + # 显示详细异常 + show-full-message: true + starter: + # 认证 + auth: + default-password: 123456 + # 关闭超级管理员登录 + enable-admin: false + ignore-urls: + - '/actuator/**' + - '/v3/api-docs/**' + - '/doc.html' + - '/swagger-resources/**' + - '/token/**' + - '/ws/**' + - '/demo/**' + - '/test/**' + - '/webjars/**' + - '/front/**' + - '/h5/**' + - '/css/**' + - '/error' + - '/favicon.ico' + # 审计日志 + audit-log: + # 审计日志存储 + store: jdbc + # ip归属地 + ip2region: + # 数据文件路径 + file-path: /data/ip2region/ip2region.xdb + # 查询方式 + search-type: cache + # 数据权限 + data-perm: + # 需要符合AES密钥的要求 + field-decrypt-key: "UCrtxSCwYZNCIlav" + # 文件上传 + file-upload: + server-url: http://127.0.0.1:9000 +# 自动建表 生产环境关闭 +table-modify: + update-type: none +dromara: + #文件存储配置, + x-file-storage: + #默认使用的存储平台 + default-platform: local + #缩略图后缀,例如【.min.jpg】【.png】 + thumbnail-suffix: ".min.jpg" + local-plus: + # 不启用自带的访问映射, 使用自定义的访问实现 + # 存储平台标识 + - platform: local + enableStorage: true + # 文件存储路径 + storage-path: D:/data/files/ +# 支付系统配置 +dax-pay: + # 服务地址 + server-url: http://pay1.bootx.cn + # 前端h5地址 + front-h5-url: http://pay1.bootx.cn/h5/# + # 前端web地址 + front-web-url: http://pay1.bootx.cn/# + # 演示模块 + demo: + # 网关地址 + server-url: http://pay1.bootx.cn/server + # 前端h5地址 + front-h5-url: http://pay1.bootx.cn/h5/# + # 签名秘钥 + sign-secret: 123456 + # 签名方式 + sign-type: hmac_sha256 -- Gitee From 90505b9f6d0814c5019bec9488b2bd98b62e2e14 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 21 Mar 2024 13:46:41 +0800 Subject: [PATCH 05/45] =?UTF-8?q?doc=20=E8=A1=A5=E5=85=85=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 4 +- ...\346\227\266\345\272\217\345\233\276.puml" | 17 +++++ ...\350\265\267\346\224\257\344\273\230.puml" | 17 +++++ ...\346\254\241\346\224\257\344\273\230.puml" | 42 ++++++++++ ...\346\224\257\344\273\230\345\256\235.puml" | 64 ++++++++++++++++ ...\351\203\250\351\200\200\346\254\276.puml" | 76 +++++++++++++++++++ .../service/AliPayReconcileService.java | 1 - .../service/UnionPayReconcileService.java | 7 ++ .../payment/pay/service/PayAssistService.java | 2 +- .../core/payment/pay/service/PayService.java | 5 +- 10 files changed, 228 insertions(+), 7 deletions(-) create mode 100644 "_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" create mode 100644 "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" create mode 100644 "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" create mode 100644 "_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" create mode 100644 "_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" diff --git a/_doc/Task.md b/_doc/Task.md index bbddbe5e..6e252783 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -9,8 +9,10 @@ - [ ] 微信新增V3版本接口 - [ ] 付款码回退到V2接口 - [ ] 增加转账功能 + - [ ] 支付宝 + - [ ] 微信 - [ ] 云闪付支持对账功能 -- [ ] 结算台DEMO增加云闪付示例 +- [x] 结算台DEMO增加云闪付示例 2.0.x 版本内容 - [ ] 统一关闭接口增加使用撤销关闭订单 diff --git "a/_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" "b/_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" new file mode 100644 index 00000000..23807444 --- /dev/null +++ "b/_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" @@ -0,0 +1,17 @@ +@startuml +autonumber + +actor 客户 as khd +participant 控制器 as kzq +participant 服务类 as fwl +participant DAO as dao + +khd -> kzq: 发送请求 +skinparam responseMessageBelowArrow true +kzq --> fwl ++: 组装参数 +fwl --> kzq ++: 返回功能 +kzq --> fwl --: 继续查询 +kzq --> kzq: 继续查询 +fwl --> dao ++ : 数据查询 +dao --> fwl: 查询 +@enduml diff --git "a/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" "b/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" new file mode 100644 index 00000000..23807444 --- /dev/null +++ "b/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" @@ -0,0 +1,17 @@ +@startuml +autonumber + +actor 客户 as khd +participant 控制器 as kzq +participant 服务类 as fwl +participant DAO as dao + +khd -> kzq: 发送请求 +skinparam responseMessageBelowArrow true +kzq --> fwl ++: 组装参数 +fwl --> kzq ++: 返回功能 +kzq --> fwl --: 继续查询 +kzq --> kzq: 继续查询 +fwl --> dao ++ : 数据查询 +dao --> fwl: 查询 +@enduml diff --git "a/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" "b/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" new file mode 100644 index 00000000..103cec56 --- /dev/null +++ "b/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" @@ -0,0 +1,42 @@ +@startuml +autonumber +skinparam responseMessageBelowArrow true + +title 支付代码时序图-以支付宝支付为例 + +actor 客户端 as Client +participant PayService +participant PayOrderService +participant PayAssistService +participant AliPayStrategy +participant PayStrategyFactory +participant AliPayService +participant ClientNoticeService + +Client -> PayService: 发送请求 +PayService --> PayAssistService: 校验支付状态 +PayService --> PayAssistService: 初始化上下文 +PayService -> PayService: 调用首次支付方法 +PayService -> PayAssistService: 创建支付订单和扩展记录并保存 +PayService <- PayAssistService: 返回支付订单对象 +PayService -> PayService: 调用支付方法进行发起支付 +PayService -> PayStrategyFactory: 通过工厂生成对应的策略组 +PayService <- PayStrategyFactory: 返回支付策略组 +PayService -> AliPayStrategy: 执行支付前处理动作 +AliPayStrategy --> AliPayStrategy: 支付宝参数验证和反序列化通道支付参数 +AliPayStrategy -> AliPayService: 检查并获取支付宝配置, 同时校验支付相关信息 +AliPayStrategy <- AliPayService: 返回检查结果和支付配置 +PayService <- AliPayStrategy: 支付前处理完成 +AliPayStrategy -> AliPayService: 调用网关接口进行进行支付 +AliPayService -> 支付宝支付网关: 根据情况调用对应类型的支付 +AliPayService <- 支付宝支付网关: 返回支付调用结果 +AliPayStrategy <- AliPayService: 返回支付结构体或者支付结果(写到现成变量中) +PayService <- AliPayStrategy: 支付调用完成 +PayService -> AliPayStrategy: 进行支付调用成功后处理 +AliPayStrategy --> ChannelOrderService: 保存通道支付订单 +AliPayStrategy --> ChannelOrderService: 如果已经支付完成, 保存流水记录 +PayService <- AliPayStrategy: 处理完成 +PayService --> ClientNoticeService: 如果支付成功, 发送通知 +Client <- PayService: 返回支付结果 + +@enduml diff --git "a/_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" "b/_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" new file mode 100644 index 00000000..0361fc74 --- /dev/null +++ "b/_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" @@ -0,0 +1,64 @@ +@startuml + +title 对账代码时序图-以支付宝对账为例 + +skinparam responseMessageBelowArrow true + +actor 客户端 as Client +participant ReconcileService +participant ReconcileOrderService +participant ReconcileStrategy +participant AliPayReconcileService +participant ReconcileDiffService +participant ReconcileOrderManager +participant ReconcileContext +participant ReconcileDetailManager +participant ReconcileStrategyFactory +participant AliGateway as 支付宝网关 + +autonumber +Client -> ReconcileService: 发起对账请求 + +group 1. 创建对账订单 + autonumber 1 + ReconcileService -> ReconcileStrategyFactory: 构建对账策略 + ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象 + ReconcileService -> ReconcileStrategy: 生成批次号 + ReconcileService <- ReconcileStrategy: 返回批次号 + ReconcileService -> ReconcileService: 创建对账订单 + ReconcileService -> ReconcileOrderManager: 保存对账订单 + ReconcileService <- ReconcileOrderManager: 返回对账订单 +end + +group 2. 下载对账单并进行保存 + autonumber 1 + ReconcileService -> ReconcileStrategyFactory: 构建对账策略 + ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象 + ReconcileService -> ReconcileStrategy: 下载对账单, 并进行解析进行保存 + ReconcileStrategy -> AliPayReconcileService: 发起对账单下载请求,获取对账单下载地址 + AliPayReconcileService -> AliGateway: 发起对账单下载请求,获取对账单下载地址 + AliPayReconcileService <- AliGateway: 返回对账单下载地址 + AliPayReconcileService -> AliGateway: 下载对账单 + AliPayReconcileService <- AliGateway: 返回对账单内容 + AliPayReconcileService -> AliPayReconcileService: 解析对账单, 同时生成通用对账单记录 + AliPayReconcileService --> ReconcileContext: 将解析后的通用对账单记录放到到上下文 + ReconcileStrategy <- AliPayReconcileService: 处理结束 + ReconcileService <- ReconcileStrategy: 处理结束 + ReconcileService <- ReconcileContext: 获取通用对账单记录 + ReconcileService --> reconcileDetailManager: 保存明细记录 +end + +group 3. 对账单比对 + autonumber 1 + ReconcileService -> ReconcileStrategyFactory: 构建对账策略 + ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象 + ReconcileService <--> ReconcileStrategy: 初始对账策略类 + ReconcileService <- ReconcileStrategy: 获取本地和网关订单数据 + ReconcileService -> ReconcileService: 比对本地和网关订单差异 + ReconcileService --> ReconcileDiffService: 保存差异记录 + +end +autonumber 2 +Client <- ReconcileService: 返回对账结束 + +@enduml diff --git "a/_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" "b/_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" new file mode 100644 index 00000000..1a723bad --- /dev/null +++ "b/_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" @@ -0,0 +1,76 @@ +@startuml + +autonumber +skinparam responseMessageBelowArrow true + +title 退款代码时序图-以支付宝退款全部退款为例 + +actor 客户端 as Client +participant RefundService +participant RefundStrategyFactory +participant AliRefundStrategy +participant RefundAssistService +participant AlipayConfigService +participant AliRefundService +participant PayOrderService +participant PayChannelOrderManager +participant PayChannelOrderService +participant AliRecordService +participant ClientNoticeService +participant 支付宝网关 as AlliGateway + +Client -> RefundService: 发起退款请求 + +group 1. 退款发起前准备 +autonumber 1 +RefundService -> RefundService: 使用适配方法发起全部退款 +RefundService <- RefundAssistService: 获取支付订单 +RefundService --> RefundAssistService: 检查退款参数, 同时补充一些数据 +RefundService --> RefundAssistService: 上下文初始化 + +RefundService -> RefundStrategyFactory: 通过工厂生成对应的策略组 +RefundService <- RefundStrategyFactory: 返回支付策略组 + +RefundService --> AliRefundStrategy: 初始化退款策略的参数 +AliRefundStrategy --> AliRefundStrategy: 执行初始化退款策略的参数 + +RefundService --> AliRefundStrategy: 退款前校验操作 +RefundService --> AliRefundStrategy: 生成通道退款订单对象 + +RefundService --> PayChannelOrderManager: 预扣支付相关订单要退款的金额并进行更新 +RefundService --> PayOrderService: 更新支付订单退款状态 +RefundService --> RefundAssistService: 创建退款相关订单,并对数据进行持久化保存 + +end + +group 2. 退款操作 +autonumber 1 + +RefundService -> AliRefundStrategy: 退款前准备操作 +AliRefundStrategy --> AlipayConfigService: 获取并初始化支付配置信息 +RefundService <- AliRefundStrategy: 退款前准备结束 + +RefundService -> AliRefundStrategy: 执行退款策略 +AliRefundStrategy -> AliRefundService : 执行退款操作 +AliRefundService --> AlliGateway: 发送退款指令 +AliRefundService -> AliRefundStrategy: 返回结果 +RefundService <- AliRefundStrategy: 退款执行结束 + +end + +group 3. 退款发起成功后操作 +autonumber 1 +RefundService -> AliRefundStrategy: 执行退款发起成功后操作 +AliRefundStrategy --> AliRefundStrategy: 更新退款订单数据状态 +AliRefundStrategy --> PayChannelOrderService: 更新支付通道订单中的状态属性 +AliRefundStrategy --> AliRecordService: 如果退款完成, 保存流水记录 +RefundService <- AliRefundStrategy: 执行完成 + +RefundService --> PayOrderService: 更新支付订单信息 +RefundService --> RefundAssistService: 更新退款订单和相关通道退款订单 +RefundService --> ClientNoticeService: 如果支付完成发送退款成功通知 + +end +autonumber 2 +Client <- RefundService: 返回退款调用结果 +@enduml diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java index 0a796519..9e1e860e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java @@ -156,7 +156,6 @@ public class AliPayReconcileService { reconcileDetail.setOrderId(billDetail.getBatchNo()) .setType(ReconcileTradeEnum.REFUND.getCode()); } - return reconcileDetail; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java index d6abb838..18c12667 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java @@ -27,4 +27,11 @@ public class UnionPayReconcileService { // 下载对账单 Map stringObjectMap = unionPayKit.downloadBill(date, RECONCILE_BILL_TYPE); } + + /** + * 转换和保存 + */ + public void convertAndSave(){ + + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java index 3c62062b..c0733e90 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java @@ -160,7 +160,7 @@ public class PayAssistService { /** * 创建并保存通道支付订单 */ - public void createPayChannelOrder(List payStrategies) { + public void savePayChannelOrder(List payStrategies) { PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); List channelOrders = payStrategies.stream() .map(AbsPayStrategy::getChannelOrder) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index be1e1c63..0444faab 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -9,7 +9,6 @@ import cn.bootx.platform.daxpay.result.pay.PayResult; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; -import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderService; @@ -53,8 +52,6 @@ public class PayService { private final ClientNoticeService clientNoticeService; - private final PayChannelOrderManager payChannelOrderManager; - private final LockTemplate lockTemplate; /** @@ -162,7 +159,7 @@ public class PayService { // 4.2 支付调用成功操作, 进行扣款、创建记录类类似的操作 strategies.forEach(AbsPayStrategy::doSuccessHandler); // 4.3 保存通道支付订单 - payAssistService.createPayChannelOrder(strategies); + payAssistService.savePayChannelOrder(strategies); // 5.1 如果没有异步支付, 直接进行订单完成处理 if (PayUtil.isNotSync(payParam.getPayChannels())) { -- Gitee From 730876021e4c8afe88cae0b1fcb34269ff314ae4 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 21 Mar 2024 23:23:21 +0800 Subject: [PATCH 06/45] =?UTF-8?q?feat=20=E6=94=AF=E4=BB=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=94=B9=E4=B8=BA=E5=85=88=E8=90=BD=E5=BA=93,=20?= =?UTF-8?q?=E5=90=8E=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gateway/controller/TestController.java | 10 + .../alipay/service/AliPayTransferService.java | 40 ++++ .../convert/TransferOrderConvert.java | 15 ++ .../transfer/dao/TransferOrderManager.java | 18 ++ .../transfer/dao/TransferOrderMapper.java | 14 ++ .../order/transfer/entity/TransferOrder.java | 49 +++++ .../service/TransferOrderService.java | 16 ++ .../payment/pay/result/StrategyAndOrder.java | 25 +++ .../core/payment/pay/service/PayService.java | 181 ++++++++++++++---- .../payment/pay/strategy/AliPayStrategy.java | 1 + .../pay/strategy/UnionPayStrategy.java | 1 + .../pay/strategy/WeChatPayStrategy.java | 4 +- .../transfer/factory/TransferFactory.java | 12 ++ .../transfer/service/TransferService.java | 16 ++ .../strategy/AliPayTransferStrategy.java | 49 +++++ .../daxpay/service/func/AbsPayStrategy.java | 3 +- .../service/func/AbsTransferStrategy.java | 23 +++ daxpay-single/daxpay-single-start/pom.xml | 6 + 18 files changed, 445 insertions(+), 38 deletions(-) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/convert/TransferOrderConvert.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/entity/TransferOrder.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/service/TransferOrderService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/result/StrategyAndOrder.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/factory/TransferFactory.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/service/TransferService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/strategy/AliPayTransferStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsTransferStrategy.java diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java index beafec15..e0d72911 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java @@ -4,6 +4,7 @@ import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayTransferService; import cn.hutool.core.thread.ThreadUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; @@ -27,6 +28,7 @@ import java.util.Objects; @RequiredArgsConstructor public class TestController { private final LockTemplate lockTemplate; + private final AliPayTransferService aliPayTransferService; @Operation(summary = "锁测试1") @GetMapping("/lock1") @@ -54,7 +56,15 @@ public class TestController { @Operation(summary = "微信回调测试") @GetMapping(value = {"/wxcs/","wxcs"}) public String wxcs(){ + return "ok"; + } + + @IgnoreAuth + @Operation(summary = "支付宝回调测试") + @GetMapping("/queryAmount") + public String alipay(){ + aliPayTransferService.queryAccountAmount(); return "ok"; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java new file mode 100644 index 00000000..8f993f4d --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java @@ -0,0 +1,40 @@ +package cn.bootx.platform.daxpay.service.core.channel.alipay.service; + +import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; +import com.alipay.api.domain.AlipayFundAccountQueryModel; +import com.alipay.api.response.AlipayFundAccountQueryResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class AliPayTransferService { + + private final AliPayConfigService payConfigService; + /** + * 余额查询接口 + */ + @SneakyThrows + public void queryAccountAmount() { + + AliPayConfig config = payConfigService.getAndCheckConfig(); + payConfigService.initConfig(config); + AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel(); + model.setAccountType("ACCTRANS_ACCOUNT"); + model.setAlipayUserId(config.getAppId()); + AlipayFundAccountQueryResponse response = AliPayApi.accountQueryToResponse(model, null); + System.out.println(response); + } + + /** + * 转账接口 + */ + @SneakyThrows + public void transfer() { + + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/convert/TransferOrderConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/convert/TransferOrderConvert.java new file mode 100644 index 00000000..6881544e --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/convert/TransferOrderConvert.java @@ -0,0 +1,15 @@ +package cn.bootx.platform.daxpay.service.core.order.transfer.convert; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * + * @author xxm + * @since 2024/3/21 + */ +@Mapper +public interface TransferOrderConvert { + TransferOrderConvert CONVERT = Mappers.getMapper(TransferOrderConvert.class); + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderManager.java new file mode 100644 index 00000000..7d0e3cfa --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderManager.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.core.order.transfer.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.order.transfer.entity.TransferOrder; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +/** + * + * @author xxm + * @since 2024/3/21 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class TransferOrderManager extends BaseManager { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderMapper.java new file mode 100644 index 00000000..01f37d64 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/dao/TransferOrderMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.order.transfer.dao; + +import cn.bootx.platform.daxpay.service.core.order.transfer.entity.TransferOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/21 + */ +@Mapper +public interface TransferOrderMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/entity/TransferOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/entity/TransferOrder.java new file mode 100644 index 00000000..46ac8e0d --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/entity/TransferOrder.java @@ -0,0 +1,49 @@ +package cn.bootx.platform.daxpay.service.core.order.transfer.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.table.modify.annotation.DbTable; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 转账订单 + * @author xxm + * @since 2024/3/21 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@DbTable(comment = "转账订单") +@TableName("pay_transfer_order") +public class TransferOrder extends MpBaseEntity { + + /** 业务号 */ + private String outTradeNo; + + /** + * 支付通道 + * @see PayChannelEnum + */ + private String channel; + + /** 金额 */ + private Integer amount; + + /** 状态 */ + private String status; + + /** 付款方 */ + private String payer; + + /** 收款方 */ + private String payee; + + /** 成功时间 */ + private LocalDateTime successTime; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/service/TransferOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/service/TransferOrderService.java new file mode 100644 index 00000000..3782061c --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/transfer/service/TransferOrderService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.daxpay.service.core.order.transfer.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 转正订单服务 + * @author xxm + * @since 2024/3/21 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TransferOrderService { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/result/StrategyAndOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/result/StrategyAndOrder.java new file mode 100644 index 00000000..c41cdfa3 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/result/StrategyAndOrder.java @@ -0,0 +1,25 @@ +package cn.bootx.platform.daxpay.service.core.payment.pay.result; + +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; +import cn.bootx.platform.daxpay.service.func.AbsPayStrategy; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +/** + * 策略和订单 + * @author xxm + * @since 2024/3/21 + */ +@Getter +@AllArgsConstructor +public class StrategyAndOrder { + + /** 支付订单 */ + private final PayOrder order; + + /** 支付策略集合 */ + private final List strategies; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 0444faab..e28b13ec 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.core.payment.pay.service; import cn.bootx.platform.common.core.exception.RepetitiveOperationException; +import cn.bootx.platform.common.core.function.CollectorsFunction; import cn.bootx.platform.daxpay.exception.pay.PayUnsupportedMethodException; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; @@ -9,6 +10,8 @@ import cn.bootx.platform.daxpay.result.pay.PayResult; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderService; @@ -19,20 +22,24 @@ import cn.bootx.platform.daxpay.util.PayUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.extra.spring.SpringUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; -import static cn.bootx.platform.daxpay.code.PayStatusEnum.*; +import static cn.bootx.platform.daxpay.code.PayStatusEnum.SUCCESS; /** @@ -50,6 +57,8 @@ public class PayService { private final PayAssistService payAssistService; + private final PayChannelOrderManager channelOrderManager; + private final ClientNoticeService clientNoticeService; private final LockTemplate lockTemplate; @@ -62,6 +71,8 @@ public class PayService { * 注意: * 组合支付在非第一次支付的时候,只对新传入的异步支付通道进行处理,该通道的价格使用第一次发起的价格,旧的同步支付如果传入后也不做处理, * 支付单中支付通道列表将会为 旧有的同步支付+新传入的异步支付方式(在具体支付实现中处理) + * + * 订单数据会先进行入库, 才会进行发起支付, 在调用各通道支付之前发生错误, 数据不会入库 */ @Transactional(rollbackFor = Exception.class) public PayResult pay(PayParam payParam) { @@ -81,18 +92,38 @@ public class PayService { // 初始化上下文 payAssistService.initPayContext(payOrder, payParam); - // 异步支付且非第一次支付 - if (Objects.nonNull(payOrder) && payOrder.isAsyncPay()) { - return this.paySyncNotFirst(payParam, payOrder); + // 订单为空, 创建支付订单和通道支付订单 + if (Objects.isNull(payOrder)){ + // 预支付处理, 无论请求成功还是失败, 各种订单对象都会保存 + List strategies = SpringUtil.getBean(this.getClass()).prePay(payParam); + // 执行首次支付逻辑 + return this.onePay(strategies); } else { - // 第一次发起支付或同步支付 - return this.firstPay(payParam, payOrder); + // 分为同步通道全部支付成功和所有支付都是支付中状态(上次支付失败) + return this.towPay(payParam, payOrder); } } finally { lockTemplate.releaseLock(lock); } } + /** + * 组合支付分为同步通道全部支付成功和所有支付都是支付中状态(上次支付失败) + * 单通道支付不需要区分上次支付发起是否成功 + */ + private PayResult towPay(PayParam payParam, PayOrder payOrder) { + // 判断是否组合支付且同时包含异步支付 + if (payOrder.isCombinationPay()&&payOrder.isAsyncPay()) { + // 同步支付通道全部支付成功, 单独走异步支付支付流程 + this.onlyAsyncPay(payParam, payOrder); + // 通道订单全部支付中, 相当于上次支付异常, 重新走支付流程 + return this.allPay(payParam, payOrder); + } else { + // 单通道支付走标准支付流程 + return this.allPay(payParam, payOrder); + } + } + /** * 简单下单, 可以视为不支持组合支付的下单接口 */ @@ -111,14 +142,46 @@ public class PayService { return this.pay(payParam); } + + /** + * 预支付处理, 无论请求成功还是失败, 各种订单对象都会保存 + * 1. 校验参数 + * 2. 创建支付订单/通道支付订单/扩展信息 + * 3, 返回数据 + */ + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public List prePay(PayParam payParam){ + + // 价格检测 + PayUtil.validationAmount(payParam.getPayChannels()); + + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + + // 获取支付方式,通过工厂生成对应的策略组 + List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); + if (CollectionUtil.isEmpty(strategies)) { + throw new PayUnsupportedMethodException(); + } + // 初始化支付的参数 + for (AbsPayStrategy strategy : strategies) { + strategy.initPayParam(payOrder, payParam); + } + + // 执行支付前处理动作 + strategies.forEach(AbsPayStrategy::doBeforePayHandler); + // 执行通道支付通道订单的生成 + strategies.forEach(AbsPayStrategy::generateChannelOrder); + + // 保存通道支付订单 + payAssistService.savePayChannelOrder(strategies); + return strategies; + } + /** * 发起的第一次支付请求(同步/异步) */ private PayResult firstPay(PayParam payParam, PayOrder payOrder) { - // 1. 已经发起过支付情况直接返回支付结果 - if (Objects.nonNull(payOrder)) { - return PayBuilder.buildPayResultByPayOrder(payOrder); - } // 2. 价格检测 PayUtil.validationAmount(payParam.getPayChannels()); @@ -127,48 +190,103 @@ public class PayService { payOrder = payAssistService.createPayOrder(payParam); // 4. 调用支付方法进行发起支付 - this.firstPayHandler(payParam, payOrder); + this.allPay(payParam, payOrder); // 5. 返回支付结果 return PayBuilder.buildPayResultByPayOrder(payOrder); } + /** - * 执行第一次发起支付的方法 + * 执行首次支付操作 */ - private void firstPayHandler(PayParam payParam, PayOrder payOrder) { + public PayResult onePay(List strategies){ + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + // 支付操作 + try { + strategies.forEach(AbsPayStrategy::doPayHandler); + } catch (Exception e) { + // 记录错误原因 + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + payOrderExtra.setErrorMsg(e.getMessage()); + throw e; + } + PayOrder payOrder = payInfo.getPayOrder(); + + // 支付调用成功操作, 进行扣款、创建记录类类似的操作 + strategies.forEach(AbsPayStrategy::doSuccessHandler); - // 1.获取支付方式,通过工厂生成对应的策略组 + // 如果没有异步支付, 直接进行订单完成处理 + if (!payOrder.isAsyncPay()) { + // 修改支付订单状态为成功 + payOrder.setStatus(SUCCESS.getCode()) + .setPayTime(LocalDateTime.now()); + payOrderService.updateById(payOrder); + } + // 如果异步支付完成, 进行订单完成处理, 同时发送回调消息 + PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); + if (asyncPayInfo.isPayComplete()) { + payOrder.setGatewayOrderNo(asyncPayInfo.getGatewayOrderNo()) + .setStatus(SUCCESS.getCode()) + .setPayTime(LocalDateTime.now()); + payOrderService.updateById(payOrder); + } + + // 如果支付完成 发送通知 + if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ + clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); + } + // 组装返回参数 + return PayBuilder.buildPayResultByPayOrder(payOrder); + } + + + /** + * 执行所有的支付方法 + */ + private PayResult allPay(PayParam payParam, PayOrder payOrder) { + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + + // 获取支付方式,通过工厂生成对应的策略组 List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); if (CollectionUtil.isEmpty(strategies)) { throw new PayUnsupportedMethodException(); } + // 查询通道支付订单 + List orders = channelOrderManager.findAllByPaymentId(payOrder.getId()); + Map channelOrderMap = orders.stream() + .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainFirst)); - // 2.初始化支付的参数 + // 初始化支付参数 for (AbsPayStrategy strategy : strategies) { strategy.initPayParam(payOrder, payParam); + strategy.setChannelOrder(channelOrderMap.get(strategy.getChannel().getCode())); } - // 3.1 执行支付前处理动作 + // 执行支付前处理动作 strategies.forEach(AbsPayStrategy::doBeforePayHandler); - // 3.2 执行通道支付单的生成动作 - strategies.forEach(AbsPayStrategy::generateChannelOrder); + // 支付操作 + + try { + strategies.forEach(AbsPayStrategy::doPayHandler); + } catch (Exception e) { + // 记录错误原因 + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + payOrderExtra.setErrorMsg(e.getMessage()); + throw e; + } - // 4.1 支付操作 - strategies.forEach(AbsPayStrategy::doPayHandler); - // 4.2 支付调用成功操作, 进行扣款、创建记录类类似的操作 + // 支付调用成功操作, 进行扣款、创建记录类类似的操作 strategies.forEach(AbsPayStrategy::doSuccessHandler); - // 4.3 保存通道支付订单 - payAssistService.savePayChannelOrder(strategies); - // 5.1 如果没有异步支付, 直接进行订单完成处理 + // 如果没有异步支付, 直接进行订单完成处理 if (PayUtil.isNotSync(payParam.getPayChannels())) { // 修改支付订单状态为成功 payOrder.setStatus(SUCCESS.getCode()) .setPayTime(LocalDateTime.now()); payOrderService.updateById(payOrder); } - // 5.2 如果异步支付完成, 进行订单完成处理, 同时发送回调消息 + // 如果异步支付完成, 进行订单完成处理, 同时发送回调消息 PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); if (asyncPayInfo.isPayComplete()) { payOrder.setGatewayOrderNo(asyncPayInfo.getGatewayOrderNo()) @@ -179,22 +297,15 @@ public class PayService { // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ - PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); } + return PayBuilder.buildPayResultByPayOrder(payOrder); } /** * 异步支付执行(非第一次请求), 只执行异步支付策略, 因为同步支付已经支付成功. 报错不影响继续发起支付 */ - private PayResult paySyncNotFirst(PayParam payParam, PayOrder payOrder) { - - // 1. 处理支付结束情况(完成/退款/关闭/错误) - List trades = Arrays.asList(SUCCESS.getCode(), CLOSE.getCode(), PARTIAL_REFUND.getCode(), - REFUNDED.getCode(), REFUNDING.getCode(), FAIL.getCode()); - if (trades.contains(payOrder.getStatus())) { - return PayBuilder.buildPayResultByPayOrder(payOrder); - } + private PayResult onlyAsyncPay(PayParam payParam, PayOrder payOrder) { // 2.获取 异步支付通道,通过工厂生成对应的策略组(只包含异步支付的策略, 同步支付已经成功不再继续执行) PayChannelParam payChannelParam = payAssistService.getAsyncPayParam(payParam, payOrder); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java index deff9371..04b63707 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java @@ -95,6 +95,7 @@ public class AliPayStrategy extends AbsPayStrategy { */ @Override public void generateChannelOrder() { + super.generateChannelOrder(); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java index 3f8de3bc..43ec5fb8 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java @@ -98,6 +98,7 @@ public class UnionPayStrategy extends AbsPayStrategy { */ @Override public void generateChannelOrder() { + super.generateChannelOrder(); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java index cc26fa25..0df77c4d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java @@ -104,7 +104,9 @@ public class WeChatPayStrategy extends AbsPayStrategy { * 不使用默认的生成通道支付单方法, 异步支付通道的支付订单自己管理 */ @Override - public void generateChannelOrder() {} + public void generateChannelOrder() { + super.generateChannelOrder(); + } /** * 初始化微信支付 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/factory/TransferFactory.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/factory/TransferFactory.java new file mode 100644 index 00000000..5fb890c8 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/factory/TransferFactory.java @@ -0,0 +1,12 @@ +package cn.bootx.platform.daxpay.service.core.payment.transfer.factory; + +import lombok.experimental.UtilityClass; + +/** + * 转账工具类 + * @author xxm + * @since 2024/3/21 + */ +@UtilityClass +public class TransferFactory { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/service/TransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/service/TransferService.java new file mode 100644 index 00000000..38511f00 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/service/TransferService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.daxpay.service.core.payment.transfer.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 转账服务 + * @author xxm + * @since 2024/3/21 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TransferService { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/strategy/AliPayTransferStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/strategy/AliPayTransferStrategy.java new file mode 100644 index 00000000..ae95d5a7 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/transfer/strategy/AliPayTransferStrategy.java @@ -0,0 +1,49 @@ +package cn.bootx.platform.daxpay.service.core.payment.transfer.strategy; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayTransferService; +import cn.bootx.platform.daxpay.service.func.AbsTransferStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 支付宝转账测策略 + * @author xxm + * @since 2024/3/21 + */ +@Slf4j +@Service +@Scope(SCOPE_PROTOTYPE) +@RequiredArgsConstructor +public class AliPayTransferStrategy extends AbsTransferStrategy { + + private final AliPayConfigService payConfigService; + + private final AliPayTransferService aliPayTransferService; + + private AliPayConfig config; + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.ALI; + } + + /** + * 转账前操作 + */ + @Override + public void doBeforeHandler() { + this.config = payConfigService.getAndCheckConfig(); + payConfigService.initConfig(this.config); + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java index a5e5fc08..a0b48540 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsPayStrategy.java @@ -58,8 +58,7 @@ public abstract class AbsPayStrategy implements PayStrategy{ * 支付调起成功的处理方式 */ public void doSuccessHandler() { - this.channelOrder.setStatus(PayStatusEnum.SUCCESS.getCode()) - .setPayTime(LocalDateTime.now()); + this.channelOrder.setStatus(PayStatusEnum.SUCCESS.getCode()).setPayTime(LocalDateTime.now()); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsTransferStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsTransferStrategy.java new file mode 100644 index 00000000..74b2238f --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsTransferStrategy.java @@ -0,0 +1,23 @@ +package cn.bootx.platform.daxpay.service.func; + +import cn.bootx.platform.daxpay.service.core.order.transfer.entity.TransferOrder; +import lombok.Getter; +import lombok.Setter; + +/** + * 转账抽象策略 + * @author xxm + * @since 2024/3/21 + */ +@Getter +@Setter +public abstract class AbsTransferStrategy implements PayStrategy{ + /** 转账订单 */ + private TransferOrder transferOrder; + + /** + * 转账前操作 + */ + public void doBeforeHandler(){} + +} diff --git a/daxpay-single/daxpay-single-start/pom.xml b/daxpay-single/daxpay-single-start/pom.xml index c3d65fc3..bb0ad727 100644 --- a/daxpay-single/daxpay-single-start/pom.xml +++ b/daxpay-single/daxpay-single-start/pom.xml @@ -40,6 +40,12 @@ daxpay-single-demo ${daxpay.version} + + cn.afterturn + easypoi-spring-boot-starter + 4.4.0 + + -- Gitee From 88c7de465c8dd513fdc93d6d0fcaa239da30e6de Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Fri, 22 Mar 2024 23:42:08 +0800 Subject: [PATCH 07/45] =?UTF-8?q?feat=20=E6=94=AF=E4=BB=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=8B=86=E5=88=86=E4=B8=BA=E4=B8=89=E7=B1=BB=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=88=86=E5=88=AB=E5=A4=84=E7=90=86,=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 11 +- .../service/common/context/PlatformLocal.java | 3 + .../alipay/service/AliPayTransferService.java | 4 +- .../pay/service/PayChannelOrderService.java | 10 +- .../common/service/PaymentAssistService.java | 1 + .../core/payment/pay/service/PayService.java | 329 +++++++++--------- .../payment/pay/strategy/AliPayStrategy.java | 4 +- .../pay/strategy/UnionPayStrategy.java | 4 +- .../pay/strategy/WeChatPayStrategy.java | 18 +- .../system/config/entity/PlatformConfig.java | 5 +- .../daxpay/service/func/AbsPayStrategy.java | 20 +- daxpay-single/daxpay-single-start/pom.xml | 6 - .../src/main/resources/application-dev.yml | 10 +- 13 files changed, 217 insertions(+), 208 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 6e252783..dc72afd1 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -7,13 +7,20 @@ - [ ] 报表功能 - [ ] 各通道收入和支付情况 - [ ] 微信新增V3版本接口 - - [ ] 付款码回退到V2接口 + - [ ] 付款码支付自动路由到V2接口 - [ ] 增加转账功能 - [ ] 支付宝 - [ ] 微信 + - [ ] 云闪付 +- [ ] 增加账户余额查询功能 + - [ ] 支付宝 + - [ ] 微信 + - [ ] 云闪付 - [ ] 云闪付支持对账功能 - [x] 结算台DEMO增加云闪付示例 - +- [ ] 增加支付限额 + - [ ] 各通道支持单独的限额 + - [ ] 整个订单支持整体的限额 2.0.x 版本内容 - [ ] 统一关闭接口增加使用撤销关闭订单 - [ ] 增加各类日志记录,例如钱包的各项操作 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java index 592ca974..36dec826 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java @@ -33,4 +33,7 @@ public class PlatformLocal { /** 订单支付超时(分钟) */ private Integer orderTimeout; + + /** 支付限额 */ + private Integer limitAmount; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java index 8f993f4d..d8442d3e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java @@ -15,17 +15,17 @@ import org.springframework.stereotype.Service; public class AliPayTransferService { private final AliPayConfigService payConfigService; + /** * 余额查询接口 */ @SneakyThrows public void queryAccountAmount() { - AliPayConfig config = payConfigService.getAndCheckConfig(); payConfigService.initConfig(config); AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel(); model.setAccountType("ACCTRANS_ACCOUNT"); - model.setAlipayUserId(config.getAppId()); + model.setAlipayUserId("2088441532699265"); AlipayFundAccountQueryResponse response = AliPayApi.accountQueryToResponse(model, null); System.out.println(response); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java index 441b671c..7b0f8029 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java @@ -16,6 +16,7 @@ import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; @@ -51,13 +52,13 @@ public class PayChannelOrderService { /** * 切换支付订单关联的异步支付通道, 同时会设置是否支付完成状态, 并返回通道订单 + * 使用单独事务 */ - @Transactional(rollbackFor = Exception.class) + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public PayChannelOrder switchAsyncPayChannel(PayOrder payOrder, PayChannelParam payChannelParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 是否支付完成 PayStatusEnum payStatus = payInfo.isPayComplete() ? PayStatusEnum.SUCCESS : PayStatusEnum.PROGRESS; - // 判断新发起的 Optional payOrderChannelOpt = channelOrderManager.findByPaymentIdAndChannel(payOrder.getId(), payChannelParam.getChannel()); // 扩展信息处理 Map channelParam = payChannelParam.getChannelParam(); @@ -91,7 +92,10 @@ public class PayChannelOrderService { .setChannelExtra(channelParamStr) .setStatus(payStatus.getCode()); channelOrderManager.updateById(payChannelOrder); - payInfo.getPayChannelOrders().add(payOrderChannelOpt.get()); + // 更新时一次请求有多次访问, 对上下文中的通道支付订单进行替换 + List payChannelOrders = payInfo.getPayChannelOrders(); + payChannelOrders.removeIf(o->Objects.equals(o.getChannel(),payChannelOrder.getChannel())); + payChannelOrders.add(payOrderChannelOpt.get()); return payChannelOrder; } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java index a09d16bc..f31a90fd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java @@ -41,6 +41,7 @@ public class PaymentAssistService { platform.setSignSecret(config.getSignSecret()); platform.setNotifyUrl(config.getNotifyUrl()); platform.setOrderTimeout(config.getOrderTimeout()); + platform.setLimitAmount(config.getLimitAmount()); platform.setWebsiteUrl(config.getWebsiteUrl()); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index e28b13ec..374d8b71 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -1,7 +1,7 @@ package cn.bootx.platform.daxpay.service.core.payment.pay.service; import cn.bootx.platform.common.core.exception.RepetitiveOperationException; -import cn.bootx.platform.common.core.function.CollectorsFunction; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.exception.pay.PayUnsupportedMethodException; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; @@ -10,8 +10,6 @@ import cn.bootx.platform.daxpay.result.pay.PayResult; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; -import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; -import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderService; @@ -34,11 +32,11 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.Objects; -import java.util.function.Function; +import java.util.Optional; import java.util.stream.Collectors; +import static cn.bootx.platform.daxpay.code.PayChannelEnum.ASYNC_TYPE; import static cn.bootx.platform.daxpay.code.PayStatusEnum.SUCCESS; @@ -57,15 +55,34 @@ public class PayService { private final PayAssistService payAssistService; - private final PayChannelOrderManager channelOrderManager; - private final ClientNoticeService clientNoticeService; private final LockTemplate lockTemplate; + /** + * 简单下单, 可以视为不支持组合支付的下单接口 + */ + @Transactional(rollbackFor = Exception.class) + public PayResult simplePay(SimplePayParam simplePayParam) { + // 组装支付参数 + PayParam payParam = new PayParam(); + PayChannelParam payChannelParam = new PayChannelParam(); + payChannelParam.setChannel(simplePayParam.getChannel()); + payChannelParam.setWay(simplePayParam.getPayWay()); + payChannelParam.setAmount(simplePayParam.getAmount()); + payChannelParam.setChannelParam(simplePayParam.getChannelParam()); + BeanUtil.copyProperties(simplePayParam,payParam, CopyOptions.create().ignoreNullValue()); + payParam.setPayChannels(Collections.singletonList(payChannelParam)); + // 复用支付下单接口 + return this.pay(payParam); + } + + + /** + * 支付入口 * 支付下单接口(同步/异步/组合支付) - * 1. 同步支付:都只会在第一次执行中就完成支付,例如钱包、储值卡都是调用完就进行了扣减,完成了支付记录 + * 1. 同步支付:包含一个或多个同步支付通道进行支付 * 2. 异步支付:例如支付宝、微信,发起支付后还需要跳转第三方平台进行支付,支付后通常需要进行回调,之后才完成支付记录 * 3. 组合支付:主要是混合了同步支付和异步支付,同时异步支付只能有一个,在支付时先对同步支付进行扣减,然后异步支付回调结束后完成整个支付单 * 注意: @@ -74,10 +91,12 @@ public class PayService { * * 订单数据会先进行入库, 才会进行发起支付, 在调用各通道支付之前发生错误, 数据不会入库 */ - @Transactional(rollbackFor = Exception.class) - public PayResult pay(PayParam payParam) { + public PayResult pay(PayParam payParam){ + // 异步支付方式检查 PayUtil.validationAsyncPay(payParam); + // 检查支付金额 + PayUtil.validationAmount(payParam.getPayChannels()); String businessNo = payParam.getBusinessNo(); // 加锁 @@ -86,261 +105,231 @@ public class PayService { throw new RepetitiveOperationException("正在支付中,请勿重复支付"); } try { - // 获取并校验支付订单状态, 如果超时, 触发支付单同步和修复动作 + // 查询并检查订单 PayOrder payOrder = payAssistService.getOrderAndCheck(payParam.getBusinessNo()); - // 初始化上下文 payAssistService.initPayContext(payOrder, payParam); - - // 订单为空, 创建支付订单和通道支付订单 + // 走首次下单逻辑还是重复发起逻辑 if (Objects.isNull(payOrder)){ - // 预支付处理, 无论请求成功还是失败, 各种订单对象都会保存 - List strategies = SpringUtil.getBean(this.getClass()).prePay(payParam); - // 执行首次支付逻辑 - return this.onePay(strategies); + // 判断不同的支付请求类型, 然后走不同的逻辑 + List payChannels = payParam.getPayChannels(); + // 不包含异步支付通道 + if (PayUtil.isNotSync(payChannels)){ + return this.firstSyncPay(payParam); + } + // 单个异步通道支付 + else if (payChannels.size() == 1 && !PayUtil.isNotSync(payChannels)) { + return this.firstAsyncPay(payParam); + } + // 包含异步通道的组合支付 + else if (!PayUtil.isNotSync(payChannels)) { + return this.firstCombinationPay(payParam); + } else { + throw new PayFailureException("支付参数错误"); + } } else { - // 分为同步通道全部支付成功和所有支付都是支付中状态(上次支付失败) - return this.towPay(payParam, payOrder); - } - } finally { - lockTemplate.releaseLock(lock); - } - } + // 单个异步通道支付 - /** - * 组合支付分为同步通道全部支付成功和所有支付都是支付中状态(上次支付失败) - * 单通道支付不需要区分上次支付发起是否成功 - */ - private PayResult towPay(PayParam payParam, PayOrder payOrder) { - // 判断是否组合支付且同时包含异步支付 - if (payOrder.isCombinationPay()&&payOrder.isAsyncPay()) { - // 同步支付通道全部支付成功, 单独走异步支付支付流程 - this.onlyAsyncPay(payParam, payOrder); - // 通道订单全部支付中, 相当于上次支付异常, 重新走支付流程 - return this.allPay(payParam, payOrder); - } else { - // 单通道支付走标准支付流程 - return this.allPay(payParam, payOrder); - } - } + // 包含异步通道的组合支付 - /** - * 简单下单, 可以视为不支持组合支付的下单接口 - */ - @Transactional(rollbackFor = Exception.class) - public PayResult simplePay(SimplePayParam simplePayParam) { - // 组装支付参数 - PayParam payParam = new PayParam(); - PayChannelParam payChannelParam = new PayChannelParam(); - payChannelParam.setChannel(simplePayParam.getChannel()); - payChannelParam.setWay(simplePayParam.getPayWay()); - payChannelParam.setAmount(simplePayParam.getAmount()); - payChannelParam.setChannelParam(simplePayParam.getChannelParam()); - BeanUtil.copyProperties(simplePayParam,payParam, CopyOptions.create().ignoreNullValue()); - payParam.setPayChannels(Collections.singletonList(payChannelParam)); - // 复用支付下单接口 - return this.pay(payParam); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return null; } - /** - * 预支付处理, 无论请求成功还是失败, 各种订单对象都会保存 - * 1. 校验参数 - * 2. 创建支付订单/通道支付订单/扩展信息 - * 3, 返回数据 + * 首次同步支付, 可以为一个或多个同步通道进行支付 */ - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) - public List prePay(PayParam payParam){ - - // 价格检测 - PayUtil.validationAmount(payParam.getPayChannels()); - + private PayResult firstSyncPay(PayParam payParam){ // 创建支付订单和扩展记录并返回支付订单对象 PayOrder payOrder = payAssistService.createPayOrder(payParam); + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 获取支付方式,通过工厂生成对应的策略组 List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); if (CollectionUtil.isEmpty(strategies)) { throw new PayUnsupportedMethodException(); } - // 初始化支付的参数 + + // 初始化支付参数 for (AbsPayStrategy strategy : strategies) { strategy.initPayParam(payOrder, payParam); } // 执行支付前处理动作 strategies.forEach(AbsPayStrategy::doBeforePayHandler); - // 执行通道支付通道订单的生成 + // 生成支付通道订单 strategies.forEach(AbsPayStrategy::generateChannelOrder); - + // 支付操作 + strategies.forEach(AbsPayStrategy::doPayHandler); + // 支付成功操作, 进行扣款、创建记录类类似的操作 + strategies.forEach(AbsPayStrategy::doSuccessHandler); + payOrder.setStatus(SUCCESS.getCode()) + .setPayTime(LocalDateTime.now()); // 保存通道支付订单 payAssistService.savePayChannelOrder(strategies); - return strategies; - } - - /** - * 发起的第一次支付请求(同步/异步) - */ - private PayResult firstPay(PayParam payParam, PayOrder payOrder) { - - // 2. 价格检测 - PayUtil.validationAmount(payParam.getPayChannels()); - - // 3. 创建支付订单和扩展记录并返回支付订单对象 - payOrder = payAssistService.createPayOrder(payParam); - - // 4. 调用支付方法进行发起支付 - this.allPay(payParam, payOrder); - - // 5. 返回支付结果 + // 更新订单信息 + payOrderService.updateById(payOrder); + // 支付完成 发送通知 + clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); return PayBuilder.buildPayResultByPayOrder(payOrder); } - /** - * 执行首次支付操作 + * 首次单个异步通道支付 */ - public PayResult onePay(List strategies){ + private PayResult firstAsyncPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + // 开启新事务执行订单预保存操作, 并返回对应的支付策略组 + AbsPayStrategy asyncPayStrategy = SpringUtil.getBean(this.getClass()).asyncPayPreSave(payParam); + // 支付操作 try { - strategies.forEach(AbsPayStrategy::doPayHandler); + asyncPayStrategy.doPayHandler(); } catch (Exception e) { // 记录错误原因 PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); payOrderExtra.setErrorMsg(e.getMessage()); throw e; } + // 支付调用成功操作, + asyncPayStrategy.doSuccessHandler(); PayOrder payOrder = payInfo.getPayOrder(); - - // 支付调用成功操作, 进行扣款、创建记录类类似的操作 - strategies.forEach(AbsPayStrategy::doSuccessHandler); - - // 如果没有异步支付, 直接进行订单完成处理 - if (!payOrder.isAsyncPay()) { - // 修改支付订单状态为成功 - payOrder.setStatus(SUCCESS.getCode()) - .setPayTime(LocalDateTime.now()); - payOrderService.updateById(payOrder); - } - // 如果异步支付完成, 进行订单完成处理, 同时发送回调消息 - PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); - if (asyncPayInfo.isPayComplete()) { - payOrder.setGatewayOrderNo(asyncPayInfo.getGatewayOrderNo()) + // 如果支付完成, 进行订单完成处理, 同时发送回调消息 + if (payInfo.isPayComplete()) { + payOrder.setGatewayOrderNo(payInfo.getGatewayOrderNo()) .setStatus(SUCCESS.getCode()) .setPayTime(LocalDateTime.now()); + // TODO 使用网关返回的时间 payOrderService.updateById(payOrder); } - // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); } - // 组装返回参数 return PayBuilder.buildPayResultByPayOrder(payOrder); } - /** - * 执行所有的支付方法 + * 首次组合支付, 包含异步支付通道 */ - private PayResult allPay(PayParam payParam, PayOrder payOrder) { + private PayResult firstCombinationPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); // 获取支付方式,通过工厂生成对应的策略组 List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); if (CollectionUtil.isEmpty(strategies)) { throw new PayUnsupportedMethodException(); } - // 查询通道支付订单 - List orders = channelOrderManager.findAllByPaymentId(payOrder.getId()); - Map channelOrderMap = orders.stream() - .collect(Collectors.toMap(PayChannelOrder::getChannel, Function.identity(), CollectorsFunction::retainFirst)); + // 初始化支付的参数 + for (AbsPayStrategy strategy : strategies) { + strategy.initPayParam(payOrder, payParam); + } + + // 取出同步通道 然后进行支付 + List syncStrategies = strategies.stream() + .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) + .collect(Collectors.toList()); // 初始化支付参数 - for (AbsPayStrategy strategy : strategies) { + for (AbsPayStrategy strategy : syncStrategies) { strategy.initPayParam(payOrder, payParam); - strategy.setChannelOrder(channelOrderMap.get(strategy.getChannel().getCode())); } // 执行支付前处理动作 - strategies.forEach(AbsPayStrategy::doBeforePayHandler); + syncStrategies.forEach(AbsPayStrategy::doBeforePayHandler); + // 生成支付通道订单 + syncStrategies.forEach(AbsPayStrategy::generateChannelOrder); // 支付操作 - + syncStrategies.forEach(AbsPayStrategy::doPayHandler); + // 支付成功操作, 进行扣款、创建记录类类似的操作 + syncStrategies.forEach(AbsPayStrategy::doSuccessHandler); + payOrder.setStatus(SUCCESS.getCode()) + .setPayTime(LocalDateTime.now()); + // 保存通道支付订单 + payAssistService.savePayChannelOrder(strategies); + // ------------------------- 进行异步支付 ------------------------------- + // 筛选出异步通道策略类 + AbsPayStrategy asyncPayStrategy = strategies.stream() + .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) + .findFirst() + .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); + + // 支付前准备 + asyncPayStrategy.doBeforePayHandler(); + // 设置异步支付通道订单信息 + asyncPayStrategy.generateChannelOrder(); try { - strategies.forEach(AbsPayStrategy::doPayHandler); + // 异步支付操作 + asyncPayStrategy.doPayHandler(); } catch (Exception e) { // 记录错误原因 PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); payOrderExtra.setErrorMsg(e.getMessage()); throw e; } - // 支付调用成功操作, 进行扣款、创建记录类类似的操作 - strategies.forEach(AbsPayStrategy::doSuccessHandler); - - // 如果没有异步支付, 直接进行订单完成处理 - if (PayUtil.isNotSync(payParam.getPayChannels())) { - // 修改支付订单状态为成功 - payOrder.setStatus(SUCCESS.getCode()) - .setPayTime(LocalDateTime.now()); - payOrderService.updateById(payOrder); - } - // 如果异步支付完成, 进行订单完成处理, 同时发送回调消息 - PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); - if (asyncPayInfo.isPayComplete()) { - payOrder.setGatewayOrderNo(asyncPayInfo.getGatewayOrderNo()) + asyncPayStrategy.doSuccessHandler(); + // 如果支付完成, 进行订单完成处理, 同时发送回调消息 + if (payInfo.isPayComplete()) { + payOrder.setGatewayOrderNo(payInfo.getGatewayOrderNo()) .setStatus(SUCCESS.getCode()) .setPayTime(LocalDateTime.now()); + // TODO 使用网关返回的时间 payOrderService.updateById(payOrder); } - // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); + } /** - * 异步支付执行(非第一次请求), 只执行异步支付策略, 因为同步支付已经支付成功. 报错不影响继续发起支付 + * 异步支付预报保存处理, 无论请求成功还是失败, 各种订单对象都会保存 + * 1. 创建支付订单/通道支付订单/扩展信息 + * 2, 返回支付列表记录 */ - private PayResult onlyAsyncPay(PayParam payParam, PayOrder payOrder) { - - // 2.获取 异步支付通道,通过工厂生成对应的策略组(只包含异步支付的策略, 同步支付已经成功不再继续执行) - PayChannelParam payChannelParam = payAssistService.getAsyncPayParam(payParam, payOrder); - List payStrategyList = PayStrategyFactory.createAsyncLast(Collections.singletonList(payChannelParam)); + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public AbsPayStrategy asyncPayPreSave(PayParam payParam){ + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); - // 3.初始化支付的参数 - for (AbsPayStrategy payStrategy : payStrategyList) { - payStrategy.initPayParam(payOrder, payParam); - } - // 4.支付前准备 - payStrategyList.forEach(AbsPayStrategy::doBeforePayHandler); - - // 5.1发起支付 - payStrategyList.forEach(AbsPayStrategy::doPayHandler); - // 5.2支付发起成功处理 - payStrategyList.forEach(AbsPayStrategy::doSuccessHandler); - - // 6.1 如果异步支付完成, 进行订单完成处理 - PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); - if (asyncPayInfo.isPayComplete()) { - payOrder.setGatewayOrderNo(asyncPayInfo.getGatewayOrderNo()) - .setStatus(SUCCESS.getCode()) - .setPayTime(LocalDateTime.now()); + // 获取支付方式,通过工厂生成对应的策略组 + List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); + if (CollectionUtil.isEmpty(strategies)) { + throw new PayUnsupportedMethodException(); } - // 6.2 更新支付订单和扩展参数 - payOrderService.updateById(payOrder); - PayOrderExtra payOrderExtra = payAssistService.updatePayOrderExtra(payParam, payOrder.getId()); + AbsPayStrategy absPayStrategy = Optional.ofNullable(strategies.get(0)) + .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); - // 订单完成, 触发通知 - if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())) { - clientNoticeService.registerPayNotice(payOrder, payOrderExtra,null); - } + // 初始化支付的参数 + absPayStrategy.initPayParam(payOrder, payParam); + + // 执行支付前处理动作 + absPayStrategy.doBeforePayHandler(); + // 执行支付通道订单的生成和保存 + absPayStrategy.generateChannelOrder(); + return absPayStrategy; + } + + /** + * 重复支付 + */ + public void repeatAsyncPay(){ + + } + + /** + * + */ + public void repeatCombinationPay(){ - // 7. 组装返回参数 - return PayBuilder.buildPayResultByPayOrder(payOrder); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java index 04b63707..ab27de58 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java @@ -95,7 +95,8 @@ public class AliPayStrategy extends AbsPayStrategy { */ @Override public void generateChannelOrder() { - super.generateChannelOrder(); + // 创建或切换支付通道订单 + channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); } /** @@ -104,6 +105,7 @@ public class AliPayStrategy extends AbsPayStrategy { @Override public void doSuccessHandler() { PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); + // 更新通道支付订单 PayChannelOrder payChannelOrder = channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); // 支付完成, 保存记录 if (asyncPayInfo.isPayComplete()) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java index 43ec5fb8..ed66a1ac 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/UnionPayStrategy.java @@ -98,7 +98,8 @@ public class UnionPayStrategy extends AbsPayStrategy { */ @Override public void generateChannelOrder() { - super.generateChannelOrder(); + // 创建或切换支付通道订单 + channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); } /** @@ -107,6 +108,7 @@ public class UnionPayStrategy extends AbsPayStrategy { @Override public void doSuccessHandler() { PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); + // 更新支付通道信息 PayChannelOrder payChannelOrder = channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); // 支付完成, 保存记录 if (asyncPayInfo.isPayComplete()) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java index 0df77c4d..b21939b5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java @@ -78,6 +78,16 @@ public class WeChatPayStrategy extends AbsPayStrategy { weChatPayService.validation(this.getPayChannelParam(), weChatPayConfig); } + + /** + * 不使用默认的生成通道支付单方法, 异步支付通道的支付订单自己管理 + */ + @Override + public void generateChannelOrder() { + // 创建或切换支付通道订单 + channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); + } + /** * 发起支付 */ @@ -100,14 +110,6 @@ public class WeChatPayStrategy extends AbsPayStrategy { } } - /** - * 不使用默认的生成通道支付单方法, 异步支付通道的支付订单自己管理 - */ - @Override - public void generateChannelOrder() { - super.generateChannelOrder(); - } - /** * 初始化微信支付 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java index 64af8bef..b4aa8779 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java @@ -39,9 +39,12 @@ public class PlatformConfig extends MpBaseEntity implements EntityBaseFunction

daxpay-single-demo ${daxpay.version} - - cn.afterturn - easypoi-spring-boot-starter - 4.4.0 - - diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index 76d7e30e..bb465c00 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -156,17 +156,17 @@ dromara: # 支付系统配置 dax-pay: # 服务地址 - server-url: http://pay1.bootx.cn + server-url: http://localhost:9000 # 前端h5地址 - front-h5-url: http://pay1.bootx.cn/h5/# + front-h5-url: http://localhost:5173/# # 前端web地址 - front-web-url: http://pay1.bootx.cn/# + front-web-url: http://localhost:9000/# # 演示模块 demo: # 网关地址 - server-url: http://pay1.bootx.cn/server + server-url: http://localhost:9000/server # 前端h5地址 - front-h5-url: http://pay1.bootx.cn/h5/# + front-h5-url: http://localhost:5173/# # 签名秘钥 sign-secret: 123456 # 签名方式 -- Gitee From 5e4de478ef313f785dca21c6eb587833894e47d1 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sat, 23 Mar 2024 19:20:07 +0800 Subject: [PATCH 08/45] =?UTF-8?q?feat=20=E6=94=AF=E4=BB=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=B0=83=E6=95=B4=E4=B8=BA=E5=A4=9A=E9=98=B6=E6=AE=B5?= =?UTF-8?q?,=20=E9=A2=84=E9=98=B2=E6=8E=89=E5=8D=95=E9=97=AE=E9=A2=98,=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9B=B4=E5=A4=9A=E6=B5=8B=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 8 +- .../daxpay/sdk/payment/PayOrderTest.java | 42 ++- .../controller/order/PayOrderController.java | 2 +- .../core/order/pay/builder/PayBuilder.java | 1 - .../order/pay/dao/PayChannelOrderManager.java | 9 + .../order/pay/entity/PayChannelOrder.java | 2 +- .../pay/service/PayChannelOrderService.java | 36 +-- .../pay/service/PayOrderExtraService.java | 16 +- .../close/service/PayCloseService.java | 2 +- .../pay/factory/PayStrategyFactory.java | 4 +- .../payment/pay/service/PayAssistService.java | 58 ++-- .../core/payment/pay/service/PayService.java | 257 ++++++++++++------ .../pay/strategy/WeChatPayStrategy.java | 4 +- 13 files changed, 292 insertions(+), 149 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index dc72afd1..e2aaf271 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,13 +1,14 @@ 2.0.4: - [ ] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 + - [ ] 支付改造 + - [ ] 关闭订单改造 + - [ ] 支付补偿改造 - [x] 首页驾驶舱功能: 各通道收入和支付情况 - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 - [ ] 报表功能 - [ ] 各通道收入和支付情况 -- [ ] 微信新增V3版本接口 - - [ ] 付款码支付自动路由到V2接口 - [ ] 增加转账功能 - [ ] 支付宝 - [ ] 微信 @@ -22,9 +23,10 @@ - [ ] 各通道支持单独的限额 - [ ] 整个订单支持整体的限额 2.0.x 版本内容 +- [ ] 微信新增V3版本接口 + - [ ] 付款码支付自动路由到V2接口 - [ ] 统一关闭接口增加使用撤销关闭订单 - [ ] 增加各类日志记录,例如钱包的各项操作 -- [ ] 支付流程涉及异步支付时, 更换支付方式需要控制预防客户重复付款 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 数据库表进行规则, 字段设置长度, 增加索引 diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java index 77de4fe8..45010967 100644 --- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java @@ -36,7 +36,6 @@ public class PayOrderTest { DaxPayKit.initConfig(config); } - /** * 单通道支付 */ @@ -46,10 +45,10 @@ public class PayOrderTest { param.setClientIp("127.0.0.1"); param.setNotNotify(true); - param.setBusinessNo("P0001"); + param.setBusinessNo("P0004"); param.setTitle("测试接口支付"); PayChannelParam payChannelParam = new PayChannelParam(); - payChannelParam.setChannel(PayChannelEnum.WECHAT.getCode()); + payChannelParam.setChannel(PayChannelEnum.UNION_PAY.getCode()); payChannelParam.setWay(PayWayEnum.QRCODE.getCode()); payChannelParam.setAmount(1); @@ -64,13 +63,13 @@ public class PayOrderTest { * 多通道支付. 全部为同步支付方式 */ @Test - public void multiPay() { + public void multiSyncPay() { PayParam param = new PayParam(); param.setClientIp("127.0.0.1"); param.setNotNotify(true); - param.setBusinessNo("P0002"); - param.setTitle("测试组合支付"); + param.setBusinessNo("P0005"); + param.setTitle("测试组合支付(全同步)"); // 现金支付 PayChannelParam cash = new PayChannelParam(); cash.setChannel(PayChannelEnum.CASH.getCode()); @@ -104,4 +103,35 @@ public class PayOrderTest { System.out.println(execute); System.out.println(execute.getData()); } + + /** + * 多通道支付. 包含异步支付 + */ + @Test + public void multiAsyncPay() { + PayParam param = new PayParam(); + param.setClientIp("127.0.0.1"); + param.setNotNotify(true); + + param.setBusinessNo("P0009"); + param.setTitle("测试组合支付(包含异步支付)"); + // 现金支付 + PayChannelParam cash = new PayChannelParam(); + cash.setChannel(PayChannelEnum.CASH.getCode()); + cash.setWay(PayWayEnum.NORMAL.getCode()); + cash.setAmount(10); + + // 异步支付 + PayChannelParam async = new PayChannelParam(); + async.setChannel(PayChannelEnum.ALI.getCode()); + async.setWay(PayWayEnum.WEB.getCode()); + async.setAmount(1); + + // 组装组合支付的参数 + List payChannels = Arrays.asList(cash, async); + param.setPayChannels(payChannels); + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + System.out.println(execute.getData()); + } } diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java index 30074236..60fa1997 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java @@ -63,7 +63,7 @@ public class PayOrderController { @Operation(summary = "查询支付订单扩展信息") @GetMapping("/getExtraById") public ResResult getExtraById(Long id){ - return Res.ok(payOrderExtraService.findById(id)); + return Res.ok(payOrderExtraService.findById(id).toDto()); } @Operation(summary = "查询支付订单关联支付通道订单") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java index 7af313de..421ec835 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java @@ -60,7 +60,6 @@ public class PayBuilder { .setExpiredTime(expiredTime) .setCombinationPay(payParam.getPayChannels().size() > 1) .setAsyncPay(asyncPay.isPresent()) - .setAsyncChannel(asyncPay.orElse(null)) .setRefundableBalance(sumAmount); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java index 4cb8446b..19cac631 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayChannelOrderManager.java @@ -35,6 +35,15 @@ public class PayChannelOrderManager extends BaseManager findByAsyncChannel(Long paymentId) { + return lambdaQuery() + .eq(PayChannelOrder::getPaymentId,paymentId) + .eq(PayChannelOrder::isAsync,true) + .oneOpt(); + } /** * 根据订单id删除异步支付记录 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java index 77e46122..fb1838f5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayChannelOrder.java @@ -57,7 +57,7 @@ public class PayChannelOrder extends MpCreateEntity implements EntityBaseFunctio @DbColumn(comment = "支付状态") private String status; - @DbColumn(comment = "支付时间") + @DbColumn(comment = "支付完成时间") @TableField(updateStrategy = FieldStrategy.ALWAYS) private LocalDateTime payTime; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java index 7b0f8029..a596bb3a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayChannelOrderService.java @@ -2,12 +2,13 @@ package cn.bootx.platform.daxpay.service.core.order.pay.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.util.ResultConvertUtil; -import cn.bootx.platform.daxpay.code.RefundStatusEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; +import cn.bootx.platform.daxpay.code.RefundStatusEnum; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderManager; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.refund.entity.RefundChannelOrder; @@ -16,7 +17,6 @@ import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; @@ -36,6 +36,8 @@ import java.util.Optional; public class PayChannelOrderService { private final PayChannelOrderManager channelOrderManager; + private final PayOrderManager payOrderManager; + /** * 根据支付ID查询列表 */ @@ -51,10 +53,10 @@ public class PayChannelOrderService { } /** - * 切换支付订单关联的异步支付通道, 同时会设置是否支付完成状态, 并返回通道订单 - * 使用单独事务 + * 切换支付订单关联的异步支付通道, 设置是否支付完成状态, 并返回通道订单 + * 同时会更新支付订单上的异步通道信息 */ - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + @Transactional(rollbackFor = Exception.class) public PayChannelOrder switchAsyncPayChannel(PayOrder payOrder, PayChannelParam payChannelParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 是否支付完成 @@ -66,8 +68,9 @@ public class PayChannelOrderService { if (Objects.nonNull(channelParam)){ channelParamStr = JSONUtil.toJsonStr(channelParam); } + PayChannelOrder payChannelOrder; if (!payOrderChannelOpt.isPresent()){ - PayChannelOrder payChannelOrder = new PayChannelOrder(); + payChannelOrder = new PayChannelOrder(); // 替换原有的的支付通道信息 payChannelOrder.setPayWay(payChannelParam.getWay()) .setPaymentId(payOrder.getId()) @@ -76,28 +79,27 @@ public class PayChannelOrderService { .setPayWay(payChannelParam.getWay()) .setAmount(payChannelParam.getAmount()) .setRefundableBalance(payChannelParam.getAmount()) - .setPayTime(LocalDateTime.now()) .setChannelExtra(channelParamStr) .setStatus(payStatus.getCode()); channelOrderManager.deleteByPaymentIdAndAsync(payOrder.getId()); channelOrderManager.save(payChannelOrder); payInfo.getPayChannelOrders().add(payChannelOrder); - return payChannelOrder; } else { // 更新支付通道信息 - PayChannelOrder payChannelOrder = payOrderChannelOpt.get(); - payChannelOrder - .setPayWay(payChannelParam.getWay()) - .setPayTime(LocalDateTime.now()) + payChannelOrder = payOrderChannelOpt.get(); + payChannelOrder.setPayWay(payChannelParam.getWay()) .setChannelExtra(channelParamStr) .setStatus(payStatus.getCode()); channelOrderManager.updateById(payChannelOrder); - // 更新时一次请求有多次访问, 对上下文中的通道支付订单进行替换 - List payChannelOrders = payInfo.getPayChannelOrders(); - payChannelOrders.removeIf(o->Objects.equals(o.getChannel(),payChannelOrder.getChannel())); - payChannelOrders.add(payOrderChannelOpt.get()); - return payChannelOrder; } + // 对上下文中的通道支付订单进行替换 + List payChannelOrders = payInfo.getPayChannelOrders(); + payChannelOrders.removeIf(o->Objects.equals(o.getChannel(),payChannelOrder.getChannel())); + payChannelOrders.add(payChannelOrder); + // 更新支付订单中的异步通道信息 + payOrder.setAsyncChannel(payChannelOrder.getChannel()); + payOrderManager.updateById(payOrder); + return payChannelOrder; } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderExtraService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderExtraService.java index f28d06b9..cd5f96f0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderExtraService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/service/PayOrderExtraService.java @@ -3,10 +3,11 @@ package cn.bootx.platform.daxpay.service.core.order.pay.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderExtraManager; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; -import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderExtraDto; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; /** * 支付订单扩展信息 @@ -22,7 +23,16 @@ public class PayOrderExtraService { /** * 查询详情 */ - public PayOrderExtraDto findById(Long id){ - return payOrderExtraManager.findById(id).map(PayOrderExtra::toDto).orElseThrow(()->new DataNotExistException("支付订单扩展信息不存在")); + public PayOrderExtra findById(Long id){ + return payOrderExtraManager.findById(id).orElseThrow(()->new DataNotExistException("支付订单扩展信息不存在")); } + + /** + * 更新, 使用单独事务 + */ + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public void update(PayOrderExtra payOrderExtra){ + payOrderExtraManager.updateById(payOrderExtra); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java index b3b8870e..175b2d9c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/close/service/PayCloseService.java @@ -134,7 +134,7 @@ public class PayCloseService { * 成功后处理方法 */ private void successHandler(PayOrder payOrder, List payChannelOrders){ - // 取消订单 + // 关闭订单 payOrder.setStatus(PayStatusEnum.CLOSE.getCode()) .setCloseTime(LocalDateTime.now()); payOrderService.updateById(payOrder); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/factory/PayStrategyFactory.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/factory/PayStrategyFactory.java index 2cef716a..64f1e63f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/factory/PayStrategyFactory.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/factory/PayStrategyFactory.java @@ -32,7 +32,7 @@ public class PayStrategyFactory { * @param payChannelParam 支付类型 * @return 支付策略 */ - public AbsPayStrategy createAsyncFront(PayChannelParam payChannelParam) { + public AbsPayStrategy create(PayChannelParam payChannelParam) { AbsPayStrategy strategy; PayChannelEnum channelEnum = PayChannelEnum.findByCode(payChannelParam.getChannel()); switch (channelEnum) { @@ -111,7 +111,7 @@ public class PayStrategyFactory { } // 此处有一个根据Type的反转排序, - sortList.stream().filter(Objects::nonNull).forEach(payMode -> list.add(createAsyncFront(payMode))); + sortList.stream().filter(Objects::nonNull).forEach(payMode -> list.add(create(payMode))); return list; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java index c0733e90..5d46363a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java @@ -1,12 +1,14 @@ package cn.bootx.platform.daxpay.service.core.payment.pay.service; -import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; -import cn.bootx.platform.daxpay.service.common.context.*; +import cn.bootx.platform.daxpay.service.common.context.ApiInfoLocal; +import cn.bootx.platform.daxpay.service.common.context.NoticeLocal; +import cn.bootx.platform.daxpay.service.common.context.PayLocal; +import cn.bootx.platform.daxpay.service.common.context.PlatformLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; @@ -23,6 +25,7 @@ import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.Arrays; @@ -119,22 +122,32 @@ public class PayAssistService { noticeInfo.setQuitUrl(payParam.getQuitUrl()); } - /** * 获取异步支付参数 */ public PayChannelParam getAsyncPayParam(PayParam payParam, PayOrder payOrder) { - // 查询之前的支付方式 - String asyncPayChannel = payOrder.getAsyncChannel(); - PayChannelOrder payChannelOrder = payChannelOrderManager.findByPaymentIdAndChannel(payOrder.getId(), asyncPayChannel) - .orElseThrow(() -> new PayFailureException("支付方式数据异常")); + // 查询异步支付方式 + return payParam.getPayChannels() + .stream() + .filter(payMode -> PayChannelEnum.ASYNC_TYPE_CODE.contains(payMode.getChannel())) + .findFirst() + .orElseThrow(() -> new PayFailureException("支付参数异常, 不存在异步支付方式")); + } + + /** + * 切换异步支付参数 + */ + public PayChannelParam switchAsyncPayParam(PayParam payParam, PayOrder payOrder) { + // 查询之前的异步支付方式 + PayChannelOrder payChannelOrder = payChannelOrderManager.findByAsyncChannel(payOrder.getId()) + .orElseThrow(() -> new PayFailureException("支付订单数据异常, 不存在异步支付方式")); // 新的异步支付方式 PayChannelParam payChannelParam = payParam.getPayChannels() .stream() .filter(payMode -> PayChannelEnum.ASYNC_TYPE_CODE.contains(payMode.getChannel())) .findFirst() - .orElseThrow(() -> new PayFailureException("支付方式数据异常")); + .orElseThrow(() -> new PayFailureException("支付参数异常, 不存在异步支付方式")); // 新传入的金额是否一致 if (!Objects.equals(payChannelOrder.getAmount(), payChannelParam.getAmount())){ throw new PayFailureException("传入的支付金额非法!与订单金额不一致"); @@ -145,6 +158,7 @@ public class PayAssistService { /** * 创建支付订单并保存, 返回支付订单 */ + @Transactional(rollbackFor = Exception.class) public PayOrder createPayOrder(PayParam payParam) { PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 构建支付订单并保存 @@ -170,34 +184,6 @@ public class PayAssistService { payInfo.getPayChannelOrders().addAll(channelOrders); } - /** - * 更新支付订单扩展参数 - * @param payParam 支付参数 - * @param paymentId 支付订单id - */ - public PayOrderExtra updatePayOrderExtra(PayParam payParam,Long paymentId){ - ApiInfoLocal apiInfo = PaymentContextLocal.get().getApiInfo(); - RequestLocal requestInfo = PaymentContextLocal.get().getRequestInfo(); - PlatformLocal platformInfo = PaymentContextLocal.get().getPlatformInfo(); - PayOrderExtra payOrderExtra = payOrderExtraManager.findById(paymentId) - .orElseThrow(() -> new DataNotExistException("支付订单不存在")); - - NoticeLocal noticeInfo = PaymentContextLocal.get().getNoticeInfo(); - String notifyUrl = noticeInfo.getNotifyUrl(); - String returnUrl = noticeInfo.getReturnUrl(); - - payOrderExtra.setReqTime(payParam.getReqTime()) - .setReqSignType(platformInfo.getSignType()) - .setReqSign(payParam.getSign()) - .setNotifyUrl(notifyUrl) - .setReturnUrl(returnUrl) - .setNoticeSign(apiInfo.isNoticeSign()) - .setAttach(payParam.getAttach()) - .setClientIp(payParam.getClientIp()) - .setReqId(requestInfo.getReqId()); - return payOrderExtraManager.updateById(payOrderExtra); - } - /** * 校验支付状态,支付成功则返回,支付失败则抛出对应的异常 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 374d8b71..9c2ea3e5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -10,8 +10,11 @@ import cn.bootx.platform.daxpay.result.pay.PayResult; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; +import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderExtraService; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderService; import cn.bootx.platform.daxpay.service.core.payment.notice.service.ClientNoticeService; import cn.bootx.platform.daxpay.service.core.payment.pay.factory.PayStrategyFactory; @@ -26,7 +29,6 @@ import com.baomidou.lock.LockTemplate; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; @@ -53,17 +55,20 @@ public class PayService { private final PayOrderService payOrderService; + private final PayOrderExtraService payOrderExtraManager; + private final PayAssistService payAssistService; private final ClientNoticeService clientNoticeService; + private final PayChannelOrderManager payChannelOrderManager; + private final LockTemplate lockTemplate; /** * 简单下单, 可以视为不支持组合支付的下单接口 */ - @Transactional(rollbackFor = Exception.class) public PayResult simplePay(SimplePayParam simplePayParam) { // 组装支付参数 PayParam payParam = new PayParam(); @@ -82,14 +87,13 @@ public class PayService { /** * 支付入口 * 支付下单接口(同步/异步/组合支付) - * 1. 同步支付:包含一个或多个同步支付通道进行支付 - * 2. 异步支付:例如支付宝、微信,发起支付后还需要跳转第三方平台进行支付,支付后通常需要进行回调,之后才完成支付记录 - * 3. 组合支付:主要是混合了同步支付和异步支付,同时异步支付只能有一个,在支付时先对同步支付进行扣减,然后异步支付回调结束后完成整个支付单 - * 注意: - * 组合支付在非第一次支付的时候,只对新传入的异步支付通道进行处理,该通道的价格使用第一次发起的价格,旧的同步支付如果传入后也不做处理, - * 支付单中支付通道列表将会为 旧有的同步支付+新传入的异步支付方式(在具体支付实现中处理) + * 1. 同步支付:包含一个或多个同步支付通道进行支付, 使用一个事务进行包裹,要么成功要么失败 + * 2. 异步支付:会首先创建订单信息,然后再发起支付,支付成功后更新订单和通道订单信息,支付失败也会存在订单信息,预防丢单 + * 3. 组合支付(包含异步支付):会首先进行同步通道的支付,支付完成后才会调用异步支付,如果同步支付失败会回滚信息,不会进行存库 + * 执行异步通道支付的逻辑与上面异步支付的逻辑一致 + * 4. 同步支付一次支付完成,不允许重复发起支付 + * 5. 重复支付时,不允许中途将异步支付换为同步支付,也不允许更改出支付通道和支付方式之外的支付参数(请求时间、IP、签名等可以更改) * - * 订单数据会先进行入库, 才会进行发起支付, 在调用各通道支付之前发生错误, 数据不会入库 */ public PayResult pay(PayParam payParam){ @@ -115,7 +119,7 @@ public class PayService { List payChannels = payParam.getPayChannels(); // 不包含异步支付通道 if (PayUtil.isNotSync(payChannels)){ - return this.firstSyncPay(payParam); + return SpringUtil.getBean(this.getClass()).firstSyncPay(payParam); } // 单个异步通道支付 else if (payChannels.size() == 1 && !PayUtil.isNotSync(payChannels)) { @@ -128,21 +132,35 @@ public class PayService { throw new PayFailureException("支付参数错误"); } } else { + List payChannels = payParam.getPayChannels(); + // 不包含异步支付通道 + if (PayUtil.isNotSync(payChannels)){ + throw new PayFailureException("支付参数错误, 不可以中途切换为同步支付通道"); + } // 单个异步通道支付 - + if (payOrder.isAsyncPay() && !payOrder.isCombinationPay()){ + return this.repeatAsyncPay(payParam,payOrder); + } // 包含异步通道的组合支付 - + else if (payOrder.isAsyncPay()){ + return this.repeatCombinationPay(payParam, payOrder); + } else { + throw new PayFailureException("支付参数错误"); + } } } catch (Exception e) { throw new RuntimeException(e); + } finally { + lockTemplate.releaseLock(lock); } - return null; } /** * 首次同步支付, 可以为一个或多个同步通道进行支付 + * 使用事务,保证支付只有成功或失败两种状态 */ - private PayResult firstSyncPay(PayParam payParam){ + @Transactional(rollbackFor = Exception.class) + public PayResult firstSyncPay(PayParam payParam){ // 创建支付订单和扩展记录并返回支付订单对象 PayOrder payOrder = payAssistService.createPayOrder(payParam); PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); @@ -179,11 +197,27 @@ public class PayService { /** * 首次单个异步通道支付 + * 拆分为多阶段,1. 保存订单记录信息 2 调起支付 3. 支付成功后操作 */ private PayResult firstAsyncPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); - // 开启新事务执行订单预保存操作, 并返回对应的支付策略组 - AbsPayStrategy asyncPayStrategy = SpringUtil.getBean(this.getClass()).asyncPayPreSave(payParam); + // 开启新事务执行订单预保存操作 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + + // 获取支付方式,通过工厂生成对应的策略组 + List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); + if (CollectionUtil.isEmpty(strategies)) { + throw new PayUnsupportedMethodException(); + } + // 获取异步通道 + AbsPayStrategy asyncPayStrategy = Optional.ofNullable(strategies.get(0)) + .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); + + // 初始化支付的参数 + asyncPayStrategy.initPayParam(payOrder, payParam); + + // 执行支付前处理动作 + asyncPayStrategy.doBeforePayHandler(); // 支付操作 try { @@ -192,19 +226,30 @@ public class PayService { // 记录错误原因 PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); payOrderExtra.setErrorMsg(e.getMessage()); + payOrderExtraManager.update(payOrderExtra); throw e; } + // 支付调起成功后操作, 使用事务来保证数据一致性 + return SpringUtil.getBean(this.getClass()).firstAsyncPaySuccess(asyncPayStrategy,payOrder); + + } + + /** + * 首次单通道异步支付成功后操作, 更新订单和扥爱松 + */ + @Transactional(rollbackFor = Exception.class) + public PayResult firstAsyncPaySuccess(AbsPayStrategy asyncPayStrategy, PayOrder payOrder){ + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 支付调用成功操作, asyncPayStrategy.doSuccessHandler(); - PayOrder payOrder = payInfo.getPayOrder(); // 如果支付完成, 进行订单完成处理, 同时发送回调消息 if (payInfo.isPayComplete()) { + // TODO 使用网关返回的时间 payOrder.setGatewayOrderNo(payInfo.getGatewayOrderNo()) .setStatus(SUCCESS.getCode()) .setPayTime(LocalDateTime.now()); - // TODO 使用网关返回的时间 - payOrderService.updateById(payOrder); } + payOrderService.updateById(payOrder); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); @@ -217,6 +262,40 @@ public class PayService { */ private PayResult firstCombinationPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + // ------------------------- 进行同步支付 ------------------------------- + PayOrder payOrder = SpringUtil.getBean(this.getClass()).firstCombinationSyncPay(payParam); + // ------------------------- 进行异步支付 ------------------------------- + // 创建异步通道策略类 + //获取异步支付通道参数并构建支付策略 + PayChannelParam payChannelParam = payAssistService.getAsyncPayParam(payParam, payOrder); + AbsPayStrategy asyncPayStrategy = PayStrategyFactory.create(payChannelParam); + // 初始化支付的参数 + asyncPayStrategy.initPayParam(payOrder, payParam); + + // 支付前准备 + asyncPayStrategy.doBeforePayHandler(); + // 设置异步支付通道订单信息 + asyncPayStrategy.generateChannelOrder(); + try { + // 异步支付操作 + asyncPayStrategy.doPayHandler(); + } catch (Exception e) { + // 记录错误原因 + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + payOrderExtra.setErrorMsg(e.getMessage()); + payOrderExtraManager.update(payOrderExtra); + throw e; + } + // 支付调起成功后操作, 使用事务来保证数据一致性 + return SpringUtil.getBean(this.getClass()).firstCombinationPaySuccess(asyncPayStrategy); + } + + /** + * 首次组合支付, 先进行同步支付, 如果成功返回支付订单 + * 注意: 同时也执行异步支付通道订单的保存, 保证订单操作的原子性 + */ + @Transactional(rollbackFor = Exception.class) + public PayOrder firstCombinationSyncPay(PayParam payParam){ // 创建支付订单和扩展记录并返回支付订单对象 PayOrder payOrder = payAssistService.createPayOrder(payParam); @@ -230,7 +309,7 @@ public class PayService { strategy.initPayParam(payOrder, payParam); } - // 取出同步通道 然后进行支付 + // 取出同步通道 然后进行同步通道的支付, 使用单独事务 List syncStrategies = strategies.stream() .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) .collect(Collectors.toList()); @@ -242,94 +321,120 @@ public class PayService { // 执行支付前处理动作 syncStrategies.forEach(AbsPayStrategy::doBeforePayHandler); - // 生成支付通道订单 - syncStrategies.forEach(AbsPayStrategy::generateChannelOrder); + // 生成支付通道订单, 同时也执行异步支付通道订单的保存, 保证订单操作的原子性 + strategies.forEach(AbsPayStrategy::generateChannelOrder); // 支付操作 syncStrategies.forEach(AbsPayStrategy::doPayHandler); - // 支付成功操作, 进行扣款、创建记录类类似的操作 + // 支付调起成功操作, 进行扣款、创建记录类类似的操作 syncStrategies.forEach(AbsPayStrategy::doSuccessHandler); - payOrder.setStatus(SUCCESS.getCode()) - .setPayTime(LocalDateTime.now()); // 保存通道支付订单 payAssistService.savePayChannelOrder(strategies); - // ------------------------- 进行异步支付 ------------------------------- - // 筛选出异步通道策略类 - AbsPayStrategy asyncPayStrategy = strategies.stream() - .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) - .findFirst() - .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); + return payOrder; + } - // 支付前准备 - asyncPayStrategy.doBeforePayHandler(); - // 设置异步支付通道订单信息 - asyncPayStrategy.generateChannelOrder(); - try { - // 异步支付操作 - asyncPayStrategy.doPayHandler(); - } catch (Exception e) { - // 记录错误原因 - PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); - payOrderExtra.setErrorMsg(e.getMessage()); - throw e; - } - // 支付调用成功操作, 进行扣款、创建记录类类似的操作 + /** + * 首次组合支付成功后操作 + */ + @Transactional(rollbackFor = Exception.class) + public PayResult firstCombinationPaySuccess(AbsPayStrategy asyncPayStrategy){ + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + PayOrder payOrder = payInfo.getPayOrder(); + // 支付调起成功的处理 asyncPayStrategy.doSuccessHandler(); // 如果支付完成, 进行订单完成处理, 同时发送回调消息 if (payInfo.isPayComplete()) { + // TODO 使用网关返回的时间 payOrder.setGatewayOrderNo(payInfo.getGatewayOrderNo()) .setStatus(SUCCESS.getCode()) .setPayTime(LocalDateTime.now()); - // TODO 使用网关返回的时间 - payOrderService.updateById(payOrder); } + payOrderService.updateById(payOrder); + payOrderService.updateById(payOrder); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); - } /** - * 异步支付预报保存处理, 无论请求成功还是失败, 各种订单对象都会保存 - * 1. 创建支付订单/通道支付订单/扩展信息 - * 2, 返回支付列表记录 + * 重复支付-单异步通道支付 */ - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) - public AbsPayStrategy asyncPayPreSave(PayParam payParam){ - // 创建支付订单和扩展记录并返回支付订单对象 - PayOrder payOrder = payAssistService.createPayOrder(payParam); - - // 获取支付方式,通过工厂生成对应的策略组 - List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); - if (CollectionUtil.isEmpty(strategies)) { - throw new PayUnsupportedMethodException(); - } - - AbsPayStrategy absPayStrategy = Optional.ofNullable(strategies.get(0)) - .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); - + public PayResult repeatAsyncPay(PayParam payParam, PayOrder payOrder){ + // 查询支付扩展订单信息 + PayOrderExtra payOrderExtra = payOrderExtraManager.findById(payOrder.getId()); + //获取异步支付通道参数并构建支付策略 + PayChannelParam payChannelParam = payAssistService.switchAsyncPayParam(payParam, payOrder); + AbsPayStrategy asyncPayStrategy = PayStrategyFactory.create(payChannelParam); // 初始化支付的参数 - absPayStrategy.initPayParam(payOrder, payParam); - + asyncPayStrategy.initPayParam(payOrder, payParam); // 执行支付前处理动作 - absPayStrategy.doBeforePayHandler(); - // 执行支付通道订单的生成和保存 - absPayStrategy.generateChannelOrder(); - return absPayStrategy; + asyncPayStrategy.doBeforePayHandler(); + // 更新支付通道订单的信息 + asyncPayStrategy.generateChannelOrder(); + try { + // 支付操作 + asyncPayStrategy.doPayHandler(); + } catch (Exception e) { + // 记录错误原因 + payOrderExtra.setErrorMsg(e.getMessage()); + payOrderExtraManager.update(payOrderExtra); + throw e; + } + // 支付调起成功后操作, 使用事务来保证数据一致性 + return SpringUtil.getBean(this.getClass()).repeatPaySuccess(asyncPayStrategy, payOrder, payOrderExtra); } /** - * 重复支付 + * 重复发起组合支付(包含异步支付) */ - public void repeatAsyncPay(){ + public PayResult repeatCombinationPay(PayParam payParam, PayOrder payOrder){ + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + PayChannelParam payChannelParam = payAssistService.switchAsyncPayParam(payParam, payOrder); + // 取出异步通道 然后进行支付 + AbsPayStrategy asyncPayStrategy = PayStrategyFactory.create(payChannelParam); + // 初始化参数 + asyncPayStrategy.initPayParam(payOrder, payParam); + // 支付前准备 + asyncPayStrategy.doBeforePayHandler(); + // 更新异步支付通道订单信息 + asyncPayStrategy.generateChannelOrder(); + try { + // 异步支付操作 + asyncPayStrategy.doPayHandler(); + } catch (Exception e) { + // 记录错误原因 + payOrderExtra.setErrorMsg(e.getMessage()); + payOrderExtraManager.update(payOrderExtra); + throw e; + } + // 支付调起成功后操作, 使用事务来保证数据一致性 + return SpringUtil.getBean(this.getClass()).repeatPaySuccess(asyncPayStrategy, payOrder,payOrderExtra); } /** - * + * 重复支付成功后操作 */ - public void repeatCombinationPay(){ - + @Transactional(rollbackFor = Exception.class) + public PayResult repeatPaySuccess(AbsPayStrategy asyncPayStrategy, PayOrder payOrder, PayOrderExtra payOrderExtra) { + PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); + asyncPayStrategy.doSuccessHandler(); + // 如果支付完成, 进行订单完成处理, 同时发送回调消息 + if (payInfo.isPayComplete()) { + // TODO 使用网关返回的时间 + payOrder.setGatewayOrderNo(payInfo.getGatewayOrderNo()) + .setStatus(SUCCESS.getCode()) + .setPayTime(LocalDateTime.now()); + } + payOrderService.updateById(payOrder); + // 如果支付完成 发送通知 + if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ + // 查询通道订单 + List payChannelOrders = payChannelOrderManager.findAllByPaymentId(payOrder.getId()); + clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payChannelOrders); + } + return PayBuilder.buildPayResultByPayOrder(payOrder); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java index b21939b5..b61de504 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java @@ -101,9 +101,9 @@ public class WeChatPayStrategy extends AbsPayStrategy { */ @Override public void doSuccessHandler() { - PayChannelOrder payChannelOrder = channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); - this.getOrder().setAsyncChannel(this.getChannel().getCode()); PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); + // 更新通道支付订单 + PayChannelOrder payChannelOrder = channelOrderService.switchAsyncPayChannel(this.getOrder(), this.getPayChannelParam()); // 是否支付完成, 保存流水记录 if (asyncPayInfo.isPayComplete()){ weChatPayRecordService.pay(this.getOrder(), payChannelOrder); -- Gitee From 86b9c60f656c05944229bf9e532fc959c3bdefbd Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sat, 23 Mar 2024 23:16:52 +0800 Subject: [PATCH 09/45] =?UTF-8?q?feat=20=E6=94=AF=E4=BB=98=E9=99=90?= =?UTF-8?q?=E9=A2=9D=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 9 +++------ .../gateway/controller/TestController.java | 10 ---------- .../daxpay/service/code/AliPayCode.java | 3 +++ .../service/common/context/PlatformLocal.java | 2 +- .../channel/alipay/entity/AliPayConfig.java | 11 +++++++++++ .../channel/alipay/service/AliPayService.java | 4 ++++ .../alipay/service/AliPayTransferService.java | 15 +++++++++------ .../cash/service/CashPayConfigService.java | 13 +++++++++++++ .../channel/union/entity/UnionPayConfig.java | 3 +++ .../channel/union/service/UnionPayService.java | 4 ++++ .../voucher/service/VoucherConfigService.java | 17 +++++++++++++++-- .../channel/wechat/entity/WeChatPayConfig.java | 4 ++++ .../wechat/service/WeChatPayService.java | 4 ++++ .../common/service/PaymentAssistService.java | 2 +- .../payment/pay/strategy/CashPayStrategy.java | 10 ++++++++++ .../pay/strategy/VoucherPayStrategy.java | 12 +++++++++++- .../payment/pay/strategy/WalletPayStrategy.java | 2 +- .../system/config/entity/PlatformConfig.java | 2 +- .../dto/channel/alipay/AliPayConfigDto.java | 7 +++++++ .../dto/channel/union/UnionPayConfigDto.java | 2 ++ .../dto/channel/wechat/WeChatPayConfigDto.java | 3 +++ .../param/channel/alipay/AliPayConfigParam.java | 6 ++++++ .../channel/union/UnionPayConfigParam.java | 3 +++ .../channel/wechat/WeChatPayConfigParam.java | 3 +++ 24 files changed, 122 insertions(+), 29 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index e2aaf271..9f6dcf04 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,8 +1,5 @@ 2.0.4: -- [ ] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 - - [ ] 支付改造 - - [ ] 关闭订单改造 - - [ ] 支付补偿改造 +- [x] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 - [x] 首页驾驶舱功能: 各通道收入和支付情况 - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 @@ -15,17 +12,17 @@ - [ ] 云闪付 - [ ] 增加账户余额查询功能 - [ ] 支付宝 - - [ ] 微信 - [ ] 云闪付 - [ ] 云闪付支持对账功能 - [x] 结算台DEMO增加云闪付示例 - [ ] 增加支付限额 - - [ ] 各通道支持单独的限额 + - [x] 各通道(异步支付)支持单独的限额 - [ ] 整个订单支持整体的限额 2.0.x 版本内容 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 - [ ] 统一关闭接口增加使用撤销关闭订单 +- [ ] 支持分账 - [ ] 增加各类日志记录,例如钱包的各项操作 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 数据库表进行规则, 字段设置长度, 增加索引 diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java index e0d72911..579e3a5b 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java @@ -4,7 +4,6 @@ import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; -import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayTransferService; import cn.hutool.core.thread.ThreadUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; @@ -28,7 +27,6 @@ import java.util.Objects; @RequiredArgsConstructor public class TestController { private final LockTemplate lockTemplate; - private final AliPayTransferService aliPayTransferService; @Operation(summary = "锁测试1") @GetMapping("/lock1") @@ -59,13 +57,5 @@ public class TestController { return "ok"; } - @IgnoreAuth - @Operation(summary = "支付宝回调测试") - @GetMapping("/queryAmount") - public String alipay(){ - - aliPayTransferService.queryAccountAmount(); - return "ok"; - } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java index 865791c4..3e537c0a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java @@ -25,6 +25,9 @@ public interface AliPayCode { /** APP支付必填 APP支付产品 */ String QUICK_MSECURITY_PAY = "QUICK_MSECURITY_PAY"; + /** 询余额账户类型 */ + String QUERY_ACCOUNT_TYPE = "ACCTRANS_ACCOUNT"; + /** 付款码支付 */ String BAR_CODE = "bar_code"; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java index 36dec826..a66cf9c3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java @@ -35,5 +35,5 @@ public class PlatformLocal { private Integer orderTimeout; /** 支付限额 */ - private Integer limitAmount; + private Integer singleLimit; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java index 137312b8..6f5b13dd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java @@ -41,6 +41,10 @@ public class AliPayConfig extends MpBaseEntity implements EntityBaseFunction alipayConfig.getSingleLimit()){ + throw new PayFailureException("支付宝支付金额超过限额"); + } } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java index d8442d3e..17e9b3fe 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayTransferService.java @@ -2,13 +2,17 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; import com.alipay.api.domain.AlipayFundAccountQueryModel; +import com.alipay.api.domain.AlipayFundTransToaccountTransferModel; import com.alipay.api.response.AlipayFundAccountQueryResponse; +import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; import com.ijpay.alipay.AliPayApi; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import static cn.bootx.platform.daxpay.service.code.AliPayCode.QUERY_ACCOUNT_TYPE; + @Slf4j @Service @RequiredArgsConstructor @@ -20,12 +24,10 @@ public class AliPayTransferService { * 余额查询接口 */ @SneakyThrows - public void queryAccountAmount() { - AliPayConfig config = payConfigService.getAndCheckConfig(); - payConfigService.initConfig(config); + public void queryAccountAmount(AliPayConfig config) { AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel(); - model.setAccountType("ACCTRANS_ACCOUNT"); - model.setAlipayUserId("2088441532699265"); + model.setAccountType(QUERY_ACCOUNT_TYPE); + model.setAlipayUserId(config.getAlipayUserId()); AlipayFundAccountQueryResponse response = AliPayApi.accountQueryToResponse(model, null); System.out.println(response); } @@ -35,6 +37,7 @@ public class AliPayTransferService { */ @SneakyThrows public void transfer() { - + AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel(); + AlipayFundTransToaccountTransferResponse response = AliPayApi.transferToResponse(model); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/cash/service/CashPayConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/cash/service/CashPayConfigService.java index eeaf7371..1e3639ac 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/cash/service/CashPayConfigService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/cash/service/CashPayConfigService.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.core.channel.cash.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.WalletPayWay; import cn.bootx.platform.daxpay.service.core.channel.cash.dao.CashConfigManager; import cn.bootx.platform.daxpay.service.core.channel.cash.entity.CashConfig; @@ -38,6 +39,18 @@ public class CashPayConfigService { return cashConfigManager.findById(ID).orElseThrow(() -> new DataNotExistException("现金配置不存在")); } + /** + * 获取并检查钱包配置 + */ + public CashConfig getAndCheckConfig() { + CashConfig config = this.getConfig(); + if (!config.getEnable()){ + throw new PayFailureException("钱包支付未启用"); + } + return config; + } + + /** * 更新 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionPayConfig.java index 44c94e90..6d1e7a1d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionPayConfig.java @@ -41,6 +41,9 @@ public class UnionPayConfig extends MpBaseEntity implements EntityBaseFunction unionPayConfig.getSingleLimit()) { + throw new PayFailureException("云闪付支付金额超限"); + } } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/voucher/service/VoucherConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/voucher/service/VoucherConfigService.java index 7b065d41..d57a78ef 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/voucher/service/VoucherConfigService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/voucher/service/VoucherConfigService.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.core.channel.voucher.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.VoucherPayWay; import cn.bootx.platform.daxpay.service.core.channel.voucher.dao.VoucherConfigManager; import cn.bootx.platform.daxpay.service.core.channel.voucher.entity.VoucherConfig; @@ -33,10 +34,22 @@ public class VoucherConfigService { private final PayChannelConfigService payChannelConfigService; /** - * 获取钱包配置 + * 获取储值卡配置 */ public VoucherConfig getConfig(){ - return manager.findById(ID).orElseThrow(() -> new DataNotExistException("钱包配置不存在")); + return manager.findById(ID).orElseThrow(() -> new DataNotExistException("储值卡配置不存在")); + } + + + /** + * 获取并检查储值卡配置 + */ + public VoucherConfig getAndCheckConfig() { + VoucherConfig config = this.getConfig(); + if (!config.getEnable()){ + throw new PayFailureException("储值卡支付未启用"); + } + return config; } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java index 23a2429e..a8f11b4b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/entity/WeChatPayConfig.java @@ -46,6 +46,10 @@ public class WeChatPayConfig extends MpBaseEntity implements EntityBaseFunction< @DbColumn(comment = "是否启用") private Boolean enable; + /** 支付限额 */ + @DbColumn(comment = "支付限额") + private Integer singleLimit; + /** * 服务器异步通知页面路径, 需要填写本网关服务的地址, 不可以直接填写业务系统的地址 * 1. 需http://或者https://格式的完整路径, diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java index 0875cd51..fe6a773a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java @@ -70,6 +70,10 @@ public class WeChatPayService { if (!payWays.contains(payWayEnum.getCode())) { throw new PayFailureException("该微信支付方式不可用"); } + // 支付金额是否超限 + if (payChannelParam.getAmount() > weChatPayConfig.getSingleLimit()) { + throw new PayFailureException("微信支付金额超限"); + } } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java index f31a90fd..b870ac9c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java @@ -41,7 +41,7 @@ public class PaymentAssistService { platform.setSignSecret(config.getSignSecret()); platform.setNotifyUrl(config.getNotifyUrl()); platform.setOrderTimeout(config.getOrderTimeout()); - platform.setLimitAmount(config.getLimitAmount()); + platform.setSingleLimit(config.getSingleLimit()); platform.setWebsiteUrl(config.getWebsiteUrl()); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/CashPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/CashPayStrategy.java index fa18a894..0301631e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/CashPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/CashPayStrategy.java @@ -2,7 +2,10 @@ package cn.bootx.platform.daxpay.service.core.payment.pay.strategy; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.exception.pay.PayAmountAbnormalException; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; +import cn.bootx.platform.daxpay.service.core.channel.cash.entity.CashConfig; +import cn.bootx.platform.daxpay.service.core.channel.cash.service.CashPayConfigService; import cn.bootx.platform.daxpay.service.core.channel.cash.service.CashRecordService; import cn.bootx.platform.daxpay.service.func.AbsPayStrategy; import lombok.RequiredArgsConstructor; @@ -26,6 +29,8 @@ public class CashPayStrategy extends AbsPayStrategy { private final CashRecordService cashRecordService; + private final CashPayConfigService cashPayConfigService; + /** * 现金支付 */ @@ -39,11 +44,16 @@ public class CashPayStrategy extends AbsPayStrategy { */ @Override public void doBeforePayHandler() { + CashConfig config = cashPayConfigService.getAndCheckConfig(); // 检查金额 PayChannelParam payChannelParam = this.getPayChannelParam(); if (payChannelParam.getAmount() <= 0) { throw new PayAmountAbnormalException(); } + // 支付金额是否超限 + if (payChannelParam.getAmount() > config.getSingleLimit()) { + throw new PayFailureException("现金支付金额超过限制"); + } } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/VoucherPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/VoucherPayStrategy.java index 18dd4a09..4c41f909 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/VoucherPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/VoucherPayStrategy.java @@ -4,6 +4,8 @@ import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.channel.VoucherPayParam; import cn.bootx.platform.daxpay.service.core.channel.voucher.entity.Voucher; +import cn.bootx.platform.daxpay.service.core.channel.voucher.entity.VoucherConfig; +import cn.bootx.platform.daxpay.service.core.channel.voucher.service.VoucherConfigService; import cn.bootx.platform.daxpay.service.core.channel.voucher.service.VoucherPayService; import cn.bootx.platform.daxpay.service.core.channel.voucher.service.VoucherQueryService; import cn.bootx.platform.daxpay.service.core.channel.voucher.service.VoucherRecordService; @@ -38,6 +40,8 @@ public class VoucherPayStrategy extends AbsPayStrategy { private final VoucherRecordService voucherRecordService; + private final VoucherConfigService voucherConfigService; + private Voucher voucher; @Override @@ -63,8 +67,14 @@ public class VoucherPayStrategy extends AbsPayStrategy { catch (JSONException e) { throw new PayFailureException("储值卡支付参数错误"); } - this.voucher = voucherQueryService.getAndCheckVoucher(voucherPayParam); + VoucherConfig config = voucherConfigService.getAndCheckConfig(); + // 支付金额是否超限 + if (this.getPayChannelParam().getAmount() > config.getSingleLimit()) { + throw new PayFailureException("现金支付金额超过限制"); + } + // 金额是否满足 + this.voucher = voucherQueryService.getAndCheckVoucher(voucherPayParam); if (this.getPayChannelParam().getAmount() > this.voucher.getBalance()) { throw new PayFailureException("储值卡余额不足"); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WalletPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WalletPayStrategy.java index 8b6dfe89..93fc3d0b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WalletPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WalletPayStrategy.java @@ -82,7 +82,7 @@ public class WalletPayStrategy extends AbsPayStrategy { } // 判断是否超过限额 if (getPayChannelParam().getAmount() > this.walletConfig.getSingleLimit()){ - throw new PayFailureException("钱包单次支付金额超过限额"); + throw new PayFailureException("钱包支付金额超过限额"); } // 判断余额 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java index b4aa8779..ffc0f819 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java @@ -43,7 +43,7 @@ public class PlatformConfig extends MpBaseEntity implements EntityBaseFunction

Date: Sun, 24 Mar 2024 09:45:33 +0800 Subject: [PATCH 10/45] =?UTF-8?q?doc=20=E6=9B=B4=E6=96=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E7=BE=A4=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d09e9ef9..af02d833 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ QQ扫码加入QQ交流群 微信扫码加入微信交流群

-微信图片_20240226144703 +微信图片_20240226144703

## 🍻 鸣谢 -- Gitee From c290c1ea0f52838a3b0dc4217cff60344565c302 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sun, 24 Mar 2024 15:25:26 +0800 Subject: [PATCH 11/45] =?UTF-8?q?feat=20=E6=94=AF=E6=8C=81=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E9=99=90=E9=A2=9D=E9=85=8D=E7=BD=AE,=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=94=AF=E4=BB=98=E6=96=B9=E6=B3=95=E9=80=82=E9=85=8D?= =?UTF-8?q?=E9=99=90=E9=A2=9D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 7 +- .../daxpay/sdk/payment/PayOrderTest.java | 10 +-- .../bootx/platform/daxpay/util/PayUtil.java | 1 + .../service/common/context/PlatformLocal.java | 2 +- .../common/service/PaymentAssistService.java | 2 +- .../payment/pay/service/PayAssistService.java | 15 ++++ .../core/payment/pay/service/PayService.java | 79 +++++++++---------- .../payment/pay/strategy/AliPayStrategy.java | 1 + .../pay/strategy/WeChatPayStrategy.java | 1 - .../system/config/entity/PlatformConfig.java | 3 +- .../dto/channel/alipay/AliPayConfigDto.java | 3 +- .../dto/channel/cash/CashPayConfigDto.java | 2 +- .../dto/channel/voucher/VoucherConfigDto.java | 3 +- .../dto/channel/wallet/WalletConfigDto.java | 2 +- .../channel/wechat/WeChatPayConfigDto.java | 3 +- .../order/refund/RefundChannelOrderDto.java | 2 - .../dto/record/close/PayCloseRecordDto.java | 5 +- .../dto/record/repair/PayRepairRecordDto.java | 3 +- .../system/config/PayChannelConfigDto.java | 2 +- .../dto/system/config/PlatformConfigDto.java | 15 ++-- .../channel/wechat/WeChatPayConfigParam.java | 2 +- .../param/record/ClientNoticeRecordQuery.java | 8 +- .../param/record/ClientNoticeTaskQuery.java | 12 +-- .../param/record/PayCloseRecordQuery.java | 6 +- .../system/config/PlatformConfigParam.java | 16 ++-- 25 files changed, 107 insertions(+), 98 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 9f6dcf04..9ed4683d 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -11,13 +11,11 @@ - [ ] 微信 - [ ] 云闪付 - [ ] 增加账户余额查询功能 - - [ ] 支付宝 - - [ ] 云闪付 - [ ] 云闪付支持对账功能 - [x] 结算台DEMO增加云闪付示例 -- [ ] 增加支付限额 +- [x] 增加支付限额 - [x] 各通道(异步支付)支持单独的限额 - - [ ] 整个订单支持整体的限额 + - [x] 整个订单支持整体的限额 2.0.x 版本内容 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 @@ -28,7 +26,6 @@ - [ ] 数据库表进行规则, 字段设置长度, 增加索引 **任务池** -- [x] 增加手机用户收银台功能 - [ ] 订单超时支持数据表级别触发 - [ ] 支持转账操作, 通过支付通道专有参数进行实现, 转账时只能单个通道进行操作 - [ ] 支付成功回调后, 如果订单已超时, 则进入待退款订单中,提示进行退款,或者自动退款 diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java index 45010967..781f1a6c 100644 --- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayOrderTest.java @@ -74,13 +74,13 @@ public class PayOrderTest { PayChannelParam cash = new PayChannelParam(); cash.setChannel(PayChannelEnum.CASH.getCode()); cash.setWay(PayWayEnum.NORMAL.getCode()); - cash.setAmount(10); + cash.setAmount(22); // 储值卡支付 PayChannelParam card = new PayChannelParam(); card.setChannel(PayChannelEnum.VOUCHER.getCode()); card.setWay(PayWayEnum.NORMAL.getCode()); - card.setAmount(10); + card.setAmount(20001); // 储值卡通道参数 VoucherPayParam voucherPayParam = new VoucherPayParam(); voucherPayParam.setCardNo("123456"); @@ -113,19 +113,19 @@ public class PayOrderTest { param.setClientIp("127.0.0.1"); param.setNotNotify(true); - param.setBusinessNo("P0009"); + param.setBusinessNo("P0015"); param.setTitle("测试组合支付(包含异步支付)"); // 现金支付 PayChannelParam cash = new PayChannelParam(); cash.setChannel(PayChannelEnum.CASH.getCode()); cash.setWay(PayWayEnum.NORMAL.getCode()); - cash.setAmount(10); + cash.setAmount(201); // 异步支付 PayChannelParam async = new PayChannelParam(); async.setChannel(PayChannelEnum.ALI.getCode()); async.setWay(PayWayEnum.WEB.getCode()); - async.setAmount(1); + async.setAmount(2207); // 组装组合支付的参数 List payChannels = Arrays.asList(cash, async); diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java index 0e9b09d3..497bda70 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java @@ -43,6 +43,7 @@ public class PayUtil { * 检查支付金额 */ public void validationAmount(List payModeList) { + // 验证支付金额 for (PayChannelParam payChannelParam : payModeList) { // 支付金额小于等于零 if (payChannelParam.getAmount() < 0) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java index a66cf9c3..36dec826 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PlatformLocal.java @@ -35,5 +35,5 @@ public class PlatformLocal { private Integer orderTimeout; /** 支付限额 */ - private Integer singleLimit; + private Integer limitAmount; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java index b870ac9c..f31a90fd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentAssistService.java @@ -41,7 +41,7 @@ public class PaymentAssistService { platform.setSignSecret(config.getSignSecret()); platform.setNotifyUrl(config.getNotifyUrl()); platform.setOrderTimeout(config.getOrderTimeout()); - platform.setSingleLimit(config.getSingleLimit()); + platform.setLimitAmount(config.getLimitAmount()); platform.setWebsiteUrl(config.getWebsiteUrl()); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java index 5d46363a..e8b05b46 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java @@ -219,4 +219,19 @@ public class PayAssistService { } return null; } + + /** + * 检验订单是否超过限额 + */ + public void validationLimitAmount(PayParam payParam) { + // 总额校验 + PlatformLocal platformInfo = PaymentContextLocal.get().getPlatformInfo(); + Integer amount = payParam.getPayChannels() + .stream() + .map(PayChannelParam::getAmount) + .reduce(0, Integer::sum); + if (amount > platformInfo.getLimitAmount()) { + throw new PayFailureException("支付金额超过限额"); + } + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 9c2ea3e5..db2071f2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -101,6 +101,8 @@ public class PayService { PayUtil.validationAsyncPay(payParam); // 检查支付金额 PayUtil.validationAmount(payParam.getPayChannels()); + // 校验支付限额 + payAssistService.validationLimitAmount(payParam); String businessNo = payParam.getBusinessNo(); // 加锁 @@ -161,8 +163,6 @@ public class PayService { */ @Transactional(rollbackFor = Exception.class) public PayResult firstSyncPay(PayParam payParam){ - // 创建支付订单和扩展记录并返回支付订单对象 - PayOrder payOrder = payAssistService.createPayOrder(payParam); PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); // 获取支付方式,通过工厂生成对应的策略组 @@ -172,12 +172,15 @@ public class PayService { } // 初始化支付参数 - for (AbsPayStrategy strategy : strategies) { - strategy.initPayParam(payOrder, payParam); - } + strategies.forEach(strategy -> strategy.setPayParam(payParam)); - // 执行支付前处理动作 + // 执行支付前处理动作, 进行校验 strategies.forEach(AbsPayStrategy::doBeforePayHandler); + + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + strategies.forEach(strategy -> strategy.setOrder(payOrder)); + // 生成支付通道订单 strategies.forEach(AbsPayStrategy::generateChannelOrder); // 支付操作 @@ -201,8 +204,6 @@ public class PayService { */ private PayResult firstAsyncPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); - // 开启新事务执行订单预保存操作 - PayOrder payOrder = payAssistService.createPayOrder(payParam); // 获取支付方式,通过工厂生成对应的策略组 List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); @@ -214,10 +215,13 @@ public class PayService { .orElseThrow(() -> new PayFailureException("数据和代码异常, 请排查代码")); // 初始化支付的参数 - asyncPayStrategy.initPayParam(payOrder, payParam); + asyncPayStrategy.setPayParam(payParam); - // 执行支付前处理动作 + // 执行支付前处理动作, 进行各种校验 asyncPayStrategy.doBeforePayHandler(); + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + asyncPayStrategy.setOrder(payOrder); // 支付操作 try { @@ -262,20 +266,9 @@ public class PayService { */ private PayResult firstCombinationPay(PayParam payParam){ PayLocal payInfo = PaymentContextLocal.get().getPayInfo(); - // ------------------------- 进行同步支付 ------------------------------- - PayOrder payOrder = SpringUtil.getBean(this.getClass()).firstCombinationSyncPay(payParam); + // ------------------------- 进行同步支付, 成功后返回异步通道策略类 ------------------------------- + AbsPayStrategy asyncPayStrategy = SpringUtil.getBean(this.getClass()).firstCombinationSyncPay(payParam); // ------------------------- 进行异步支付 ------------------------------- - // 创建异步通道策略类 - //获取异步支付通道参数并构建支付策略 - PayChannelParam payChannelParam = payAssistService.getAsyncPayParam(payParam, payOrder); - AbsPayStrategy asyncPayStrategy = PayStrategyFactory.create(payChannelParam); - // 初始化支付的参数 - asyncPayStrategy.initPayParam(payOrder, payParam); - - // 支付前准备 - asyncPayStrategy.doBeforePayHandler(); - // 设置异步支付通道订单信息 - asyncPayStrategy.generateChannelOrder(); try { // 异步支付操作 asyncPayStrategy.doPayHandler(); @@ -291,13 +284,11 @@ public class PayService { } /** - * 首次组合支付, 先进行同步支付, 如果成功返回支付订单 - * 注意: 同时也执行异步支付通道订单的保存, 保证订单操作的原子性 + * 首次组合支付, 先进行同步支付, 如果成功返回异步支付策略 + * 注意: 同时也对异步支付通道进行校验和订单的保存, 保证整个订单操作的原子性 */ @Transactional(rollbackFor = Exception.class) - public PayOrder firstCombinationSyncPay(PayParam payParam){ - // 创建支付订单和扩展记录并返回支付订单对象 - PayOrder payOrder = payAssistService.createPayOrder(payParam); + public AbsPayStrategy firstCombinationSyncPay(PayParam payParam){ // 获取支付方式,通过工厂生成对应的策略组 List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); @@ -306,30 +297,38 @@ public class PayService { } // 初始化支付的参数 for (AbsPayStrategy strategy : strategies) { - strategy.initPayParam(payOrder, payParam); + strategy.setPayParam(payParam); } - // 取出同步通道 然后进行同步通道的支付, 使用单独事务 - List syncStrategies = strategies.stream() - .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) - .collect(Collectors.toList()); - // 初始化支付参数 - for (AbsPayStrategy strategy : syncStrategies) { - strategy.initPayParam(payOrder, payParam); - } + strategies.forEach(strategy -> strategy.setPayParam(payParam)); + + // 执行支付前处理动作, 对各通道进行检验 + strategies.forEach(AbsPayStrategy::doBeforePayHandler); + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + strategies.forEach(strategy -> strategy.setOrder(payOrder)); - // 执行支付前处理动作 - syncStrategies.forEach(AbsPayStrategy::doBeforePayHandler); // 生成支付通道订单, 同时也执行异步支付通道订单的保存, 保证订单操作的原子性 strategies.forEach(AbsPayStrategy::generateChannelOrder); + + // 取出同步通道 然后进行同步通道的支付操作 + List syncStrategies = strategies.stream() + .filter(strategy -> !ASYNC_TYPE.contains(strategy.getChannel())) + .collect(Collectors.toList()); + syncStrategies.forEach(strategy -> strategy.setPayParam(payParam)); + // 支付操作 syncStrategies.forEach(AbsPayStrategy::doPayHandler); // 支付调起成功操作, 进行扣款、创建记录类类似的操作 syncStrategies.forEach(AbsPayStrategy::doSuccessHandler); // 保存通道支付订单 payAssistService.savePayChannelOrder(strategies); - return payOrder; + + return strategies.stream() + .filter(o-> ASYNC_TYPE.contains(o.getChannel())) + .findFirst() + .orElseThrow(()->new PayFailureException("支付代码异常,请检查")); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java index ab27de58..961e69b9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/AliPayStrategy.java @@ -78,6 +78,7 @@ public class AliPayStrategy extends AbsPayStrategy { } // 检查并获取支付宝支付配置 this.initAlipayConfig(); + // 校验 aliPayService.validation(this.getPayChannelParam(), alipayConfig); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java index b61de504..38621ac5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/strategy/WeChatPayStrategy.java @@ -78,7 +78,6 @@ public class WeChatPayStrategy extends AbsPayStrategy { weChatPayService.validation(this.getPayChannelParam(), weChatPayConfig); } - /** * 不使用默认的生成通道支付单方法, 异步支付通道的支付订单自己管理 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java index ffc0f819..10a5eb63 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/system/config/entity/PlatformConfig.java @@ -43,12 +43,11 @@ public class PlatformConfig extends MpBaseEntity implements EntityBaseFunction

payWays; /** 单次支持支持多少钱 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/voucher/VoucherConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/voucher/VoucherConfigDto.java index fc917766..c3337a1a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/voucher/VoucherConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/voucher/VoucherConfigDto.java @@ -1,7 +1,6 @@ package cn.bootx.platform.daxpay.service.dto.channel.voucher; import cn.bootx.platform.common.core.rest.dto.BaseDto; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,7 +24,7 @@ public class VoucherConfigDto extends BaseDto { private Boolean enable; /** 可用支付方式 */ - @DbColumn(comment = "可用支付方式") + @Schema(description = "可用支付方式") private List payWays; /** 单次支持支持多少钱 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wallet/WalletConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wallet/WalletConfigDto.java index 3d9822ab..38e0cdff 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wallet/WalletConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wallet/WalletConfigDto.java @@ -25,7 +25,7 @@ public class WalletConfigDto extends BaseDto { private Boolean enable; /** 可用支付方式 */ - @DbColumn(comment = "可用支付方式") + @Schema(description = "可用支付方式") private List payWays; /** 单次支持支持多少钱 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java index 7ff9d347..7d5f148a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java @@ -2,7 +2,6 @@ package cn.bootx.platform.daxpay.service.dto.channel.wechat; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -29,7 +28,7 @@ public class WeChatPayConfigDto extends BaseDto implements Serializable { @SensitiveInfo private String wxAppId; - @DbColumn(comment = "是否启用") + @Schema(description = "是否启用") private Boolean enable; @Schema(description = "支付限额") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundChannelOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundChannelOrderDto.java index 91328b7c..97acf396 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundChannelOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundChannelOrderDto.java @@ -2,7 +2,6 @@ package cn.bootx.platform.daxpay.service.dto.order.refund; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.RefundStatusEnum; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,7 +18,6 @@ import lombok.experimental.Accessors; @Schema(title = "支付退款通道订单") public class RefundChannelOrderDto extends BaseDto { - @DbColumn(comment = "关联退款id") @Schema(description = "关联退款id") private Long refundId; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/close/PayCloseRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/close/PayCloseRecordDto.java index e6c057e2..13fa861d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/close/PayCloseRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/close/PayCloseRecordDto.java @@ -2,7 +2,6 @@ package cn.bootx.platform.daxpay.service.dto.record.close; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -45,10 +44,10 @@ public class PayCloseRecordDto extends BaseDto { private String errorMsg; /** 客户端IP */ - @DbColumn(comment = "客户端IP") + @Schema(description = "客户端IP") private String clientIp; /** 请求链路ID */ - @DbColumn(comment = "请求链路ID") + @Schema(description = "请求链路ID") private String reqId; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/repair/PayRepairRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/repair/PayRepairRecordDto.java index 44c0fae8..35ead2d0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/repair/PayRepairRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/repair/PayRepairRecordDto.java @@ -5,7 +5,6 @@ import cn.bootx.platform.daxpay.code.PayStatusEnum; import cn.bootx.platform.daxpay.service.code.PayRepairSourceEnum; import cn.bootx.platform.daxpay.service.code.PayRepairWayEnum; import cn.bootx.platform.daxpay.service.code.RefundRepairWayEnum; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -58,7 +57,7 @@ public class PayRepairRecordDto extends BaseDto { private String repairWay; /** 修复的异步通道 */ - @DbColumn(comment = "修复的异步通道") + @Schema(description = "修复的异步通道") private String asyncChannel; /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PayChannelConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PayChannelConfigDto.java index fe6ed30e..23c43887 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PayChannelConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PayChannelConfigDto.java @@ -27,7 +27,7 @@ public class PayChannelConfigDto extends BaseDto { private String name; /** 是否启用 */ - @DbColumn(comment = "是否启用") + @Schema(description = "是否启用") private Boolean enable; /** logo图片 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PlatformConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PlatformConfigDto.java index e4ce2b4c..6b4d8953 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PlatformConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/system/config/PlatformConfigDto.java @@ -15,24 +15,27 @@ import lombok.experimental.Accessors; @Schema(title = "平台配置") public class PlatformConfigDto { - @Schema(description ="网站地址") + @Schema(description = "网站地址") private String websiteUrl; /** * @see PaySignTypeEnum */ - @Schema(description ="签名方式") + @Schema(description = "签名方式") private String signType; - @Schema(description ="签名秘钥") + @Schema(description = "签名秘钥") private String signSecret; - @Schema(description ="异步支付通知地址") + @Schema(description = "异步支付通知地址") private String notifyUrl; - @Schema(description ="同步支付跳转地址") + @Schema(description = "同步支付跳转地址") private String returnUrl; - @Schema(description ="订单默认超时时间(分钟)") + @Schema(description = "订单默认超时时间(分钟)") private Integer orderTimeout; + + @Schema(description = "订单默认超时时间(分钟)") + private Integer limitAmount; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java index f7c0d738..714d282c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java @@ -35,7 +35,7 @@ public class WeChatPayConfigParam { @Schema(description = "异步通知地址") private String notifyUrl; - @Schema(description ="同步通知地址") + @Schema(description = "同步通知地址") private String returnUrl; /** 接口版本, 使用v2还是v3接口 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeRecordQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeRecordQuery.java index 118fac53..003c4ade 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeRecordQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeRecordQuery.java @@ -20,18 +20,18 @@ import lombok.experimental.Accessors; public class ClientNoticeRecordQuery extends QueryOrder { /** 任务ID */ - @Schema(description ="任务ID") + @Schema(description = "任务ID") private Long taskId; /** 请求次数 */ - @Schema(description ="请求次数") + @Schema(description = "请求次数") private Integer reqCount; /** 发送是否成功 */ - @Schema(description ="发送是否成功") + @Schema(description = "发送是否成功") private Boolean success; /** 错误信息 */ - @Schema(description ="错误信息") + @Schema(description = "错误信息") private String errorMsg; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeTaskQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeTaskQuery.java index 12201575..6ad7cacd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeTaskQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/ClientNoticeTaskQuery.java @@ -21,29 +21,29 @@ import lombok.experimental.Accessors; public class ClientNoticeTaskQuery extends QueryOrder { /** 本地订单ID */ - @Schema(description ="本地订单ID") + @Schema(description = "本地订单ID") private Long orderId; /** * 通知类型 * @see ClientNoticeTypeEnum */ - @Schema(description ="通知类型") + @Schema(description = "通知类型") private String type; /** 消息内容 */ - @Schema(description ="消息内容") + @Schema(description = "消息内容") private String content; /** 是否发送成功 */ - @Schema(description ="是否发送成功") + @Schema(description = "是否发送成功") private Boolean success; /** 发送次数 */ - @Schema(description ="发送次数") + @Schema(description = "发送次数") private Integer sendCount; /** 发送地址 */ - @Schema(description ="发送地址") + @Schema(description = "发送地址") private String url; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCloseRecordQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCloseRecordQuery.java index 529422e9..07042791 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCloseRecordQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCloseRecordQuery.java @@ -18,17 +18,17 @@ import lombok.experimental.Accessors; @Schema(title = "支付关闭记录") public class PayCloseRecordQuery extends QueryOrder { - @Schema(description ="支付记录id") + @Schema(description = "支付记录id") private Long paymentId; - @Schema(description ="业务号") + @Schema(description = "业务号") private String businessNo; /** * 关闭的异步支付通道, 可以为空 * @see PayChannelEnum#getCode() */ - @Schema(description ="关闭的异步支付通道") + @Schema(description = "关闭的异步支付通道") private String asyncChannel; @Schema(description = "请求链路ID") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/system/config/PlatformConfigParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/system/config/PlatformConfigParam.java index 4a50341d..dd077977 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/system/config/PlatformConfigParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/system/config/PlatformConfigParam.java @@ -1,7 +1,6 @@ package cn.bootx.platform.daxpay.service.param.system.config; import cn.bootx.platform.daxpay.code.PaySignTypeEnum; -import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -16,24 +15,27 @@ import lombok.experimental.Accessors; @Schema(title = "平台配置") public class PlatformConfigParam { - @DbColumn(comment = "网站地址") + @Schema(description = "网站地址") private String websiteUrl; /** * @see PaySignTypeEnum */ - @DbColumn(comment = "签名方式") + @Schema(description = "签名方式") private String signType; - @DbColumn(comment = "签名秘钥") + @Schema(description = "签名秘钥") private String signSecret; - @DbColumn(comment = "支付通知地址") + @Schema(description = "支付通知地址") private String notifyUrl; - @Schema(description ="同步支付跳转地址") + @Schema(description = "同步支付跳转地址") private String returnUrl; - @DbColumn(comment = "订单默认超时时间") + @Schema(description = "订单默认超时时间(分钟)") private Integer orderTimeout; + + @Schema(description = "订单支付限额(分)") + private Integer limitAmount; } -- Gitee From 9bf5c701efdfff353e8a6a540d603774b89340b8 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sun, 24 Mar 2024 23:18:05 +0800 Subject: [PATCH 12/45] =?UTF-8?q?feat=20=E4=BA=91=E9=97=AA=E4=BB=98?= =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 5 +- .../daxpay/service/code/UnionPayCode.java | 14 +- .../service/code/UnionReconcileFieldEnum.java | 44 ++++++ .../entity/UnionReconcileBillDetail.java | 70 +++++++++ .../service/UnionPayReconcileService.java | 141 +++++++++++++++++- .../strategy/UnionPayReconcileStrategy.java | 11 +- .../service/sdk/union/api/UnionPayKit.java | 14 +- 7 files changed, 276 insertions(+), 23 deletions(-) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionReconcileFieldEnum.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java diff --git a/_doc/Task.md b/_doc/Task.md index 9ed4683d..f1f2e778 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -4,13 +4,9 @@ - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 -- [ ] 报表功能 - - [ ] 各通道收入和支付情况 - [ ] 增加转账功能 - [ ] 支付宝 - [ ] 微信 - - [ ] 云闪付 -- [ ] 增加账户余额查询功能 - [ ] 云闪付支持对账功能 - [x] 结算台DEMO增加云闪付示例 - [x] 增加支付限额 @@ -19,6 +15,7 @@ 2.0.x 版本内容 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 +- [ ] 资金流水优化 - [ ] 统一关闭接口增加使用撤销关闭订单 - [ ] 支持分账 - [ ] 增加各类日志记录,例如钱包的各项操作 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java index 4d6b8591..7f2280b7 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java @@ -53,9 +53,19 @@ public interface UnionPayCode { /** 总金额 */ String TOTAL_FEE = "settleAmt"; - - /** 对账单下载类型编码 */ String RECONCILE_BILL_TYPE = "00"; + /* 对账单交易代码 */ + /** 消费 */ + String RECONCILE_TYPE_PAY = "S22"; + + /** 退款 */ + String RECONCILE_TYPE_REFUND = "S30 "; + + + /** 对账各字段位数游标 */ + int[] RECONCILE_BILL_SPLIT = {3,11,11,6,10,19,12,4,2,21,2,32,2,6,10,13,13,4,15,2,2,6,2,4,32,1,21,15,1,15,32,13,13,8,32,13,13,12,2,1,32,13,2,1,12,67}; + + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionReconcileFieldEnum.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionReconcileFieldEnum.java new file mode 100644 index 00000000..89b4de31 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionReconcileFieldEnum.java @@ -0,0 +1,44 @@ +package cn.bootx.platform.daxpay.service.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 云闪付对账单字段 + * @author xxm + * @since 2024/3/24 + */ +@Getter +@AllArgsConstructor +public enum UnionReconcileFieldEnum { + + /** 交易代码 */ + TRADE_TYPE(0, "tradeType"), + /** 交易传输时间 MMDDhhmmss */ + txnTime(4, "txnTime"), + /** 交易金额 */ + TXN_AMT(6, "txnAmt"), + /** 查询流水号 */ + QUERY_ID(9, "queryId"), + /** 商户订单号 */ + ORDER_ID(11, "orderId"); + + + + /** 序号 */ + private final int no; + /** 字段名 */ + private final String filed; + + /** + * 根据序号查询 + */ + public static UnionReconcileFieldEnum findByNo(int no){ + return Arrays.stream(values()) + .filter(o->o.no == no) + .findFirst() + .orElse(null); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java new file mode 100644 index 00000000..f156fe2b --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java @@ -0,0 +1,70 @@ +package cn.bootx.platform.daxpay.service.core.channel.union.entity; + +import cn.bootx.table.modify.annotation.DbColumn; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 云闪付业务明细对账单 + * @author xxm + * @since 2024/3/24 + */ +@Data +@Accessors(chain = true) +public class UnionReconcileBillDetail { + + /** 关联对账订单ID */ + @DbColumn(comment = "关联对账订单ID") + private Long recordOrderId; + /** 交易代码 */ + private String tradeType; + /** 代理机构标识码 */ + /** 发送机构标识码 */ + /** 系统跟踪号 */ + /** 交易传输时间 */ + private String txnTime; + /** 帐号 */ + /** 交易金额 */ + private String txnAmt; + /** 商户类别 */ + /** 终端类型 */ + /** 查询流水号 */ + private String queryId; + /** 支付方式(旧) */ + /** 商户订单号 */ + private String orderId; + /** 支付卡类型 */ + /** 原始交易的系统跟踪号 */ + /** 原始交易日期时间 */ + /** 商户手续费 */ + /** 结算金额 */ + /** 支付方式 */ + /** 集团商户代码 */ + /** 交易类型 */ + /** 交易子类 */ + /** 业务类型 */ + /** 帐号类型 */ + /** 账单类型 */ + /** 账单号码 */ + /** 交互方式 */ + /** 商户代码 */ + /** 分账入账方式 */ + /** 二级商户代码 */ + /** 二级商户简称 */ + /** 二级商户分账入账金额 */ + /** 清算净额 */ + /** 终端号 */ + /** 商户自定义域 */ + /** 优惠金额 */ + /** 发票金额 */ + /** 分期付款附加手续费 */ + /** 分期付款期数 */ + /** 交易介质 */ + /** 原始交易订单号 */ + /** 清算金额 */ + /** 服务点输入方式码 */ + /** 移动支付产品标志 */ + /** 交易代码 */ + /** 检索参考号 */ + /** 保留使用 */ +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java index 18c12667..77654817 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java @@ -1,13 +1,31 @@ package cn.bootx.platform.daxpay.service.core.channel.union.service; +import cn.bootx.platform.common.core.util.LocalDateTimeUtil; +import cn.bootx.platform.daxpay.code.ReconcileTradeEnum; +import cn.bootx.platform.daxpay.service.code.UnionPayCode; +import cn.bootx.platform.daxpay.service.code.UnionReconcileFieldEnum; +import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; +import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionReconcileBillDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileDetail; import cn.bootx.platform.daxpay.service.sdk.union.api.UnionPayKit; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.compress.Deflate; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.Map; +import java.io.*; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; +import static cn.bootx.platform.daxpay.service.code.UnionPayCode.RECONCILE_BILL_SPLIT; import static cn.bootx.platform.daxpay.service.code.UnionPayCode.RECONCILE_BILL_TYPE; /** @@ -26,12 +44,127 @@ public class UnionPayReconcileService { public void downAndSave(Date date, Long recordOrderId, UnionPayKit unionPayKit){ // 下载对账单 Map stringObjectMap = unionPayKit.downloadBill(date, RECONCILE_BILL_TYPE); + + String fileContent = stringObjectMap.get("fileContent").toString(); + try { + + // 先解base64,再DEFLATE解压为zip流 + byte[] decode = Base64.decode(fileContent); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Deflate deflate = Deflate.of(new ByteArrayInputStream(decode), out, false); + deflate.inflater(); + deflate.close(); + + // 读取zip文件, 解析出对账单内容 + byte[] zipBytes = out.toByteArray(); + ZipArchiveInputStream zipArchiveInputStream = new ZipArchiveInputStream(new ByteArrayInputStream(zipBytes),"GBK"); + ZipArchiveEntry entry; + List billDetails = new ArrayList<>(); + while ((entry= zipArchiveInputStream.getNextZipEntry()) != null){ + System.out.println(StrUtil.startWith(entry.getName(), "INN")); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(zipArchiveInputStream,"GBK")); + if (StrUtil.startWith(entry.getName(), "INN")){ + // 明细解析 + List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); + billDetails = this.parseDetail(strings); + } else { + // 汇总目前不进行处理 + } + } + // 保存原始对账记录 + this.save(billDetails, recordOrderId); + + // 将原始交易明细对账记录转换通用结构并保存到上下文中 + this.convertAndSave(billDetails); +// Reader bufferedReader = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get("D:/data/INN24031100ZM_777290058206553.txt")))); +// List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); +// List unionReconcileBillDetails = this.parseDetail(strings); +// System.out.println(unionReconcileBillDetails); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * 解析对账单明细 + */ + private List parseDetail(List list){ + return list.stream() + .map(this::convertDetail) + .collect(Collectors.toList()); + } + + /** + * 解析明细条目 + */ + private UnionReconcileBillDetail convertDetail(String line){ + //解析的结果MAP,key为对账文件列序号,value为解析的值 + Map zmDataMap = new HashMap<>(); + //左侧游标 + int leftIndex = 0; + //右侧游标 + int rightIndex = 0; + for(int i=0;i billDetails){ + List collect = billDetails.stream() + .map(this::convert) + .collect(Collectors.toList()); + // 写入到上下文中 + PaymentContextLocal.get().getReconcileInfo().setReconcileDetails(collect); + } + + + + /** + * 转换为通用对账记录对象 + */ + private ReconcileDetail convert(UnionReconcileBillDetail billDetail){ + // 金额 + String orderAmount = billDetail.getTxnAmt(); + int amount = Integer.parseInt(orderAmount); + + // 默认为支付对账记录 + ReconcileDetail reconcileDetail = new ReconcileDetail() + .setRecordOrderId(billDetail.getRecordOrderId()) + .setOrderId(billDetail.getOrderId()) + .setType(ReconcileTradeEnum.PAY.getCode()) + .setAmount(amount) + .setGatewayOrderNo(billDetail.getQueryId()); + // 时间 + String txnTime = billDetail.getTxnTime(); + if (StrUtil.isNotBlank(txnTime)) { + LocalDateTime time = LocalDateTimeUtil.parse(txnTime, DatePattern.NORM_DATETIME_PATTERN); + reconcileDetail.setOrderTime(time); + } + + // 退款覆盖更新对应的字段 + if (Objects.equals(billDetail.getTradeType(), UnionPayCode.RECONCILE_TYPE_REFUND)){ + reconcileDetail.setType(ReconcileTradeEnum.REFUND.getCode()); + } + return reconcileDetail; + } + + /** + * 保存原始对账记录 + */ + private void save(List billDetails, Long recordOrderId){ + billDetails.forEach(o->o.setRecordOrderId(recordOrderId)); } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java index 3184551c..7602bcdc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java @@ -1,9 +1,9 @@ package cn.bootx.platform.daxpay.service.core.payment.reconcile.strategy; +import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.common.sequence.func.Sequence; import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.core.channel.union.convert.UnionPayConvert; import cn.bootx.platform.daxpay.service.core.channel.union.dao.UnionPayRecordManager; import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionPayConfig; @@ -68,6 +68,10 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { @Override public void doBeforeHandler() { UnionPayConfig config = configService.getConfig(); + // 测试环境使用测试号 + if (config.isSandbox()) { + config.setMachId("700000000000001"); + } this.unionPayKit = configService.initPayService(config); } @@ -76,12 +80,9 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { */ @Override public void downAndSave() { - if (true){ - throw new PayFailureException("功能暂时未实现"); - } - Date date = DateUtil.date(this.getRecordOrder().getDate()); reconcileService.downAndSave(date, this.getRecordOrder().getId(), this.unionPayKit); + throw new BizException("123"); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java index 459729cf..e05ed74c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java @@ -720,15 +720,13 @@ public class UnionPayKit extends UnionPayService { this.setSign(params); String responseStr = getHttpRequestTemplate().postForObject(this.getFileTransUrl(), params, String.class); JSONObject response = UriVariables.getParametersToMap(responseStr); - if (this.verify(response)) { - if (SDKConstants.OK_RESP_CODE.equals(response.get(SDKConstants.param_respCode))) { +// if (this.verify(response)) { +// if (SDKConstants.OK_RESP_CODE.equals(response.get(SDKConstants.param_respCode))) { return response; - - } - throw new PayErrorException(new PayException(response.get(SDKConstants.param_respCode).toString(), response.get(SDKConstants.param_respMsg).toString(), response.toString())); - - } - throw new PayErrorException(new PayException("failure", "验证签名失败", response.toString())); +// } +// throw new PayErrorException(new PayException(response.get(SDKConstants.param_respCode).toString(), response.get(SDKConstants.param_respMsg).toString(), response.toString())); +// } +// throw new PayErrorException(new PayException("failure", "验证签名失败", response.toString())); } -- Gitee From 3eb0f4589f04478b99d53ba46ddb98a7ffc5f71e Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 25 Mar 2024 17:42:52 +0800 Subject: [PATCH 13/45] =?UTF-8?q?feat=20=E4=BA=91=E9=97=AA=E4=BB=98?= =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 6 +- .../daxpay/service/code/UnionPayCode.java | 6 ++ .../common/context/ReconcileLocal.java | 4 ++ .../dao/UnionReconcileBillDetailManager.java | 18 ++++++ .../dao/UnionReconcileBillDetailMapper.java | 14 +++++ .../entity/UnionReconcileBillDetail.java | 9 +++ .../service/UnionPayReconcileService.java | 55 +++++++++++-------- .../reconcile/entity/ReconcileOrder.java | 3 + .../service/ReconcileOrderService.java | 1 - .../reconcile/service/ReconcileService.java | 6 +- .../strategy/AlipayReconcileStrategy.java | 9 ++- .../strategy/UnionPayReconcileStrategy.java | 8 +-- .../strategy/WechatPayReconcileStrategy.java | 6 +- .../sequence/DaxPaySequenceHandler.java} | 21 +++---- .../service/sdk/union/api/UnionPayKit.java | 2 - 15 files changed, 111 insertions(+), 57 deletions(-) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailMapper.java rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/{configuration/sequence/DaxPaySequenceConfiguration.java => handler/sequence/DaxPaySequenceHandler.java} (58%) diff --git a/_doc/Task.md b/_doc/Task.md index f1f2e778..11958cec 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -4,10 +4,8 @@ - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 -- [ ] 增加转账功能 - - [ ] 支付宝 - - [ ] 微信 -- [ ] 云闪付支持对账功能 +- [x] 云闪付支持对账功能 + - [ ] 对账文件支持手动导入 - [x] 结算台DEMO增加云闪付示例 - [x] 增加支付限额 - [x] 各通道(异步支付)支持单独的限额 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java index 7f2280b7..b838730f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/UnionPayCode.java @@ -56,6 +56,12 @@ public interface UnionPayCode { /** 对账单下载类型编码 */ String RECONCILE_BILL_TYPE = "00"; + /** 文件内容 */ + String FILE_CONTENT = "fileContent"; + + /** 明细对账单文件前缀 */ + String RECONCILE_FILE_PREFIX = "INN"; + /* 对账单交易代码 */ /** 消费 */ String RECONCILE_TYPE_PAY = "S22"; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/ReconcileLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/ReconcileLocal.java index 31afc8a5..1384d6d3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/ReconcileLocal.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/ReconcileLocal.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.common.context; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrder; import lombok.Data; import lombok.experimental.Accessors; @@ -15,6 +16,9 @@ import java.util.List; @Accessors(chain = true) public class ReconcileLocal { + /** 对账订单 */ + private ReconcileOrder reconcileOrder; + /** 通用支付对账记录 */ private List reconcileDetails; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailManager.java new file mode 100644 index 00000000..9ea105ac --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailManager.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.core.channel.union.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionReconcileBillDetail; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +/** + * + * @author xxm + * @since 2024/3/25 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class UnionReconcileBillDetailManager extends BaseManager { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailMapper.java new file mode 100644 index 00000000..87456c1c --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/dao/UnionReconcileBillDetailMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.channel.union.dao; + +import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionReconcileBillDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/25 + */ +@Mapper +public interface UnionReconcileBillDetailMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java index f156fe2b..28e27be9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/entity/UnionReconcileBillDetail.java @@ -1,6 +1,8 @@ package cn.bootx.platform.daxpay.service.core.channel.union.entity; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbTable; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.experimental.Accessors; @@ -11,27 +13,34 @@ import lombok.experimental.Accessors; */ @Data @Accessors(chain = true) +@DbTable(comment = "云闪付业务明细对账单") +@TableName("pay_union_reconcile_bill_detail") public class UnionReconcileBillDetail { /** 关联对账订单ID */ @DbColumn(comment = "关联对账订单ID") private Long recordOrderId; /** 交易代码 */ + @DbColumn(comment = "交易代码") private String tradeType; /** 代理机构标识码 */ /** 发送机构标识码 */ /** 系统跟踪号 */ /** 交易传输时间 */ + @DbColumn(comment = "交易传输时间") private String txnTime; /** 帐号 */ /** 交易金额 */ + @DbColumn(comment = "交易金额") private String txnAmt; /** 商户类别 */ /** 终端类型 */ /** 查询流水号 */ + @DbColumn(comment = "查询流水号") private String queryId; /** 支付方式(旧) */ /** 商户订单号 */ + @DbColumn(comment = "商户订单号") private String orderId; /** 支付卡类型 */ /** 原始交易的系统跟踪号 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java index 77654817..013033dc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java @@ -2,11 +2,14 @@ package cn.bootx.platform.daxpay.service.core.channel.union.service; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.daxpay.code.ReconcileTradeEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.UnionPayCode; import cn.bootx.platform.daxpay.service.code.UnionReconcileFieldEnum; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; +import cn.bootx.platform.daxpay.service.core.channel.union.dao.UnionReconcileBillDetailManager; import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionReconcileBillDetail; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrder; import cn.bootx.platform.daxpay.service.sdk.union.api.UnionPayKit; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64; @@ -14,6 +17,7 @@ import cn.hutool.core.compress.Deflate; import cn.hutool.core.date.DatePattern; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; +import com.egzosn.pay.union.bean.SDKConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; @@ -21,12 +25,12 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.springframework.stereotype.Service; import java.io.*; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -import static cn.bootx.platform.daxpay.service.code.UnionPayCode.RECONCILE_BILL_SPLIT; -import static cn.bootx.platform.daxpay.service.code.UnionPayCode.RECONCILE_BILL_TYPE; +import static cn.bootx.platform.daxpay.service.code.UnionPayCode.*; /** * 云闪付对账 @@ -38,16 +42,22 @@ import static cn.bootx.platform.daxpay.service.code.UnionPayCode.RECONCILE_BILL_ @RequiredArgsConstructor public class UnionPayReconcileService { + private final UnionReconcileBillDetailManager unionReconcileBillDetailManager; + /** * 下载对账单 */ public void downAndSave(Date date, Long recordOrderId, UnionPayKit unionPayKit){ // 下载对账单 - Map stringObjectMap = unionPayKit.downloadBill(date, RECONCILE_BILL_TYPE); + Map map = unionPayKit.downloadBill(date, RECONCILE_BILL_TYPE); + String fileContent = map.get(FILE_CONTENT).toString(); + // 判断是否成功 + if (!SDKConstants.OK_RESP_CODE.equals(map.get(SDKConstants.param_respCode))) { + log.warn("云闪付获取对账文件失败"); + throw new PayFailureException("云闪付获取对账文件失败"); + } - String fileContent = stringObjectMap.get("fileContent").toString(); try { - // 先解base64,再DEFLATE解压为zip流 byte[] decode = Base64.decode(fileContent); ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -61,9 +71,8 @@ public class UnionPayReconcileService { ZipArchiveEntry entry; List billDetails = new ArrayList<>(); while ((entry= zipArchiveInputStream.getNextZipEntry()) != null){ - System.out.println(StrUtil.startWith(entry.getName(), "INN")); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(zipArchiveInputStream,"GBK")); - if (StrUtil.startWith(entry.getName(), "INN")){ + if (StrUtil.startWith(entry.getName(), RECONCILE_FILE_PREFIX)){ // 明细解析 List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); billDetails = this.parseDetail(strings); @@ -73,13 +82,8 @@ public class UnionPayReconcileService { } // 保存原始对账记录 this.save(billDetails, recordOrderId); - - // 将原始交易明细对账记录转换通用结构并保存到上下文中 + // 转换为通用对账记录对象 this.convertAndSave(billDetails); -// Reader bufferedReader = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get("D:/data/INN24031100ZM_777290058206553.txt")))); -// List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); -// List unionReconcileBillDetails = this.parseDetail(strings); -// System.out.println(unionReconcileBillDetails); } catch (IOException e) { throw new RuntimeException(e); } @@ -102,13 +106,12 @@ public class UnionPayReconcileService { Map zmDataMap = new HashMap<>(); //左侧游标 int leftIndex = 0; - //右侧游标 - int rightIndex = 0; for(int i=0;i billDetails){ List collect = billDetails.stream() .map(this::convert) + // 只处理支付和退款的对账记录 + .filter(Objects::nonNull) .collect(Collectors.toList()); // 写入到上下文中 PaymentContextLocal.get().getReconcileInfo().setReconcileDetails(collect); } - - /** * 转换为通用对账记录对象 */ private ReconcileDetail convert(UnionReconcileBillDetail billDetail){ + ReconcileOrder reconcileOrder = PaymentContextLocal.get() + .getReconcileInfo() + .getReconcileOrder(); // 金额 String orderAmount = billDetail.getTxnAmt(); int amount = Integer.parseInt(orderAmount); @@ -146,10 +152,13 @@ public class UnionPayReconcileService { .setAmount(amount) .setGatewayOrderNo(billDetail.getQueryId()); - // 时间 - String txnTime = billDetail.getTxnTime(); + // 时间, 从对账订单获取年份 + LocalDate date = reconcileOrder.getDate(); + String year = LocalDateTimeUtil.format(date, DatePattern.NORM_YEAR_PATTERN); + + String txnTime = year + billDetail.getTxnTime(); if (StrUtil.isNotBlank(txnTime)) { - LocalDateTime time = LocalDateTimeUtil.parse(txnTime, DatePattern.NORM_DATETIME_PATTERN); + LocalDateTime time = LocalDateTimeUtil.parse(txnTime, DatePattern.PURE_DATETIME_PATTERN); reconcileDetail.setOrderTime(time); } @@ -165,6 +174,6 @@ public class UnionPayReconcileService { */ private void save(List billDetails, Long recordOrderId){ billDetails.forEach(o->o.setRecordOrderId(recordOrderId)); + unionReconcileBillDetailManager.saveAll(billDetails); } - } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileOrder.java index 8de3a057..146631d9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/entity/ReconcileOrder.java @@ -7,6 +7,8 @@ import cn.bootx.platform.daxpay.service.dto.order.reconcile.ReconcileOrderDto; import cn.bootx.table.modify.annotation.DbColumn; import cn.bootx.table.modify.annotation.DbTable; import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -53,6 +55,7 @@ public class ReconcileOrder extends MpCreateEntity implements EntityBaseFunction /** 错误信息 */ @DbColumn(comment = "错误信息") + @TableField(updateStrategy = FieldStrategy.ALWAYS) private String errorMsg; @Override diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/ReconcileOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/ReconcileOrderService.java index c4b02d31..fe428c65 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/ReconcileOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/reconcile/service/ReconcileOrderService.java @@ -21,7 +21,6 @@ import java.util.Optional; @RequiredArgsConstructor public class ReconcileOrderService { private final ReconcileOrderManager reconcileOrderManager; - private final Sequence sequence; /** * 更新, 开启一个新事务进行更新 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java index 83e76da2..15c23859 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java @@ -89,13 +89,17 @@ public class ReconcileService { * 下载对账单并进行保存 */ public void downAndSave(ReconcileOrder reconcileOrder) { + // 将对账订单写入到上下文中 + PaymentContextLocal.get().getReconcileInfo().setReconcileOrder(reconcileOrder); + // 构建对账策略 AbsReconcileStrategy reconcileStrategy = ReconcileStrategyFactory.create(reconcileOrder.getChannel()); reconcileStrategy.setRecordOrder(reconcileOrder); reconcileStrategy.doBeforeHandler(); try { reconcileStrategy.downAndSave(); - reconcileOrder.setDown(true); + reconcileOrder.setDown(true) + .setErrorMsg(null); reconcileOrderService.update(reconcileOrder); } catch (Exception e) { log.error("下载对账单异常", e); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java index 59755524..964561da 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java @@ -11,11 +11,10 @@ import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfig import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayReconcileService; import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralReconcileRecord; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; +import cn.bootx.platform.daxpay.service.handler.sequence.DaxPaySequenceHandler; import cn.hutool.core.date.DatePattern; -import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -43,9 +42,7 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy { private final AliPayConfigService configService; - @Getter - @Qualifier("alipayReconcileSequence") - private final Sequence sequence; + private final DaxPaySequenceHandler daxPaySequenceHandler; private AliPayConfig config; @@ -67,8 +64,10 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy { */ @Override public String generateSequence(LocalDate date) { + String prefix = getChannel().getReconcilePrefix(); String dateStr = LocalDateTimeUtil.format(date, DatePattern.PURE_DATE_PATTERN); + Sequence sequence = daxPaySequenceHandler.alipayReconcileSequence(dateStr); String key = String.format("%02d", sequence.next()); return prefix + dateStr + key; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java index 7602bcdc..ce6015e2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java @@ -1,6 +1,5 @@ package cn.bootx.platform.daxpay.service.core.payment.reconcile.strategy; -import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.common.sequence.func.Sequence; import cn.bootx.platform.daxpay.code.PayChannelEnum; @@ -12,12 +11,12 @@ import cn.bootx.platform.daxpay.service.core.channel.union.service.UnionPayConfi import cn.bootx.platform.daxpay.service.core.channel.union.service.UnionPayReconcileService; import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralReconcileRecord; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; +import cn.bootx.platform.daxpay.service.handler.sequence.DaxPaySequenceHandler; import cn.bootx.platform.daxpay.service.sdk.union.api.UnionPayKit; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -46,8 +45,7 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { private final UnionPayRecordManager recordManager; - @Qualifier("unionPayReconcileSequence") - private final Sequence sequence; + private final DaxPaySequenceHandler daxPaySequenceHandler; private UnionPayKit unionPayKit; @@ -58,6 +56,7 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { public String generateSequence(LocalDate date) { String prefix = getChannel().getReconcilePrefix(); String dateStr = LocalDateTimeUtil.format(date, DatePattern.PURE_DATE_PATTERN); + Sequence sequence = daxPaySequenceHandler.unionPayReconcileSequence(dateStr); String key = String.format("%02d", sequence.next()); return prefix + dateStr + key; } @@ -82,7 +81,6 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { public void downAndSave() { Date date = DateUtil.date(this.getRecordOrder().getDate()); reconcileService.downAndSave(date, this.getRecordOrder().getId(), this.unionPayKit); - throw new BizException("123"); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java index 85bf0415..ca41c531 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java @@ -11,10 +11,10 @@ import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayCon import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WechatPayReconcileService; import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralReconcileRecord; import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; +import cn.bootx.platform.daxpay.service.handler.sequence.DaxPaySequenceHandler; import cn.hutool.core.date.DatePattern; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -42,8 +42,7 @@ public class WechatPayReconcileStrategy extends AbsReconcileStrategy { private final WeChatPayRecordManager recordManager; - @Qualifier("wechatReconcileSequence") - private final Sequence sequence; + private final DaxPaySequenceHandler daxPaySequenceHandler; private WeChatPayConfig config; @@ -67,6 +66,7 @@ public class WechatPayReconcileStrategy extends AbsReconcileStrategy { public String generateSequence(LocalDate date) { String prefix = getChannel().getReconcilePrefix(); String dateStr = LocalDateTimeUtil.format(date, DatePattern.PURE_DATE_PATTERN); + Sequence sequence = daxPaySequenceHandler.wechatReconcileSequence(dateStr); String key = String.format("%02d", sequence.next()); return prefix + dateStr + key; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/sequence/DaxPaySequenceConfiguration.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/sequence/DaxPaySequenceHandler.java similarity index 58% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/sequence/DaxPaySequenceConfiguration.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/sequence/DaxPaySequenceHandler.java index fa56036f..5b646337 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/sequence/DaxPaySequenceConfiguration.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/sequence/DaxPaySequenceHandler.java @@ -1,10 +1,8 @@ -package cn.bootx.platform.daxpay.service.configuration.sequence; +package cn.bootx.platform.daxpay.service.handler.sequence; import cn.bootx.platform.common.sequence.func.Sequence; -import cn.bootx.platform.common.sequence.range.SeqRangeManager; import cn.bootx.platform.common.sequence.util.SequenceUtil; import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -14,29 +12,26 @@ import org.springframework.context.annotation.Configuration; */ @Configuration @RequiredArgsConstructor -public class DaxPaySequenceConfiguration { +public class DaxPaySequenceHandler { /** * 支付宝对账单序列生成器 */ - @Bean - public Sequence alipayReconcileSequence(SeqRangeManager seqRangeManager) { - return SequenceUtil.create(1,1,1,"AlipayReconcileSequence"); + public Sequence alipayReconcileSequence(String date) { + return SequenceUtil.create(1,1,1,"AlipayReconcileSequence"+date); } /** * 微信对账单序列生成器 */ - @Bean - public Sequence wechatReconcileSequence(SeqRangeManager seqRangeManager) { - return SequenceUtil.create(1,1,1,"WechatReconcileSequence"); + public Sequence wechatReconcileSequence(String date) { + return SequenceUtil.create(1,1,1,"WechatReconcileSequence"+date); } /** * 云闪付对账单序列生成器 */ - @Bean - public Sequence unionPayReconcileSequence(SeqRangeManager seqRangeManager) { - return SequenceUtil.create(1,1,1,"UnionPayReconcileSequence"); + public Sequence unionPayReconcileSequence(String date) { + return SequenceUtil.create(1,1,1,"UnionPayReconcileSequence"+date); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java index e05ed74c..d3f97ddc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/union/api/UnionPayKit.java @@ -194,8 +194,6 @@ public class UnionPayKit extends UnionPayService { @Deprecated @Override public boolean verify(Map result) { - - return verify(new NoticeParams(result)); } -- Gitee From 591b34cc141794e74747783a01a322b8fed196d6 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 25 Mar 2024 22:48:52 +0800 Subject: [PATCH 14/45] =?UTF-8?q?feat=20=E4=BA=91=E9=97=AA=E4=BB=98?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=AF=B9=E8=B4=A6,=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E6=96=87=E4=BB=B6=E6=89=8B=E5=8A=A8=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 2 +- .../order/ReconcileOrderController.java | 8 +++ .../service/AliPayReconcileService.java | 36 +++++++++++-- .../service/UnionPayReconcileService.java | 24 +++++++-- .../service/WechatPayReconcileService.java | 51 +++++++++++++++++-- .../reconcile/service/ReconcileService.java | 42 ++++++++++++++- .../strategy/AlipayReconcileStrategy.java | 13 ++++- .../strategy/UnionPayReconcileStrategy.java | 13 ++++- .../strategy/WechatPayReconcileStrategy.java | 20 +++++--- .../service/func/AbsReconcileStrategy.java | 6 +++ 10 files changed, 192 insertions(+), 23 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 11958cec..50eba0b1 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -5,7 +5,7 @@ - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 - [x] 云闪付支持对账功能 - - [ ] 对账文件支持手动导入 +- [x] 对账文件支持手动导入 - [x] 结算台DEMO增加云闪付示例 - [x] 增加支付限额 - [x] 各通道(异步支付)支持单独的限额 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java index 17dc5417..6b46d592 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java @@ -19,6 +19,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; /** * 支付对账 @@ -49,6 +50,13 @@ public class ReconcileOrderController { return Res.ok(); } + @Operation(summary = "手动上传对账单文件") + @PostMapping("/upload") + public ResResult upload(Long id, MultipartFile file){ + reconcileService.upload(id,file); + return Res.ok(); + } + @Operation(summary = "手动触发对账单比对") @PostMapping("/compare") public ResResult compare(Long id){ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java index 9e1e860e..2def9d72 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayReconcileService.java @@ -55,11 +55,10 @@ public class AliPayReconcileService { * 下载对账单, 并进行解析进行保存 * * @param date 对账日期 yyyy-MM-dd 格式 - * @param recordOrderId 对账订单ID */ @SneakyThrows @Transactional(rollbackFor = Exception.class) - public void downAndSave(String date, Long recordOrderId){ + public void downAndSave(String date){ try { AlipayDataDataserviceBillDownloadurlQueryModel model = new AlipayDataDataserviceBillDownloadurlQueryModel(); @@ -93,7 +92,7 @@ public class AliPayReconcileService { } } // 保存原始对账记录 - this.save(billDetails, billTotals, recordOrderId); + this.save(billDetails, billTotals); // 将原始交易明细对账记录转换通用结构并保存到上下文中 this.convertAndSave(billDetails); @@ -103,13 +102,42 @@ public class AliPayReconcileService { throw new RuntimeException(e); } } + /** + * 上传对账单解析并保存 + */ + @SneakyThrows + public void upload(byte[] bytes) { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes),"GBK")); + List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); + List billDetails = this.parseDetail(strings); + // 保存原始对账记录 + this.saveBillDetail(billDetails); + // 将原始交易明细对账记录转换通用结构并保存到上下文中 + this.convertAndSave(billDetails); + } /** * 保存原始对账记录 */ - private void save(List billDetails, List billTotals, Long recordOrderId){ + private void save(List billDetails, List billTotals){ + this.saveBillDetail(billDetails); + this.saveBillTotal(billTotals); + } + + /** + * 保存原始对账明细记录 + */ + private void saveBillDetail(List billDetails){ + Long recordOrderId = PaymentContextLocal.get().getReconcileInfo().getReconcileOrder().getId(); billDetails.forEach(o->o.setRecordOrderId(recordOrderId)); reconcileBillDetailManager.saveAll(billDetails); + } + + /** + * 保存原始对账汇总记录 + */ + private void saveBillTotal(List billTotals){ + Long recordOrderId = PaymentContextLocal.get().getReconcileInfo().getReconcileOrder().getId(); billTotals.forEach(o->o.setRecordOrderId(recordOrderId)); reconcileBillTotalManager.saveAll(billTotals); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java index 013033dc..2bbbc5e4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPayReconcileService.java @@ -19,6 +19,7 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; import com.egzosn.pay.union.bean.SDKConstants; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; @@ -47,7 +48,7 @@ public class UnionPayReconcileService { /** * 下载对账单 */ - public void downAndSave(Date date, Long recordOrderId, UnionPayKit unionPayKit){ + public void downAndSave(Date date, UnionPayKit unionPayKit){ // 下载对账单 Map map = unionPayKit.downloadBill(date, RECONCILE_BILL_TYPE); String fileContent = map.get(FILE_CONTENT).toString(); @@ -81,7 +82,7 @@ public class UnionPayReconcileService { } } // 保存原始对账记录 - this.save(billDetails, recordOrderId); + this.save(billDetails); // 转换为通用对账记录对象 this.convertAndSave(billDetails); } catch (IOException e) { @@ -89,6 +90,21 @@ public class UnionPayReconcileService { } } + /** + * 解析上传的对账单 + */ + @SneakyThrows + public void upload(byte[] bytes){ + // 明细解析 + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes),"GBK")); + List strings = IoUtil.readLines(bufferedReader, new ArrayList<>()); + List billDetails = this.parseDetail(strings); + // 保存原始对账记录 + this.save(billDetails); + // 转换为通用对账记录对象 + this.convertAndSave(billDetails); + } + /** * 解析对账单明细 */ @@ -146,6 +162,7 @@ public class UnionPayReconcileService { // 默认为支付对账记录 ReconcileDetail reconcileDetail = new ReconcileDetail() + .setTitle("未知") .setRecordOrderId(billDetail.getRecordOrderId()) .setOrderId(billDetail.getOrderId()) .setType(ReconcileTradeEnum.PAY.getCode()) @@ -172,7 +189,8 @@ public class UnionPayReconcileService { /** * 保存原始对账记录 */ - private void save(List billDetails, Long recordOrderId){ + private void save(List billDetails){ + Long recordOrderId = PaymentContextLocal.get().getReconcileInfo().getReconcileOrder().getId(); billDetails.forEach(o->o.setRecordOrderId(recordOrderId)); unionReconcileBillDetailManager.saveAll(billDetails); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayReconcileService.java index 913cd341..5dc011fa 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayReconcileService.java @@ -13,8 +13,10 @@ import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WxReconcileBi import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WxReconcileBillTotal; import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WxReconcileFundFlowDetail; import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileDetail; +import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrder; import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DatePattern; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.csv.CsvReader; import cn.hutool.core.text.csv.CsvUtil; import cn.hutool.core.util.StrUtil; @@ -24,11 +26,15 @@ import com.ijpay.wxpay.WxPayApi; import com.ijpay.wxpay.model.DownloadBillModel; import com.ijpay.wxpay.model.DownloadFundFlowModel; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.BufferedReader; import java.io.ByteArrayInputStream; +import java.io.InputStreamReader; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -56,8 +62,8 @@ public class WechatPayReconcileService{ * @param date 对账日期 yyyyMMdd 格式 */ @Transactional(rollbackFor = Exception.class) - public void downAndSave(String date, Long recordOrderId, WeChatPayConfig config) { - this.downBill(date, recordOrderId, config); + public void downAndSave(String date, WeChatPayConfig config) { + this.downBill(date, config); // 资金对账单先不启用 // this.downFundFlow(date, recordOrderId, config); } @@ -66,9 +72,8 @@ public class WechatPayReconcileService{ * 下载交易账单 * * @param date 对账日期 yyyyMMdd 格式 - * @param recordOrderId 对账订单ID */ - public void downBill(String date, Long recordOrderId, WeChatPayConfig config){ + public void downBill(String date, WeChatPayConfig config){ // 下载交易账单 Map params = DownloadBillModel.builder() .mch_id(config.getWxMchId()) @@ -92,6 +97,9 @@ public class WechatPayReconcileService{ List billDetails = reader.read(billDetail, WxReconcileBillDetail.class).stream() .filter(o->Objects.equals(o.getAppId(), config.getWxAppId())) .collect(Collectors.toList()); + + Long recordOrderId = PaymentContextLocal.get().getReconcileInfo().getReconcileOrder().getId(); + billDetails.forEach(o->o.setRecordOrderId(recordOrderId)); reconcileBillDetailManager.saveAll(billDetails); @@ -103,7 +111,42 @@ public class WechatPayReconcileService{ // 将原始交易明细对账记录转换通用结构并保存到上下文中 this.convertAndSave(billDetails); + } + + /** + * 上传对账单 + */ + @SneakyThrows + public void uploadBill(byte[] bytes, WeChatPayConfig config){ + BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes), "GBK")); + String result = IoUtil.read(reader); + // 过滤特殊字符 + result = result.replaceAll("`", "").replaceAll("\uFEFF", ""); + CsvReader csvRows = CsvUtil.getReader(); + + // 对账订单 + ReconcileOrder reconcileOrder = PaymentContextLocal.get() + .getReconcileInfo() + .getReconcileOrder(); + // 获取交易记录并保存 同时过滤出当前应用的交易记录 + String billDetail = StrUtil.subBefore(result, "总交易单数", false); + List billDetails = csvRows.read(billDetail, WxReconcileBillDetail.class).stream() + // 只读取当前商户的订单 + .filter(o->Objects.equals(o.getAppId(), config.getWxAppId())) + // 只读取对账日的记录 + .filter(o->{ + String transactionTime = o.getTransactionTime(); + LocalDateTime time = LocalDateTimeUtil.parse(transactionTime, DatePattern.NORM_DATETIME_PATTERN); + return Objects.equals(reconcileOrder.getDate(), LocalDate.from(time)); + }) + .collect(Collectors.toList()); + + billDetails.forEach(o->o.setRecordOrderId(reconcileOrder.getId())); + reconcileBillDetailManager.saveAll(billDetails); + + // 将原始交易明细对账记录转换通用结构并保存到上下文中 + this.convertAndSave(billDetails); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java index 15c23859..9de4eb56 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java @@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; import java.util.ArrayList; @@ -85,13 +86,47 @@ public class ReconcileService { this.downAndSave(reconcileOrder); } + /** + * 手动传输对账单 + * @param id 对账单ID + * @param file 文件 + */ + public void upload(Long id, MultipartFile file) { + ReconcileOrder reconcileOrder = reconcileOrderService.findById(id) + .orElseThrow(() -> new DataNotExistException("未找到对账订单")); + // 将对账订单写入到上下文中 + PaymentContextLocal.get().getReconcileInfo().setReconcileOrder(reconcileOrder); + AbsReconcileStrategy reconcileStrategy = ReconcileStrategyFactory.create(reconcileOrder.getChannel()); + reconcileStrategy.setRecordOrder(reconcileOrder); + reconcileStrategy.doBeforeHandler(); + try { + reconcileStrategy.upload(file); + reconcileOrder.setDown(true) + .setErrorMsg(null); + reconcileOrderService.update(reconcileOrder); + } catch (Exception e) { + log.error("上传对账单异常", e); + reconcileOrder.setErrorMsg("原因: " + e.getMessage()); + reconcileOrderService.update(reconcileOrder); + throw new RuntimeException(e); + } + // 保存转换后的通用结构对账单 + List reconcileDetails = PaymentContextLocal.get() + .getReconcileInfo() + .getReconcileDetails(); + reconcileDetailManager.saveAll(reconcileDetails); + } + /** * 下载对账单并进行保存 */ public void downAndSave(ReconcileOrder reconcileOrder) { + // 如果对账单已经存在 + if (reconcileOrder.isDown()){ + throw new PayFailureException("对账单文件已经下载或上传"); + } // 将对账订单写入到上下文中 PaymentContextLocal.get().getReconcileInfo().setReconcileOrder(reconcileOrder); - // 构建对账策略 AbsReconcileStrategy reconcileStrategy = ReconcileStrategyFactory.create(reconcileOrder.getChannel()); reconcileStrategy.setRecordOrder(reconcileOrder); @@ -131,6 +166,10 @@ public class ReconcileService { if (!reconcileOrder.isDown()){ throw new PayFailureException("请先下载对账单"); } + // 是否对比完成 + if (reconcileOrder.isCompare()){ + throw new PayFailureException("对账单比对已经完成"); + } // 查询对账单 List reconcileDetails = reconcileDetailManager.findAllByOrderId(reconcileOrder.getId()); @@ -269,4 +308,5 @@ public class ReconcileService { } return diffs; } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java index 964561da..387047c9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/AlipayReconcileStrategy.java @@ -14,9 +14,11 @@ import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; import cn.bootx.platform.daxpay.service.handler.sequence.DaxPaySequenceHandler; import cn.hutool.core.date.DatePattern; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; import java.time.LocalDateTime; @@ -81,13 +83,22 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy { configService.initConfig(this.config); } + /** + * 上传对账单解析并保存 + */ + @SneakyThrows + @Override + public void upload(MultipartFile file) { + reconcileService.upload(file.getBytes()); + } + /** * 下载和保存对账单 */ @Override public void downAndSave() { String date = LocalDateTimeUtil.format(this.getRecordOrder().getDate(), DatePattern.NORM_DATE_PATTERN); - reconcileService.downAndSave(date,this.getRecordOrder().getId()); + reconcileService.downAndSave(date); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java index ce6015e2..69d06994 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/UnionPayReconcileStrategy.java @@ -16,9 +16,11 @@ import cn.bootx.platform.daxpay.service.sdk.union.api.UnionPayKit; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; import java.time.LocalDateTime; @@ -74,13 +76,22 @@ public class UnionPayReconcileStrategy extends AbsReconcileStrategy { this.unionPayKit = configService.initPayService(config); } + /** + * 上传对账单解析并保存 + */ + @SneakyThrows + @Override + public void upload(MultipartFile file) { + reconcileService.upload(file.getBytes()); + } + /** * 下载对账单到本地进行保存 */ @Override public void downAndSave() { Date date = DateUtil.date(this.getRecordOrder().getDate()); - reconcileService.downAndSave(date, this.getRecordOrder().getId(), this.unionPayKit); + reconcileService.downAndSave(date, this.unionPayKit); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java index ca41c531..354cd1e2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/strategy/WechatPayReconcileStrategy.java @@ -14,9 +14,11 @@ import cn.bootx.platform.daxpay.service.func.AbsReconcileStrategy; import cn.bootx.platform.daxpay.service.handler.sequence.DaxPaySequenceHandler; import cn.hutool.core.date.DatePattern; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; import java.time.LocalDateTime; @@ -80,20 +82,22 @@ public class WechatPayReconcileStrategy extends AbsReconcileStrategy { } /** - * 下载对账单 + * 上传对账单解析并保存 */ + @SneakyThrows @Override - public void downAndSave() { - String format = LocalDateTimeUtil.format(this.getRecordOrder().getDate(), DatePattern.PURE_DATE_PATTERN); - reconcileService.downAndSave(format,this.getRecordOrder().getId(), this.config); + public void upload(MultipartFile file) { + reconcileService.uploadBill(file.getBytes(),this.config); } /** - * 比对生成对账差异单 - * 1. 远程有, 本地无 补单(追加回订单/记录差异表) - * 2. 远程无, 本地有 记录差错表 - * 3. 远程有, 本地有, 但状态不一致 记录差错表 + * 下载对账单 */ + @Override + public void downAndSave() { + String format = LocalDateTimeUtil.format(this.getRecordOrder().getDate(), DatePattern.PURE_DATE_PATTERN); + reconcileService.downAndSave(format, this.config); + } /** * 获取通用对账对象, 将流水记录转换为对账对象 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java index 9c0e6c31..735bd3e3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsReconcileStrategy.java @@ -5,6 +5,7 @@ import cn.bootx.platform.daxpay.service.core.order.reconcile.entity.ReconcileOrd import cn.bootx.platform.daxpay.service.core.payment.reconcile.domain.GeneralReconcileRecord; import lombok.Getter; import lombok.Setter; +import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; import java.util.List; @@ -36,6 +37,11 @@ public abstract class AbsReconcileStrategy implements PayStrategy { public void doBeforeHandler() { } + /** + * 上传对账单解析并保存 + */ + public abstract void upload(MultipartFile file); + /** * 下载对账单到本地进行保存 */ -- Gitee From 8c74eb7fee3851eea1f5e3c97f76caf1d9cd4e83 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 26 Mar 2024 12:34:12 +0800 Subject: [PATCH 15/45] =?UTF-8?q?build=20=E5=8D=87=E7=BA=A7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- ...ay.backup.sql => 2.0.0.dax-pay.backup.sql} | 0 ...ay.backup.sql => 2.0.1.dax-pay.backup.sql} | 0 ...ay.backup.sql => 2.0.2.dax-pay.backup.sql} | 0 _config/sql/2.0.3/2.0.3.dax-pay.backup.sql | 3839 +++++++++++++++++ _config/sql/2.0.4/2.0.4.update.data.sql | 81 + _config/sql/2.0.4/2.0.4.update.table.sql | 44 + _config/sql/dax-pay.sql | 100 +- _doc/ChangeLog.md | 14 +- daxpay-single-demo/pom.xml | 4 +- daxpay-single-sdk/pom.xml | 2 +- daxpay-single/daxpay-single-admin/pom.xml | 2 +- daxpay-single/daxpay-single-core/pom.xml | 2 +- daxpay-single/daxpay-single-gateway/pom.xml | 2 +- daxpay-single/daxpay-single-service/pom.xml | 2 +- daxpay-single/daxpay-single-start/pom.xml | 2 +- .../src/main/resources/application-dev.yml | 3 +- .../src/main/resources/application-prod.yml | 2 +- daxpay-single/pom.xml | 2 +- pom.xml | 4 +- 20 files changed, 4082 insertions(+), 25 deletions(-) rename _config/sql/2.0.0/{dax-pay.backup.sql => 2.0.0.dax-pay.backup.sql} (100%) rename _config/sql/2.0.1/{dax-pay.backup.sql => 2.0.1.dax-pay.backup.sql} (100%) rename _config/sql/2.0.2/{dax-pay.backup.sql => 2.0.2.dax-pay.backup.sql} (100%) create mode 100644 _config/sql/2.0.3/2.0.3.dax-pay.backup.sql create mode 100644 _config/sql/2.0.4/2.0.4.update.data.sql create mode 100644 _config/sql/2.0.4/2.0.4.update.table.sql diff --git a/README.md b/README.md index af02d833..194d3dd3 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

star - Build Status + Build Status Build Status Build Status Downloads diff --git a/_config/sql/2.0.0/dax-pay.backup.sql b/_config/sql/2.0.0/2.0.0.dax-pay.backup.sql similarity index 100% rename from _config/sql/2.0.0/dax-pay.backup.sql rename to _config/sql/2.0.0/2.0.0.dax-pay.backup.sql diff --git a/_config/sql/2.0.1/dax-pay.backup.sql b/_config/sql/2.0.1/2.0.1.dax-pay.backup.sql similarity index 100% rename from _config/sql/2.0.1/dax-pay.backup.sql rename to _config/sql/2.0.1/2.0.1.dax-pay.backup.sql diff --git a/_config/sql/2.0.2/dax-pay.backup.sql b/_config/sql/2.0.2/2.0.2.dax-pay.backup.sql similarity index 100% rename from _config/sql/2.0.2/dax-pay.backup.sql rename to _config/sql/2.0.2/2.0.2.dax-pay.backup.sql diff --git a/_config/sql/2.0.3/2.0.3.dax-pay.backup.sql b/_config/sql/2.0.3/2.0.3.dax-pay.backup.sql new file mode 100644 index 00000000..d9ea503a --- /dev/null +++ b/_config/sql/2.0.3/2.0.3.dax-pay.backup.sql @@ -0,0 +1,3839 @@ +/* + Navicat Premium Data Transfer + + Source Server Type : MySQL + Source Server Version : 50743 + + Target Server Type : MySQL + Target Server Version : 50743 + File Encoding : 65001 + + Date: 14/03/2024 18:59:35 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for base_area +-- ---------------------------- +DROP TABLE IF EXISTS `base_area`; +CREATE TABLE `base_area` ( + `code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '区域名称', + `city_code` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '城市编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_city_code`(`city_code`) USING BTREE COMMENT '城市' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '县区表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_area +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_china_word +-- ---------------------------- +DROP TABLE IF EXISTS `base_china_word`; +CREATE TABLE `base_china_word` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `white` bit(1) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_china_word +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_city +-- ---------------------------- +DROP TABLE IF EXISTS `base_city`; +CREATE TABLE `base_city` ( + `code` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '城市编码', + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '城市名称', + `province_code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '省份编码', + PRIMARY KEY (`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '城市表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_city +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_data_result_sql +-- ---------------------------- +DROP TABLE IF EXISTS `base_data_result_sql`; +CREATE TABLE `base_data_result_sql` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `database_id` bigint(20) NULL DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `is_list` bit(1) NULL DEFAULT NULL, + `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_data_result_sql +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_dict +-- ---------------------------- +DROP TABLE IF EXISTS `base_dict`; +CREATE TABLE `base_dict` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dict +-- ---------------------------- +INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6); +INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4); +INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2); +INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2); +INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2); +INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2); +INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1); +INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3); +INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2); +INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1); +INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0); +INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0); +INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0); +INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据权限类型', b'1', '系统属性', '数据权限类型', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2023-11-28 23:14:24', 0, 4); +INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0); +INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1); +INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1); +INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0); +INSERT INTO `base_dict` VALUES (1744996611615039488, 'AsyncPayChannel', '异步支付通道', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:16:27', 1399985191002447872, '2024-01-10 16:16:27', 0, 0); +INSERT INTO `base_dict` VALUES (1744996845355212800, 'PayChannel', '支付通道', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:17:23', 1399985191002447872, '2024-01-10 16:17:23', 0, 0); +INSERT INTO `base_dict` VALUES (1744996913667842048, 'PayStatus', '支付状态', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:17:39', 1399985191002447872, '2024-01-10 16:17:39', 0, 0); +INSERT INTO `base_dict` VALUES (1745086859116224512, 'PayWay', '支付方式', b'1', '支付', '', 1399985191002447872, '2024-01-10 22:15:04', 1399985191002447872, '2024-01-10 22:15:04', 0, 0); +INSERT INTO `base_dict` VALUES (1745109350333173760, 'PayCallbackStatus', '支付回调处理状态', b'1', '支付', '', 1399985191002447872, '2024-01-10 23:44:26', 1399985191002447872, '2024-01-10 23:44:26', 0, 0); +INSERT INTO `base_dict` VALUES (1745128986382667776, 'PayRepairSource', '支付修复来源', b'1', '支付', '', 1399985191002447872, '2024-01-11 01:02:28', 1399985191002447872, '2024-01-11 01:02:28', 0, 0); +INSERT INTO `base_dict` VALUES (1745134438772346880, 'PayRepairWay', '支付修复方式', b'1', '支付', '', 1399985191002447872, '2024-01-11 01:24:08', 1399985191002447872, '2024-01-11 01:24:08', 0, 0); +INSERT INTO `base_dict` VALUES (1745748188122554368, 'RefundStatus', '退款状态', b'1', '支付', '', 1399985191002447872, '2024-01-12 18:02:57', 1399985191002447872, '2024-02-09 21:22:52', 0, 1); +INSERT INTO `base_dict` VALUES (1746208645341917184, 'PaySyncStatus', '支付同步结果', b'1', '支付', '', 1399985191002447872, '2024-01-14 00:32:39', 1399985191002447872, '2024-01-14 00:32:39', 0, 0); +INSERT INTO `base_dict` VALUES (1749612665392541696, 'ReconcileTrade', '支付对账交易类型', b'1', '支付', '', 1399985191002447872, '2024-01-23 09:59:00', 1399985191002447872, '2024-03-01 23:31:32', 0, 1); +INSERT INTO `base_dict` VALUES (1751603996496453632, 'PaymentType', '支付系统行为类型', b'1', '支付', '支付系统中常见的操作类型, 如支付/退款/转账等', 1399985191002447872, '2024-01-28 21:51:51', 1399985191002447872, '2024-01-28 21:51:51', 0, 0); +INSERT INTO `base_dict` VALUES (1751613032260370432, 'PayCallbackType', '回调类型', b'1', '支付', '', 1399985191002447872, '2024-01-28 22:27:45', 1399985191002447872, '2024-01-28 22:27:45', 0, 0); +INSERT INTO `base_dict` VALUES (1752560153120428032, 'RefundSyncStatus', '退款同步状态', b'1', '支付', '', 1399985191002447872, '2024-01-31 13:11:16', 1399985191002447872, '2024-01-31 13:11:16', 0, 0); +INSERT INTO `base_dict` VALUES (1753047382185091072, 'RefundRepairWay', '退款修复方式', b'1', '支付', '', 1399985191002447872, '2024-02-01 21:27:21', 1399985191002447872, '2024-02-01 21:27:21', 0, 0); +INSERT INTO `base_dict` VALUES (1758881354618220544, 'WalletStatus', '钱包状态', b'1', '支付', '', 1399985191002447872, '2024-02-17 23:49:28', 1399985191002447872, '2024-02-17 23:49:28', 0, 0); +INSERT INTO `base_dict` VALUES (1759189874194481152, 'VoucherStatus', '储值卡状态', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:15:25', 1399985191002447872, '2024-02-18 20:15:25', 0, 0); +INSERT INTO `base_dict` VALUES (1759190066511708160, 'WalletRecordType', '钱包记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:16:11', 1399985191002447872, '2024-02-18 20:16:11', 0, 0); +INSERT INTO `base_dict` VALUES (1759190427897135104, 'VoucherRecordType', '储值卡记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:17:37', 1399985191002447872, '2024-02-18 20:17:37', 0, 0); +INSERT INTO `base_dict` VALUES (1759190780252225536, 'CashRecordType', '现金记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:19:01', 1399985191002447872, '2024-02-19 22:07:09', 0, 1); +INSERT INTO `base_dict` VALUES (1761434095349624832, 'ClientNoticeType', '客户消息通知类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 00:53:09', 1399985191002447872, '2024-02-25 00:53:09', 0, 0); +INSERT INTO `base_dict` VALUES (1761434264858226688, 'ClientNoticeSendType', '客户消息通知发送类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 00:53:49', 1399985191002447872, '2024-02-25 00:53:49', 0, 0); +INSERT INTO `base_dict` VALUES (1761581634023583744, 'AlipayRecordType', '支付宝流水记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 10:39:25', 1399985191002447872, '2024-02-25 10:39:25', 0, 0); +INSERT INTO `base_dict` VALUES (1761588314480300032, 'WechatPayRecordType', '微信支付流水记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 11:05:58', 1399985191002447872, '2024-02-25 11:05:58', 0, 0); +INSERT INTO `base_dict` VALUES (1763588034467713024, 'ReconcileDiffType', '对账差异类型', b'1', '支付', '', 1399985191002447872, '2024-03-01 23:32:08', 1399985191002447872, '2024-03-01 23:32:08', 0, 0); +INSERT INTO `base_dict` VALUES (1766713545981153280, 'UnionPaySignType', '云闪付签名类型', b'1', '支付', '', 1399985191002447872, '2024-03-10 14:31:48', 1399985191002447872, '2024-03-10 14:31:48', 0, 0); +INSERT INTO `base_dict` VALUES (1768206399071809536, 'UnionPayRecordType', '云闪付流水类型', b'1', '支付', '', 1399985191002447872, '2024-03-14 17:23:52', 1399985191002447872, '2024-03-14 17:23:52', 0, 0); + +-- ---------------------------- +-- Table structure for base_dict_item +-- ---------------------------- +DROP TABLE IF EXISTS `base_dict_item`; +CREATE TABLE `base_dict_item` ( + `id` bigint(20) NOT NULL, + `dict_id` bigint(20) NOT NULL COMMENT '字典id', + `dict_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典code', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典项code', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典项名称', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `sort_no` double(8, 2) NOT NULL COMMENT '排序', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_dictionary_id`(`dict_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dict_item +-- ---------------------------- +INSERT INTO `base_dict_item` VALUES (1422931375807242241, 1422929378374828033, 'Sex', '1', '男', b'1', 0.00, '男性', 0, '2021-08-04 22:44:11', 0, '2021-08-04 22:44:11', 0, 2); +INSERT INTO `base_dict_item` VALUES (1425729455402401794, 1422929378374828033, 'Sex', '2', '女', b'1', 0.00, '女性', 0, '2021-08-12 16:02:46', 0, '2021-08-12 16:02:46', 0, 1); +INSERT INTO `base_dict_item` VALUES (1425744258544136194, 1425744045414772737, 'MenuType', '0', '顶级菜单', b'1', 0.00, '顶级菜单', 0, '2021-08-12 17:01:35', 0, '2021-08-12 17:01:35', 0, 0); +INSERT INTO `base_dict_item` VALUES (1425744436592340993, 1425744045414772737, 'MenuType', '1', '子菜单', b'1', 0.00, '子菜单', 0, '2021-08-12 17:02:17', 0, '2021-08-12 17:02:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1425744470582980610, 1425744045414772737, 'MenuType', '2', '按钮权限', b'1', 0.00, '按钮权限', 0, '2021-08-12 17:02:26', 0, '2021-08-12 17:02:26', 0, 0); +INSERT INTO `base_dict_item` VALUES (1430094707250413568, 1422929378374828033, 'Sex', '0', '未知', b'1', 0.00, '不确定性别', 1399985191002447872, '2021-08-24 17:08:43', 1399985191002447872, '2021-08-24 17:08:43', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', 'normal', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2023-11-25 15:32:04', 0, 1); +INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', 'lock', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2023-11-25 15:32:14', 0, 2); +INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', 'ban', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2023-11-25 15:32:20', 0, 1); +INSERT INTO `base_dict_item` VALUES (1435838374749626368, 1435838066191458304, 'LogBusinessType', 'other', '其它', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:00', 1399985191002447872, '2021-09-09 13:32:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838414436130816, 1435838066191458304, 'LogBusinessType', 'insert', '新增', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:09', 1399985191002447872, '2021-09-09 13:32:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838467624099840, 1435838066191458304, 'LogBusinessType', 'update', '修改', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:22', 1399985191002447872, '2021-09-09 13:32:22', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838502755590144, 1435838066191458304, 'LogBusinessType', 'delete', '删除', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:30', 1399985191002447872, '2021-09-09 13:32:30', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838546934194176, 1435838066191458304, 'LogBusinessType', 'grant', '授权', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:41', 1399985191002447872, '2021-09-09 13:32:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838605537009664, 1435838066191458304, 'LogBusinessType', 'export', '导出', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:55', 1399985191002447872, '2021-09-09 13:32:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838705457913856, 1435838066191458304, 'LogBusinessType', 'import', '导入', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:19', 1399985191002447872, '2021-09-09 13:33:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838745861644288, 1435838066191458304, 'LogBusinessType', 'force', '强退', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:28', 1399985191002447872, '2021-09-09 13:33:28', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838786273763328, 1435838066191458304, 'LogBusinessType', 'clean', '清空数据', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:38', 1399985191002447872, '2021-09-09 13:33:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438079113630003200, 1438078864509317120, 'MailSecurityCode', '1', '普通方式', b'1', 0.00, 'SECURITY_TYPE_PLAIN', 1399985191002447872, '2021-09-15 17:55:54', 1399985191002447872, '2021-09-15 17:55:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438080323061755904, 1438078864509317120, 'MailSecurityCode', '2', 'TLS方式', b'1', 0.00, 'SECURITY_TYPE_TLS', 1399985191002447872, '2021-09-15 18:00:42', 1399985191002447872, '2021-09-15 18:00:42', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438080372231581696, 1438078864509317120, 'MailSecurityCode', '3', 'SSL方式', b'1', 0.00, 'SECURITY_TYPE_SSL', 1399985191002447872, '2021-09-15 18:00:54', 1399985191002447872, '2021-09-15 18:00:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439961603914047488, 1439961232651034624, 'MessageTemplateCode', '5', '微信', b'1', -10.00, 'WECHAT', 1399985191002447872, '2021-09-20 22:36:14', 1399985191002447872, '2021-09-20 22:36:14', 0, 1); +INSERT INTO `base_dict_item` VALUES (1439961704321490944, 1439961232651034624, 'MessageTemplateCode', '4', 'Email', b'1', 0.00, 'EMAIL', 1399985191002447872, '2021-09-20 22:36:38', 1399985191002447872, '2021-09-20 22:36:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962132744478720, 1439961232651034624, 'MessageTemplateCode', '3', '短信', b'1', 0.00, 'SMS', 1399985191002447872, '2021-09-20 22:38:20', 1399985191002447872, '2021-09-20 22:38:20', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962205578567680, 1439961232651034624, 'MessageTemplateCode', '2', '钉钉机器人', b'1', 0.00, 'DING_TALK_ROBOT', 1399985191002447872, '2021-09-20 22:38:38', 1399985191002447872, '2021-09-20 22:38:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962267511660544, 1439961232651034624, 'MessageTemplateCode', '1', '钉钉', b'1', 0.00, 'DING_TALK', 1399985191002447872, '2021-09-20 22:38:52', 1399985191002447872, '2021-09-20 22:38:52', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452836696873984000, 1452836604783845376, 'SocialType', 'WeChat', '微信', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:17:16', 1399985191002447872, '2021-10-26 11:17:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452837435482529792, 1452836604783845376, 'SocialType', 'QQ', 'QQ', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:20:12', 1399985191002447872, '2021-10-26 11:20:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452837523030237184, 1452836604783845376, 'SocialType', 'DingTalk', '钉钉', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:20:33', 1399985191002447872, '2021-10-26 11:20:33', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452844537911406592, 1452843488735621120, 'ParamType', '1', '系统参数', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:48:25', 1399985191002447872, '2021-10-26 11:48:25', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452844565031776256, 1452843488735621120, 'ParamType', '2', '用户参数', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:48:32', 1399985191002447872, '2021-10-26 11:48:32', 0, 2); +INSERT INTO `base_dict_item` VALUES (1496026946344005632, 1496024933900169216, 'Political', '1', '中共党员', b'1', 1.00, '', 1399985191002447872, '2022-02-22 15:39:54', 1399985191002447872, '2022-02-22 15:39:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027004560945152, 1496024933900169216, 'Political', '2', '中共预备党员', b'1', 2.00, '', 1399985191002447872, '2022-02-22 15:40:07', 1399985191002447872, '2022-02-22 15:40:07', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027039264616448, 1496024933900169216, 'Political', '3', '共青团员', b'1', 3.00, '', 1399985191002447872, '2022-02-22 15:40:16', 1399985191002447872, '2022-02-22 15:40:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027077550223360, 1496024933900169216, 'Political', '4', '民革党员', b'1', 4.00, '', 1399985191002447872, '2022-02-22 15:40:25', 1399985191002447872, '2022-02-22 15:40:25', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027123461074944, 1496024933900169216, 'Political', '5', '民盟盟员', b'1', 5.00, '', 1399985191002447872, '2022-02-22 15:40:36', 1399985191002447872, '2022-02-22 15:40:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027197566038016, 1496024933900169216, 'Political', '6', '民建会员', b'1', 6.00, '', 1399985191002447872, '2022-02-22 15:40:53', 1399985191002447872, '2022-02-22 15:40:53', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027234803068928, 1496024933900169216, 'Political', '7', '民进会员', b'1', 7.00, '', 1399985191002447872, '2022-02-22 15:41:02', 1399985191002447872, '2022-02-22 15:41:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027272941875200, 1496024933900169216, 'Political', '8', '农工党党员', b'1', 8.00, '', 1399985191002447872, '2022-02-22 15:41:11', 1399985191002447872, '2022-02-22 15:41:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027306634719232, 1496024933900169216, 'Political', '9', '致公党党员', b'1', 9.00, '', 1399985191002447872, '2022-02-22 15:41:19', 1399985191002447872, '2022-02-22 15:41:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027369796743168, 1496024933900169216, 'Political', '10', '九三学社社员', b'1', 10.00, '', 1399985191002447872, '2022-02-22 15:41:34', 1399985191002447872, '2022-02-22 15:41:35', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027408141070336, 1496024933900169216, 'Political', '11', '台盟盟员', b'1', 11.00, '', 1399985191002447872, '2022-02-22 15:41:44', 1399985191002447872, '2022-02-22 15:41:44', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027456849522688, 1496024933900169216, 'Political', '12', '无党派人士', b'1', 12.00, '', 1399985191002447872, '2022-02-22 15:41:55', 1399985191002447872, '2022-02-22 15:41:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027516639326208, 1496024933900169216, 'Political', '13', '群众', b'1', 13.00, '', 1399985191002447872, '2022-02-22 15:42:09', 1399985191002447872, '2022-02-22 15:42:10', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003368762032128, 1561003021674987520, 'SiteMessageReceive', 'user', '指定用户', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:00', 1399985191002447872, '2022-08-20 22:53:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003399778910208, 1561003021674987520, 'SiteMessageReceive', 'all', '全部用户', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:07', 1399985191002447872, '2022-08-20 22:53:24', 0, 1); +INSERT INTO `base_dict_item` VALUES (1561003539772194816, 1561003189111603200, 'SiteMessageState', 'sent', '已发送', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:41', 1399985191002447872, '2022-08-20 22:53:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003575608328192, 1561003189111603200, 'SiteMessageState', 'cancel', '撤销', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:49', 1399985191002447872, '2022-08-20 22:53:49', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561245469535080448, 1561003189111603200, 'SiteMessageState', 'draft', '草稿', b'1', 0.00, '', 1399985191002447872, '2022-08-21 14:55:01', 1399985191002447872, '2022-08-21 14:55:01', 0, 0); +INSERT INTO `base_dict_item` VALUES (1573665422392098816, 1439961232651034624, 'MessageTemplateCode', '0', '站内信', b'1', -11.00, 'SITE', 1399985191002447872, '2022-09-24 21:27:29', 1399985191002447872, '2022-09-24 21:27:39', 0, 1); +INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', 'self_dept_sub', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1399985191002447872, '2023-11-28 23:16:02', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', 'self_dept', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1399985191002447872, '2023-11-28 23:15:52', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', 'all', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1399985191002447872, '2023-11-25 22:51:28', 0, 1); +INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', 'dept_and_user', '自定义部门和用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1399985191002447872, '2023-11-29 15:25:01', 0, 3); +INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', 'dept', '自定义部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1399985191002447872, '2023-11-29 15:24:47', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', 'user', '指定用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1399985191002447872, '2023-11-29 15:25:16', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', 'self', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1399985191002447872, '2023-11-25 22:50:41', 0, 1); +INSERT INTO `base_dict_item` VALUES (1633403429028536320, 1633393287952257024, 'DatabaseType', 'mysql', 'MySQL', b'1', 1.00, '', 1414143554414059520, '2023-03-08 17:44:59', 1414143554414059520, '2023-03-08 17:44:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1633403459470794752, 1633393287952257024, 'DatabaseType', 'oracle', 'Oracle', b'1', 2.00, '', 1414143554414059520, '2023-03-08 17:45:07', 1414143554414059520, '2023-03-08 17:45:07', 0, 0); +INSERT INTO `base_dict_item` VALUES (1633403498695925760, 1633393287952257024, 'DatabaseType', 'mssql', 'SQLServer', b'1', 3.00, '', 1414143554414059520, '2023-03-08 17:45:16', 1414143554414059520, '2023-03-08 17:45:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742732891111424, 1688742690398617600, 'SmsChannel', 'alibaba', '阿里云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:38', 1414143554414059520, '2023-08-08 10:43:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742768479780864, 1688742690398617600, 'SmsChannel', 'huawei', '华为云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:46', 1414143554414059520, '2023-08-08 10:43:46', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742808027873280, 1688742690398617600, 'SmsChannel', 'yunpian', '云片', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:55', 1414143554414059520, '2023-08-08 10:43:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742840626003968, 1688742690398617600, 'SmsChannel', 'tencent', '腾讯云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:03', 1414143554414059520, '2023-08-08 10:44:03', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742872506908672, 1688742690398617600, 'SmsChannel', 'uni_sms', '合一短信', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:11', 1414143554414059520, '2023-08-08 10:44:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742905553829888, 1688742690398617600, 'SmsChannel', 'jd_cloud', '京东云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:19', 1414143554414059520, '2023-08-08 10:44:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742954715267072, 1688742690398617600, 'SmsChannel', 'cloopen', '容联云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:30', 1414143554414059520, '2023-08-08 10:44:30', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742990446542848, 1688742690398617600, 'SmsChannel', 'emay', '亿美软通', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:39', 1414143554414059520, '2023-08-08 10:44:39', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688743032297308160, 1688742690398617600, 'SmsChannel', 'ctyun', '天翼云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:49', 1414143554414059520, '2023-08-08 10:44:49', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688743065205817344, 1688742690398617600, 'SmsChannel', 'netease', '网易云信', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:57', 1414143554414059520, '2023-08-08 10:44:57', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338619024437248, 1690338321769918464, 'GeneralTemplateUseType', 'import', '导入', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:06', 1414143554414059520, '2023-08-12 20:25:06', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338653442895872, 1690338321769918464, 'GeneralTemplateUseType', 'export', '导出', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:15', 1414143554414059520, '2023-08-12 20:25:15', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338707129987072, 1690338545284378624, 'GeneralTemplateState', 'enable', '启用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:27', 1414143554414059520, '2023-08-12 20:25:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338748032839680, 1690338545284378624, 'GeneralTemplateState', 'disable', '停用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:37', 1414143554414059520, '2023-08-12 20:25:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1729519341702086656, 1589527951317389312, 'DataScopePerm', 'dept_sub', '指定部门及下级部门', b'1', 0.00, '', 1399985191002447872, '2023-11-28 23:15:19', 1399985191002447872, '2023-11-28 23:15:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997130102317056, 1744996845355212800, 'PayChannel', 'ali_pay', '支付宝', b'1', 1.00, '', 1399985191002447872, '2024-01-10 16:18:31', 1399985191002447872, '2024-01-10 16:18:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997169239367680, 1744996845355212800, 'PayChannel', 'wechat_pay', '微信支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 16:18:40', 1399985191002447872, '2024-01-10 16:18:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997213623492608, 1744996845355212800, 'PayChannel', 'union_pay', '云闪付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 16:18:51', 1399985191002447872, '2024-01-10 16:18:51', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997258951335936, 1744996845355212800, 'PayChannel', 'cash_pay', '现金支付', b'1', 4.00, '', 1399985191002447872, '2024-01-10 16:19:02', 1399985191002447872, '2024-01-10 16:19:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997315557662720, 1744996845355212800, 'PayChannel', 'wallet_pay', '钱包支付', b'1', 5.00, '', 1399985191002447872, '2024-01-10 16:19:15', 1399985191002447872, '2024-01-10 16:19:15', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997364404527104, 1744996845355212800, 'PayChannel', 'voucher_pay', '储值卡支付', b'1', 6.00, '', 1399985191002447872, '2024-01-10 16:19:27', 1399985191002447872, '2024-01-10 16:19:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997501033979904, 1744996913667842048, 'PayStatus', 'progress', '支付中', b'1', 1.00, '', 1399985191002447872, '2024-01-10 16:19:59', 1399985191002447872, '2024-01-10 16:19:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997541811003392, 1744996913667842048, 'PayStatus', 'success', '成功', b'1', 2.00, '', 1399985191002447872, '2024-01-10 16:20:09', 1399985191002447872, '2024-01-10 16:20:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997578863484928, 1744996913667842048, 'PayStatus', 'close', '支付关闭', b'1', 3.00, '', 1399985191002447872, '2024-01-10 16:20:18', 1399985191002447872, '2024-01-10 16:20:18', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997619665674240, 1744996913667842048, 'PayStatus', 'fail', '失败', b'1', 7.00, '', 1399985191002447872, '2024-01-10 16:20:28', 1399985191002447872, '2024-01-27 00:52:05', 0, 1); +INSERT INTO `base_dict_item` VALUES (1744997658735616000, 1744996913667842048, 'PayStatus', 'partial_refund', '部分退款', b'1', 5.00, '', 1399985191002447872, '2024-01-10 16:20:37', 1399985191002447872, '2024-01-10 16:20:44', 0, 1); +INSERT INTO `base_dict_item` VALUES (1744997746321072128, 1744996913667842048, 'PayStatus', 'refunded', '全部退款', b'1', 6.00, '', 1399985191002447872, '2024-01-10 16:20:58', 1399985191002447872, '2024-01-10 16:20:58', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745085949967278080, 1744996611615039488, 'AsyncPayChannel', 'ali_pay', '支付宝', b'1', 1.00, '', 1399985191002447872, '2024-01-10 22:11:27', 1399985191002447872, '2024-01-10 22:11:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745085991767711744, 1744996611615039488, 'AsyncPayChannel', 'wechat_pay', '微信支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 22:11:37', 1399985191002447872, '2024-01-10 22:11:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745086048852189184, 1744996611615039488, 'AsyncPayChannel', 'union_pay', '云闪付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 22:11:51', 1399985191002447872, '2024-01-11 00:13:03', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745086902929924096, 1745086859116224512, 'PayWay', 'normal', '常规支付', b'1', 1.00, '', 1399985191002447872, '2024-01-10 22:15:14', 1399985191002447872, '2024-01-10 22:15:26', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745086940036931584, 1745086859116224512, 'PayWay', 'wap', 'wap支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 22:15:23', 1399985191002447872, '2024-01-10 22:15:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087004062982144, 1745086859116224512, 'PayWay', 'app', '应用支付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 22:15:39', 1399985191002447872, '2024-01-10 22:15:39', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087058194669568, 1745086859116224512, 'PayWay', 'web', 'web支付', b'1', 4.00, '', 1399985191002447872, '2024-01-10 22:15:51', 1399985191002447872, '2024-01-10 22:15:51', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087104050995200, 1745086859116224512, 'PayWay', 'qrcode', '扫码支付', b'1', 5.00, '', 1399985191002447872, '2024-01-10 22:16:02', 1399985191002447872, '2024-01-10 22:16:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087163324899328, 1745086859116224512, 'PayWay', 'barcode', '付款码', b'1', 6.00, '', 1399985191002447872, '2024-01-10 22:16:17', 1399985191002447872, '2024-01-10 22:16:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087221629919232, 1745086859116224512, 'PayWay', 'jsapi', '公众号/小程序支付', b'1', 7.00, '', 1399985191002447872, '2024-01-10 22:16:30', 1399985191002447872, '2024-01-10 22:16:37', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745109413893656576, 1745109350333173760, 'PayCallbackStatus', 'success', '成功', b'1', 1.00, '', 1399985191002447872, '2024-01-10 23:44:41', 1399985191002447872, '2024-01-10 23:44:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109449050312704, 1745109350333173760, 'PayCallbackStatus', 'fail', '失败', b'1', 2.00, '', 1399985191002447872, '2024-01-10 23:44:50', 1399985191002447872, '2024-01-10 23:44:50', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109487289782272, 1745109350333173760, 'PayCallbackStatus', 'ignore', '忽略', b'1', 3.00, '', 1399985191002447872, '2024-01-10 23:44:59', 1399985191002447872, '2024-01-10 23:44:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109526477164544, 1745109350333173760, 'PayCallbackStatus', 'exception', '异常', b'1', 4.00, '', 1399985191002447872, '2024-01-10 23:45:08', 1399985191002447872, '2024-02-01 22:14:52', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745109571771453440, 1745109350333173760, 'PayCallbackStatus', 'not_found', '未找到', b'1', 5.00, '', 1399985191002447872, '2024-01-10 23:45:19', 1399985191002447872, '2024-01-10 23:45:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745129035573465088, 1745128986382667776, 'PayRepairSource', 'sync', '同步', b'1', 1.00, '', 1399985191002447872, '2024-01-11 01:02:40', 1399985191002447872, '2024-01-11 01:02:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745133530906857472, 1745128986382667776, 'PayRepairSource', 'callback', '回调', b'1', 2.00, '', 1399985191002447872, '2024-01-11 01:20:31', 1399985191002447872, '2024-01-11 01:20:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745133583939637248, 1745128986382667776, 'PayRepairSource', 'reconcile', '对账', b'1', 3.00, '', 1399985191002447872, '2024-01-11 01:20:44', 1399985191002447872, '2024-01-11 01:20:44', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745134495319953408, 1745134438772346880, 'PayRepairWay', 'pay_success', '支付成功', b'1', 1.00, '', 1399985191002447872, '2024-01-11 01:24:21', 1399985191002447872, '2024-02-01 21:29:32', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134589926674432, 1745134438772346880, 'PayRepairWay', 'pay_close_local', '关闭本地支付', b'1', 2.00, '', 1399985191002447872, '2024-01-11 01:24:44', 1399985191002447872, '2024-02-01 21:29:36', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134628447162368, 1745134438772346880, 'PayRepairWay', 'pay_progress', '更改为支付中', b'1', 3.00, '', 1399985191002447872, '2024-01-11 01:24:53', 1399985191002447872, '2024-02-01 22:02:53', 0, 2); +INSERT INTO `base_dict_item` VALUES (1745134664807583744, 1745134438772346880, 'PayRepairWay', 'pay_close_gateway', '关闭网关支付', b'1', 4.00, '', 1399985191002447872, '2024-01-11 01:25:02', 1399985191002447872, '2024-02-01 21:29:43', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134703416152064, 1745134438772346880, 'PayRepairWay', 'refund', '退款', b'1', 5.00, '', 1399985191002447872, '2024-01-11 01:25:11', 1399985191002447872, '2024-01-28 21:55:55', 1, 1); +INSERT INTO `base_dict_item` VALUES (1745748239158845440, 1745748188122554368, 'RefundStatus', 'success', '成功', b'1', 1.00, '', 1399985191002447872, '2024-01-12 18:03:09', 1399985191002447872, '2024-01-12 18:03:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745748274525216768, 1745748188122554368, 'RefundStatus', 'fail', '失败', b'1', 3.00, '', 1399985191002447872, '2024-01-12 18:03:18', 1399985191002447872, '2024-01-27 00:51:02', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208700446683136, 1746208645341917184, 'PaySyncStatus', 'pay_fail', '支付查询失败', b'1', 1.00, '', 1399985191002447872, '2024-01-14 00:32:52', 1399985191002447872, '2024-02-01 21:59:17', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208760488144896, 1746208645341917184, 'PaySyncStatus', 'pay_success', '支付成功', b'1', 2.00, '', 1399985191002447872, '2024-01-14 00:33:06', 1399985191002447872, '2024-02-01 21:59:23', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208802531848192, 1746208645341917184, 'PaySyncStatus', 'pay_progress', '支付中', b'1', 3.00, '', 1399985191002447872, '2024-01-14 00:33:16', 1399985191002447872, '2024-02-01 21:59:33', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208853882712064, 1746208645341917184, 'PaySyncStatus', 'pay_closed', '支付已关闭', b'1', 4.00, '', 1399985191002447872, '2024-01-14 00:33:28', 1399985191002447872, '2024-02-01 21:59:43', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208898396860416, 1746208645341917184, 'PaySyncStatus', 'pay_refund', '支付退款', b'1', 5.00, '', 1399985191002447872, '2024-01-14 00:33:39', 1399985191002447872, '2024-02-01 21:59:53', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746208959721779200, 1746208645341917184, 'PaySyncStatus', 'pay_not_found', '交易不存在', b'1', 6.00, '', 1399985191002447872, '2024-01-14 00:33:54', 1399985191002447872, '2024-02-01 22:00:05', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746224281904455680, 1746208645341917184, 'PaySyncStatus', 'pay_not_found_unknown', '交易不存在(特殊)', b'1', 7.00, '未查询到订单(具体类型未知), 区别于上面的未查询到订单,有些支付方式如支付宝,发起支付后并不能查询到订单,需要用户进行操作后才能查询到订单,所以查询为了区分,增加一个未知的状态, 用于处理这种特殊情况, 然后根据业务需要,关闭订单或者进行其他操作', 1399985191002447872, '2024-01-14 01:34:47', 1399985191002447872, '2024-02-01 22:00:13', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746224432131842048, 1746208645341917184, 'PaySyncStatus', 'pay_timeout', '支付超时', b'1', 8.00, '', 1399985191002447872, '2024-01-14 01:35:23', 1399985191002447872, '2024-02-01 22:00:30', 0, 2); +INSERT INTO `base_dict_item` VALUES (1749612708363186176, 1749612665392541696, 'ReconcileTrade', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-01-23 09:59:11', 1399985191002447872, '2024-01-23 09:59:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1749612758531256320, 1749612665392541696, 'ReconcileTrade', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-01-23 09:59:23', 1399985191002447872, '2024-01-23 09:59:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1749612797680889856, 1749612665392541696, 'ReconcileTrade', 'revoked', '撤销', b'1', 3.00, '', 1399985191002447872, '2024-01-23 09:59:32', 1399985191002447872, '2024-01-23 09:59:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924188674404352, 1745748188122554368, 'RefundStatus', 'progress', '退款中', b'1', 0.00, '接口调用成功不代表成功', 1399985191002447872, '2024-01-27 00:50:32', 1399985191002447872, '2024-01-27 00:50:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924286401687552, 1745748188122554368, 'RefundStatus', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-01-27 00:50:55', 1399985191002447872, '2024-01-27 00:50:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924518497693696, 1744996913667842048, 'PayStatus', 'refunding', '退款中', b'1', 4.00, '', 1399985191002447872, '2024-01-27 00:51:50', 1399985191002447872, '2024-01-27 00:52:10', 0, 1); +INSERT INTO `base_dict_item` VALUES (1751528739035111424, 1751603996496453632, 'PaymentType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-01-28 16:52:48', 1399985191002447872, '2024-01-28 16:52:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751528773260632064, 1751603996496453632, 'PaymentType', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-01-28 16:52:56', 1399985191002447872, '2024-01-28 16:52:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751613076980039680, 1751613032260370432, 'PayCallbackType', 'pay', '支付回调', b'1', 1.00, '', 1399985191002447872, '2024-01-28 22:27:56', 1399985191002447872, '2024-01-28 22:27:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751613114254819328, 1751613032260370432, 'PayCallbackType', 'refund', '退款回调', b'1', 2.00, '', 1399985191002447872, '2024-01-28 22:28:04', 1399985191002447872, '2024-01-28 22:28:04', 0, 0); +INSERT INTO `base_dict_item` VALUES (1752216855927226368, 1745748188122554368, 'RefundStatus', 'close', '关闭', b'1', 4.00, '', 1399985191002447872, '2024-01-30 14:27:08', 1399985191002447872, '2024-01-30 14:27:08', 0, 0); +INSERT INTO `base_dict_item` VALUES (1752560213673594880, 1752560153120428032, 'RefundSyncStatus', 'refund_success', '退款成功', b'1', 1.00, '', 1399985191002447872, '2024-01-31 13:11:31', 1399985191002447872, '2024-02-01 21:56:59', 0, 1); +INSERT INTO `base_dict_item` VALUES (1752560254228320256, 1752560153120428032, 'RefundSyncStatus', 'refund_fail', '退款失败', b'1', 2.00, '', 1399985191002447872, '2024-01-31 13:11:40', 1399985191002447872, '2024-02-01 21:57:07', 0, 1); +INSERT INTO `base_dict_item` VALUES (1752560288546115584, 1752560153120428032, 'RefundSyncStatus', 'refund_progress', '退款中', b'1', 3.00, '', 1399985191002447872, '2024-01-31 13:11:48', 1399985191002447872, '2024-02-01 21:57:45', 0, 1); +INSERT INTO `base_dict_item` VALUES (1753044707091554304, 1745128986382667776, 'PayRepairSource', 'task', '定时任务', b'1', 4.00, '', 1399985191002447872, '2024-02-01 21:16:43', 1399985191002447872, '2024-02-01 21:16:43', 0, 0); +INSERT INTO `base_dict_item` VALUES (1753047429014495232, 1753047382185091072, 'RefundRepairWay', 'refund_success', '退款成功', b'1', 1.00, '', 1399985191002447872, '2024-02-01 21:27:32', 1399985191002447872, '2024-02-01 21:29:13', 0, 1); +INSERT INTO `base_dict_item` VALUES (1753047491140526080, 1753047382185091072, 'RefundRepairWay', 'refund_fail', '退款失败', b'1', 2.00, '', 1399985191002447872, '2024-02-01 21:27:47', 1399985191002447872, '2024-02-01 21:29:19', 0, 1); +INSERT INTO `base_dict_item` VALUES (1755939895162052608, 1745134438772346880, 'PayRepairWay', 'refund_success', '退款成功', b'1', 5.00, '会更新为部分退款和全部退款', 1399985191002447872, '2024-02-09 21:01:09', 1399985191002447872, '2024-02-09 21:10:22', 0, 2); +INSERT INTO `base_dict_item` VALUES (1755942271772139520, 1745134438772346880, 'PayRepairWay', 'refund_fail', '退款失败', b'1', 6.00, '', 1399985191002447872, '2024-02-09 21:10:36', 1399985191002447872, '2024-02-09 21:10:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1758881424411439104, 1758881354618220544, 'WalletStatus', 'normal', '正常', b'1', 1.00, '', 1399985191002447872, '2024-02-17 23:49:45', 1399985191002447872, '2024-02-17 23:49:45', 0, 0); +INSERT INTO `base_dict_item` VALUES (1758881470334873600, 1758881354618220544, 'WalletStatus', 'forbidden', '禁用', b'1', 2.00, '', 1399985191002447872, '2024-02-17 23:49:56', 1399985191002447872, '2024-02-17 23:49:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759189919170002944, 1759189874194481152, 'VoucherStatus', 'normal', '正常', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:15:36', 1399985191002447872, '2024-02-18 20:15:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759189962564272128, 1759189874194481152, 'VoucherStatus', 'forbidden', '禁用', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:15:46', 1399985191002447872, '2024-02-18 20:15:46', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190150464897024, 1759190066511708160, 'WalletRecordType', 'create', '创建', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:16:31', 1399985191002447872, '2024-02-18 20:16:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190193783668736, 1759190066511708160, 'WalletRecordType', 'pay', '支付', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:16:41', 1399985191002447872, '2024-02-18 20:16:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190227510067200, 1759190066511708160, 'WalletRecordType', 'refund', '退款', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:16:49', 1399985191002447872, '2024-02-18 20:16:56', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190291980713984, 1759190066511708160, 'WalletRecordType', 'close_pay', '支付关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:17:04', 1399985191002447872, '2024-02-18 20:17:04', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190340517199872, 1759190066511708160, 'WalletRecordType', 'close_refund', '退款关闭', b'1', 5.00, '', 1399985191002447872, '2024-02-18 20:17:16', 1399985191002447872, '2024-02-19 17:31:26', 1, 0); +INSERT INTO `base_dict_item` VALUES (1759190472654553088, 1759190427897135104, 'VoucherRecordType', 'import', '导入', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:17:48', 1399985191002447872, '2024-02-18 20:17:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190506087350272, 1759190427897135104, 'VoucherRecordType', 'pay', '支付', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:17:55', 1399985191002447872, '2024-02-18 20:18:16', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190574865547264, 1759190427897135104, 'VoucherRecordType', 'refund', '退款', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:18:12', 1399985191002447872, '2024-02-18 20:18:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190633921347584, 1759190427897135104, 'VoucherRecordType', 'close_pay', '支付关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:18:26', 1399985191002447872, '2024-02-18 20:18:26', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190717757095936, 1759190427897135104, 'VoucherRecordType', 'close_refund', '退款关闭', b'1', 5.00, '', 1399985191002447872, '2024-02-18 20:18:46', 1399985191002447872, '2024-02-19 17:31:20', 1, 0); +INSERT INTO `base_dict_item` VALUES (1759190820500766720, 1759190780252225536, 'CashRecordType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:19:10', 1399985191002447872, '2024-02-18 20:19:39', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190850754281472, 1759190780252225536, 'CashRecordType', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:19:18', 1399985191002447872, '2024-02-18 20:19:42', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190884061249536, 1759190780252225536, 'CashRecordType', 'close_pay', '支付关闭', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:19:26', 1399985191002447872, '2024-02-18 20:19:46', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190913261993984, 1759190780252225536, 'CashrRecordType', 'close_refund', '退款关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:19:33', 1399985191002447872, '2024-02-19 17:31:15', 1, 1); +INSERT INTO `base_dict_item` VALUES (1759514962507554816, 1759190066511708160, 'WalletRecordType', 'recharge', '充值', b'1', 11.00, '', 1399985191002447872, '2024-02-19 17:47:12', 1399985191002447872, '2024-02-19 17:47:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759515000520531968, 1759190066511708160, 'WalletRecordType', 'deduct', '扣减', b'1', 12.00, '', 1399985191002447872, '2024-02-19 17:47:21', 1399985191002447872, '2024-02-19 17:47:21', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434142275497984, 1761434095349624832, 'ClientNoticeType', 'pay', '支付通知', b'1', 1.00, '', 1399985191002447872, '2024-02-25 00:53:20', 1399985191002447872, '2024-02-25 00:53:20', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434179445420032, 1761434095349624832, 'ClientNoticeType', 'refund', '退款通知', b'1', 2.00, '', 1399985191002447872, '2024-02-25 00:53:29', 1399985191002447872, '2024-02-25 00:53:29', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434308537708544, 1761434264858226688, 'ClientNoticeSendType', 'auto', '自动发送', b'1', 0.00, '', 1399985191002447872, '2024-02-25 00:54:00', 1399985191002447872, '2024-02-25 00:54:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434346206752768, 1761434264858226688, 'ClientNoticeSendType', 'manual', '手动发送', b'1', 1.00, '', 1399985191002447872, '2024-02-25 00:54:09', 1399985191002447872, '2024-02-25 00:54:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761581686381080576, 1761581634023583744, 'AlipayRecordType', 'pay', '支付', b'1', 0.00, '', 1399985191002447872, '2024-02-25 10:39:37', 1399985191002447872, '2024-02-25 10:39:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761581731029446656, 1761581634023583744, 'AlipayRecordType', 'refund', '退款', b'1', 1.00, '', 1399985191002447872, '2024-02-25 10:39:48', 1399985191002447872, '2024-02-25 10:39:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761588368863645696, 1761588314480300032, 'WechatPayRecordType', 'pay', '支付', b'1', 0.00, '', 1399985191002447872, '2024-02-25 11:06:11', 1399985191002447872, '2024-02-25 11:06:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761588397825314816, 1761588314480300032, 'WechatPayRecordType', 'refund', '退款', b'1', 0.00, '', 1399985191002447872, '2024-02-25 11:06:17', 1399985191002447872, '2024-02-25 11:06:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588081838182400, 1763588034467713024, 'ReconcileDiffType', 'local_not_exists', '本地订单不存在', b'1', 0.00, '', 1399985191002447872, '2024-03-01 23:32:19', 1399985191002447872, '2024-03-01 23:32:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588123143688192, 1763588034467713024, 'ReconcileDiffType', 'remote_not_exists', '远程订单不存在', b'1', 1.00, '', 1399985191002447872, '2024-03-01 23:32:29', 1399985191002447872, '2024-03-01 23:32:29', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588174695878656, 1763588034467713024, 'ReconcileDiffType', 'not_match', '订单信息不一致', b'1', 2.00, '', 1399985191002447872, '2024-03-01 23:32:41', 1399985191002447872, '2024-03-01 23:32:48', 0, 1); +INSERT INTO `base_dict_item` VALUES (1766713657021157376, 1766713545981153280, 'UnionPaySignType', 'RSA2', 'RSA2', b'1', 0.00, '', 1399985191002447872, '2024-03-10 14:32:14', 1399985191002447872, '2024-03-10 14:32:14', 0, 0); +INSERT INTO `base_dict_item` VALUES (1768206502721449984, 1768206399071809536, 'UnionPayRecordType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-03-14 17:24:17', 1399985191002447872, '2024-03-14 17:24:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1768206547285929984, 1768206399071809536, 'UnionPayRecordType', 'refund', '退款', b'1', 0.00, '', 1399985191002447872, '2024-03-14 17:24:27', 1399985191002447872, '2024-03-14 17:24:27', 0, 0); + +-- ---------------------------- +-- Table structure for base_dynamic_data_source +-- ---------------------------- +DROP TABLE IF EXISTS `base_dynamic_data_source`; +CREATE TABLE `base_dynamic_data_source` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称', + `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型', + `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载', + `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类', + `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址', + `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称', + `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dynamic_data_source +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_dynamic_form +-- ---------------------------- +DROP TABLE IF EXISTS `base_dynamic_form`; +CREATE TABLE `base_dynamic_form` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名', + `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dynamic_form +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_general_template +-- ---------------------------- +DROP TABLE IF EXISTS `base_general_template`; +CREATE TABLE `base_general_template` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码', + `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)', + `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型', + `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态', + `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_general_template +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_key_value +-- ---------------------------- +DROP TABLE IF EXISTS `base_key_value`; +CREATE TABLE `base_key_value` ( + `id` bigint(20) NOT NULL, + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', + `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_key_value +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_param +-- ---------------------------- +DROP TABLE IF EXISTS `base_param`; +CREATE TABLE `base_param` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称', + `param_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', + `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', + `type` int(4) NULL DEFAULT NULL COMMENT '参数类型', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `internal` bit(1) NOT NULL COMMENT '内置参数', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统参数配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_param +-- ---------------------------- +INSERT INTO `base_param` VALUES (1452842684284891136, '测试', 'test.v1', '123', 1, b'1', b'0', NULL, 1399985191002447872, '2021-10-26 11:41:03', 1399985191002447872, '2024-01-07 23:31:08', 1, 0); +INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9000', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2024-01-07 23:31:29', 0, 3); +INSERT INTO `base_param` VALUES (1545765299880448000, '服务器地址', 'ServerUrl', 'http://127.0.0.1:9000', 1, b'1', b'1', '优先级高于配置文件内进行的配置', 1399985191002447872, '2022-07-09 21:42:21', 1399985191002447872, '2024-01-07 23:31:20', 0, 2); + +-- ---------------------------- +-- Table structure for base_province +-- ---------------------------- +DROP TABLE IF EXISTS `base_province`; +CREATE TABLE `base_province` ( + `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码', + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称', + PRIMARY KEY (`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_province +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_query_sql +-- ---------------------------- +DROP TABLE IF EXISTS `base_query_sql`; +CREATE TABLE `base_query_sql` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合', + `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句', + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数', + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_query_sql +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_street +-- ---------------------------- +DROP TABLE IF EXISTS `base_street`; +CREATE TABLE `base_street` ( + `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码', + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称', + `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_street +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_village +-- ---------------------------- +DROP TABLE IF EXISTS `base_village`; +CREATE TABLE `base_village` ( + `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码', + `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称', + `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_village +-- ---------------------------- + +-- ---------------------------- +-- Table structure for cash_record +-- ---------------------------- +DROP TABLE IF EXISTS `cash_record`; +CREATE TABLE `cash_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现金记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of cash_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for common_sequence_range +-- ---------------------------- +DROP TABLE IF EXISTS `common_sequence_range`; +CREATE TABLE `common_sequence_range` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key', + `range_value` bigint(20) NOT NULL COMMENT '区间开始值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of common_sequence_range +-- ---------------------------- + +-- ---------------------------- +-- Table structure for ddl_history +-- ---------------------------- +DROP TABLE IF EXISTS `ddl_history`; +CREATE TABLE `ddl_history` ( + `script` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '脚本', + `type` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `version` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '版本', + PRIMARY KEY (`script`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'DDL 版本' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of ddl_history +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_client +-- ---------------------------- +DROP TABLE IF EXISTS `iam_client`; +CREATE TABLE `iam_client` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端', + `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_client +-- ---------------------------- +INSERT INTO `iam_client` VALUES (1580487061605175296, 'dax-pay', '支付网关', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', '支付网关管理端', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0'); + +-- ---------------------------- +-- Table structure for iam_data_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role`; +CREATE TABLE `iam_data_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_data_role_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role_dept`; +CREATE TABLE `iam_data_role_dept` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_data_role_user +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role_user`; +CREATE TABLE `iam_data_role_user` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role_user +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_dept`; +CREATE TABLE `iam_dept` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID', + `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称', + `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位', + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码', + `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', + `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真', + `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_login_security_config +-- ---------------------------- +DROP TABLE IF EXISTS `iam_login_security_config`; +CREATE TABLE `iam_login_security_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID', + `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录', + `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码', + `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数', + `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录', + `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_login_security_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_login_type +-- ---------------------------- +DROP TABLE IF EXISTS `iam_login_type`; +CREATE TABLE `iam_login_type` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)', + `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型', + `captcha` bit(1) NOT NULL COMMENT '启用验证码', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_login_type +-- ---------------------------- +INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0'); +INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0'); +INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0'); + +-- ---------------------------- +-- Table structure for iam_password_change_history +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_change_history`; +CREATE TABLE `iam_password_change_history` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_change_history +-- ---------------------------- +INSERT INTO `iam_password_change_history` VALUES (1757299138075283456, 1757299137932677120, 'f52020dca765fd3943ed40a615dc2c5c', 1399985191002447872, '2024-02-13 15:02:18'); +INSERT INTO `iam_password_change_history` VALUES (1757317256038281216, 1757317255899869184, '1e9e3c3deaa4a06d08326e82a49d1b63', 1399985191002447872, '2024-02-13 16:14:18'); + +-- ---------------------------- +-- Table structure for iam_password_login_fail_record +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_login_fail_record`; +CREATE TABLE `iam_password_login_fail_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数', + `fail_time` datetime(0) NULL DEFAULT NULL COMMENT '登录失败时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_login_fail_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_password_security_config +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_security_config`; +CREATE TABLE `iam_password_security_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数', + `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)', + `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码', + `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率', + `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)', + `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同', + `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_security_config +-- ---------------------------- +INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 9999999, 10, b'1', 9999999, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-11-29 12:10:21', 2, b'0'); + +-- ---------------------------- +-- Table structure for iam_perm_menu +-- ---------------------------- +DROP TABLE IF EXISTS `iam_perm_menu`; +CREATE TABLE `iam_perm_menu` ( + `id` bigint(20) NOT NULL, + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称', + `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码', + `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标', + `hidden` bit(1) NOT NULL COMMENT '是否隐藏', + `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件', + `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径', + `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)', + `sort_no` double NOT NULL COMMENT '菜单排序', + `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)', + `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点', + `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面', + `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式', + `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容', + `admin` bit(1) NOT NULL COMMENT '系统菜单', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_perm_menu +-- ---------------------------- +INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'dax-pay', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'dax-pay', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'dax-pay', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'dax-pay', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'dax-pay', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'dax-pay', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'dax-pay', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'dax-pay', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'dax-pay', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'dax-pay', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'dax-pay', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'dax-pay', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'dax-pay', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'dax-pay', 1582249924602580992, '请求权限', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1399985191002447872, '2023-11-29 13:57:56', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'dax-pay', 1582249924602580992, '数据角色', 'DataRoleList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataRoleList.vue', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1399985191002447872, '2023-11-28 21:02:57', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'dax-pay', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'dax-pay', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'dax-pay', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'dax-pay', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'dax-pay', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'dax-pay', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'dax-pay', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'dax-pay', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'dax-pay', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'dax-pay', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'dax-pay', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'dax-pay', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'dax-pay', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'dax-pay', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'dax-pay', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'dax-pay', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'dax-pay', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'dax-pay', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'dax-pay', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'dax-pay', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'dax-pay', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'dax-pay', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'dax-pay', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'dax-pay', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'dax-pay', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'dax-pay', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'dax-pay', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'dax-pay', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'dax-pay', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0); +INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'dax-pay', NULL, '关于', '', NULL, b'0', 'ant-design:info-circle-outlined', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1399985191002447872, '2024-01-14 23:09:56', 6, 0); +INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'dax-pay', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'dax-pay', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'dax-pay', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'dax-pay', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'dax-pay', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'dax-pay', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'dax-pay', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'dax-pay', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'dax-pay', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'dax-pay', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'dax-pay', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1733829906427682816, 'dax-pay', 1582275875424129024, '在线用户', 'OnlineUserList', NULL, b'0', '', b'0', b'0', '/modules/monitor/user/online/OnlineUserList', NULL, '/monitor/user/online', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-12-10 20:43:57', 1399985191002447872, '2023-12-10 20:43:57', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1744271715476684800, 'dax-pay', NULL, '支付配置', 'PayConfig', NULL, b'0', 'ant-design:setting-filled', b'0', b'0', 'Layout', NULL, '/pay/config', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 16:15:59', 1399985191002447872, '2024-01-09 15:38:06', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1744276101384880128, 'dax-pay', 1744271715476684800, '支付通道', 'PayChannelConfigList', NULL, b'0', '', b'0', b'0', 'payment/system/channel/PayChannelConfigList', NULL, '/pay/config/channel', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 16:33:24', 1399985191002447872, '2024-01-18 14:49:15', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1744372631231995904, 'dax-pay', 1744271715476684800, '支付方式', 'PayWayInfoList', NULL, b'0', '', b'0', b'0', 'payment/system/way/PayWayInfoList', NULL, '/pay/config/way', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 22:56:59', 1399985191002447872, '2024-01-18 14:50:55', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1744624886658318336, 'dax-pay', 1744271715476684800, '支付接口', 'PayApiConfigList', NULL, b'0', '', b'0', b'0', 'payment/system/api/PayApiConfigList', NULL, '/pay/config/api', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 15:39:21', 1399985191002447872, '2024-01-10 11:52:20', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1744642856348520448, 'dax-pay', NULL, '订单管理', 'PayOrder', NULL, b'0', 'ant-design:wallet-outlined', b'0', b'0', 'Layout', NULL, '/pay/order', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 16:50:46', 1399985191002447872, '2024-01-09 16:53:35', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1744643265142165504, 'dax-pay', NULL, '数据记录', 'PayRecord', NULL, b'0', 'ant-design:profile-outlined', b'0', b'0', 'Layout', NULL, '/pay/record', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 16:52:23', 1399985191002447872, '2024-01-09 16:53:50', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1744930046228017152, 'dax-pay', 1744643265142165504, '回调记录', 'PayCallbackRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/callback/PayCallbackRecordList', NULL, '/pay/record/callback', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-10 11:51:57', 1399985191002447872, '2024-01-10 11:59:07', 10, 0); +INSERT INTO `iam_perm_menu` VALUES (1745126072389963776, 'dax-pay', 1744643265142165504, '关闭记录', 'PayCloseRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/close/PayCloseRecordList', NULL, '/pay/record/close', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 00:50:53', 1399985191002447872, '2024-01-11 00:50:53', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745136155962347520, 'dax-pay', 1744643265142165504, '修复记录', 'PayRepairRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/repair/PayRepairRecordList', NULL, '/pay/record/repair', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 01:30:57', 1399985191002447872, '2024-01-11 01:30:57', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745143528663781376, 'dax-pay', 1744643265142165504, '同步记录', 'PaySyncRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/sync/PaySyncRecordList', NULL, '/pay/record/sync', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 02:00:15', 1399985191002447872, '2024-01-11 02:00:33', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1745457623493496832, 'dax-pay', 1744642856348520448, '支付订单', 'PayOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/pay/PayOrderList', NULL, '/pay/order/pay', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 22:48:21', 1399985191002447872, '2024-01-11 22:48:21', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745457746529210368, 'dax-pay', 1744642856348520448, '退款订单', 'RefundOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/refund/RefundOrderList.vue', NULL, '/pay/order/refund', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 22:48:50', 1399985191002447872, '2024-01-21 22:50:29', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1745822093382230016, 'dax-pay', 1744271715476684800, '通道配置', 'ChannelPayConfigList', NULL, b'0', '', b'0', b'0', 'payment/channel/config/ChannelPayConfigList', NULL, '/pay/config/channelpay', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-12 22:56:38', 1399985191002447872, '2024-02-06 14:32:08', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1746194891925561344, 'dax-pay', 1744271715476684800, '平台配置', 'PayPlatformConfig', NULL, b'0', '', b'0', b'0', 'payment/system/platform/PayPlatformConfig', NULL, '/pay/config/platform', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-13 23:38:00', 1399985191002447872, '2024-01-13 23:38:00', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1749262518385082368, 'dax-pay', 1744642856348520448, '对账订单', 'ReconcileOrder', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/pay/order/reconcile', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-22 10:47:39', 1399985191002447872, '2024-03-04 21:06:18', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1758860876272861184, 'dax-pay', NULL, '支付通道', 'PayChannel', NULL, b'0', 'ant-design:align-left-outlined', b'0', b'0', 'Layout', NULL, '/pay/channel', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:28:06', 1399985191002447872, '2024-02-17 22:28:06', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1758861129311027200, 'dax-pay', 1758860876272861184, '钱包管理', 'WalletList', NULL, b'0', '', b'0', b'0', 'payment/channel/wallet/manager/WalletList', NULL, '/pay/channel/wallet', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:29:06', 1399985191002447872, '2024-03-05 22:09:12', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1759192238594949120, 'dax-pay', 1758860876272861184, '储值卡管理', 'VoucherList', NULL, b'0', '', b'0', b'0', 'payment/channel/voucher/manager/VoucherList', NULL, '/pay/channel/voucher', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-18 20:24:49', 1399985191002447872, '2024-03-05 22:09:30', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1759192520611561472, 'dax-pay', 1758860876272861184, '现金流水', 'CashRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/cash/record/CashRecordList', NULL, '/pay/channel/cash', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-18 20:25:56', 1399985191002447872, '2024-02-18 23:35:22', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1759768820429352960, 'dax-pay', NULL, '演示模块', '', NULL, b'0', 'ant-design:crown-outlined', b'0', b'0', 'Layout', NULL, '/pay/demo', '', 9, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 10:35:56', 1399985191002447872, '2024-02-20 10:35:56', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759769092698402816, 'dax-pay', 1759768820429352960, '收银台演示', '', NULL, b'0', '', b'0', b'0', '', NULL, 'outside:///cashier', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 10:37:01', 1399985191002447872, '2024-02-20 10:37:01', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759861648606097408, 'dax-pay', 1758860876272861184, '支付宝流水', 'AlipayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/alipay/record/AlipayRecordList', NULL, '/pay/channel/alipay', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 16:44:48', 1399985191002447872, '2024-02-20 16:44:48', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759865163772485632, 'dax-pay', 1758860876272861184, '微信流水', 'WechatPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/wechat/record/WechatPayRecordList', NULL, '/pay/channel/wecha', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 16:58:46', 1399985191002447872, '2024-02-20 17:00:08', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1761429304959528960, 'dax-pay', NULL, '任务记录', 'PayTask', NULL, b'0', 'ant-design:clock-circle-outlined', b'0', b'0', 'Layout', NULL, '/pay/task', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:34:07', 1399985191002447872, '2024-02-25 00:34:30', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1761429682618855424, 'dax-pay', 1761429304959528960, '消息通知', 'ClientNoticeTaskList', NULL, b'0', '', b'0', b'0', 'payment/task/notice/ClientNoticeTaskList', NULL, '/pay/task/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:35:37', 1399985191002447872, '2024-02-25 00:35:37', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1764638353289027584, 'dax-pay', 1749262518385082368, '对账单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:05:43', 1399985191002447872, '2024-03-04 21:07:14', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1764638678821543936, 'dax-pay', 1749262518385082368, '差异单', 'ReconcileDiffList', NULL, b'0', '', b'1', b'0', 'payment/order/reconcile/diff/ReconcileDiffList.vue', NULL, '/pay/order/reconcile/diff', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:07:01', 1399985191002447872, '2024-03-05 12:49:19', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1768203432981655552, 'dax-pay', 1758860876272861184, '云闪付流水', 'UnionPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/union/record/UnionPayRecordList', NULL, '/pay/channel/union', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-14 17:12:05', 1399985191002447872, '2024-03-14 17:12:05', 0, 0); + +-- ---------------------------- +-- Table structure for iam_perm_path +-- ---------------------------- +DROP TABLE IF EXISTS `iam_perm_path`; +CREATE TABLE `iam_perm_path` ( + `id` bigint(20) NOT NULL, + `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称', + `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径', + `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称', + `enable` bit(1) NOT NULL COMMENT '启用状态', + `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL, + `create_time` datetime(6) NULL DEFAULT NULL, + `last_modifier` bigint(20) NULL DEFAULT NULL, + `last_modified_time` datetime(6) NULL DEFAULT NULL, + `deleted` bit(1) NOT NULL, + `version` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_perm_path +-- ---------------------------- +INSERT INTO `iam_perm_path` VALUES (1757297527147974656, 'DynamicDataSourceController#existsByCode', '编码是否被使用', 'GET', '/dynamic/source/existsByCode', '动态数据源管理', b'1', b'1', '动态数据源管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974658, 'QuartzJobController#stop', '停止', 'POST', '/quartz/stop', '定时任务', b'1', b'1', '定时任务 停止', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974659, 'RoleController#page', '分页查询角色', 'GET', '/role/page', '角色管理', b'1', b'1', '角色管理 分页查询角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974660, 'DictionaryItemController#delete', '删除字典项', 'DELETE', '/dict/item/delete', '字典项', b'1', b'1', '字典项 删除字典项', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974661, 'UserAssistController#validatePhoneChangeCaptcha', '验证改/绑定手机验证码', 'GET', '/user/validatePhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证改/绑定手机验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974662, 'PayRefundOrderController#refund', '手动发起退款', 'POST', '/order/refund/refund', '支付退款控制器', b'1', b'1', '支付退款控制器 手动发起退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974663, 'UserDataRoleController#findDataRoleByUser', '根据用户ID获取到数据角色列表', 'GET', '/user/data/role/findDataRoleByUser', '用户数据角色配置', b'1', b'1', '用户数据角色配置 根据用户ID获取到数据角色列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974664, 'FIleUpLoadController#preview', '预览文件(流量会经过后端)', 'GET', '/file/preview/{id}', '文件上传', b'1', b'1', '文件上传 预览文件(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974665, 'UserAssistController#sendPhoneForgetCaptcha', '发送找回密码手机验证码', 'POST', '/user/sendPhoneForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送找回密码手机验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974666, 'DynamicDataSourceController#findById', '通过ID查询', 'GET', '/dynamic/source/findById', '动态数据源管理', b'1', b'1', '动态数据源管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974667, 'GeneralTemplateController#findByCode', '通过Code查询', 'GET', '/general/template/findByCode', '通用模板管理', b'1', b'1', '通用模板管理 通过Code查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974668, 'AlipayConfigController#update', '更新', 'POST', '/alipay/config/update', '支付宝配置', b'1', b'1', '支付宝配置 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974669, 'UniPayController#refund', '统一退款', 'POST', '/unipay/refund', '统一支付接口', b'1', b'1', '统一支付接口 统一退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974670, 'DynamicFormController#existsByCode', '编码是否被使用', 'GET', '/dynamic/form/existsByCode', '动态表单', b'1', b'1', '动态表单 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974671, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs/', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974672, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974673, 'MessageTemplateController#page', '分页', 'GET', '/message/template/page', '消息模板', b'1', b'1', '消息模板 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974674, 'GeneralTemplateController#findAll', '查询所有', 'GET', '/general/template/findAll', '通用模板管理', b'1', b'1', '通用模板管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974675, 'QuartzJobLogController#findById', '单条', 'GET', '/quartz/log/findById', '定时任务执行日志', b'1', b'1', '定时任务执行日志 单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974676, 'UserAdminController#ban', '封禁用户', 'POST', '/user/admin/ban', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 封禁用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974677, 'ChinaWordController#findAll', '查询所有', 'GET', '/chinaword/findAll', '敏感词管理', b'1', b'1', '敏感词管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974678, 'DeptController#deleteAndChildren', '强制级联删除', 'DELETE', '/dept/deleteAndChildren', '部门管理', b'1', b'1', '部门管理 强制级联删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974679, 'ChinaWordController#local', '批量导入', 'POST', '/chinaword/importBatch', '敏感词管理', b'1', b'1', '敏感词管理 批量导入', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974680, 'TokenEndpoint#logout', '退出', 'POST', '/token/logout', '认证相关', b'1', b'1', '认证相关 退出', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974681, 'UserThirdController#findById', '获取详情', 'POST', '/user/third/findById', '用户三方登录管理', b'1', b'1', '用户三方登录管理 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974682, 'MailConfigController#existsByCode', '编码是否被使用', 'GET', '/mail/config/existsByCode', '邮箱配置', b'1', b'1', '邮箱配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974683, 'GeneralTemplateController#add', '添加', 'POST', '/general/template/add', '通用模板管理', b'1', b'1', '通用模板管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974684, 'SystemParamController#delete', '删除', 'DELETE', '/system/param/delete', '系统参数', b'1', b'1', '系统参数 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974685, 'QuartzJobController#add', '添加', 'POST', '/quartz/add', '定时任务', b'1', b'1', '定时任务 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974686, 'PermPathController#deleteBatch', '批量删除', 'DELETE', '/perm/path/deleteBatch', '请求权限管理', b'1', b'1', '请求权限管理 批量删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974687, 'DictionaryItemController#findAllByEnable', '获取启用的字典项列表', 'GET', '/dict/item/findAllByEnable', '字典项', b'1', b'1', '字典项 获取启用的字典项列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974688, 'UserInfoController#updatePhone', '修改手机号', 'POST', '/user/updatePhone', '用户管理', b'1', b'1', '用户管理 修改手机号', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974689, 'DynamicFormController#delete', '删除', 'DELETE', '/dynamic/form/delete', '动态表单', b'1', b'1', '动态表单 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974690, 'TestController#lock2', '锁测试2', 'GET', '/test/lock2', '测试', b'1', b'1', '测试 锁测试2', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974691, 'PayCloseRecordController#findById', '查询单条', 'GET', '/record/close/findById', '支付订单关闭记录', b'1', b'1', '支付订单关闭记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974692, 'WeChatPayConfigController#update', '更新', 'POST', '/wechat/pay/config/update', '微信支付配置', b'1', b'1', '微信支付配置 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974693, 'UserRoleController#findRolesByUser', '根据用户ID获取到角色集合', 'GET', '/user/role/findRolesByUser', '用户角色管理', b'1', b'1', '用户角色管理 根据用户ID获取到角色集合', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974694, 'WechatNoticeConfigController#update', '更新微信消息通知配置', 'POST', '/wx/notice/update', '微信消息通知配置', b'1', b'1', '微信消息通知配置 更新微信消息通知配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974695, 'WecomRobotConfigController#add', '新增机器人配置', 'POST', '/wecom/robot/config/add', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 新增机器人配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974696, 'PermMenuController#menuTree', '获取菜单树', 'GET', '/perm/menu/menuTree', '菜单和权限码', b'1', b'1', '菜单和权限码 获取菜单树', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974697, 'DataResultController#add', '新建', 'POST', '/data/result/add', 'SQL查询', b'1', b'1', 'SQL查询 新建', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974698, 'UserAdminController#unlock', '解锁用户', 'POST', '/user/admin/unlock', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 解锁用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974699, 'DynamicFormController#page', '分页查询', 'GET', '/dynamic/form/page', '动态表单', b'1', b'1', '动态表单 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974700, 'UniPayController#simpleRefund', '简单退款', 'POST', '/unipay/simpleRefund', '统一支付接口', b'1', b'1', '统一支付接口 简单退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974701, 'DynamicDataSourceController#testConnection', '测试连接(根据参数)', 'POST', '/dynamic/source/testConnection', '动态数据源管理', b'1', b'1', '动态数据源管理 测试连接(根据参数)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974702, 'SystemParamController#update', '更新', 'POST', '/system/param/update', '系统参数', b'1', b'1', '系统参数 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974703, 'ForwardH5Controller#toH5', 'toH5', 'GET', '/h5/', 'ForwardH5Controller', b'1', b'1', 'ForwardH5Controller toH5', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974704, 'OpenApiWebMvcResource#openapiYaml', 'openapiYaml', 'GET', '/v3/api-docs.yaml', 'OpenApiWebMvcResource', b'1', b'1', 'OpenApiWebMvcResource openapiYaml', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974705, 'SmsChannelConfigController#add', '添加', 'POST', '/sms/config/add', '短信渠道配置', b'1', b'1', '短信渠道配置 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974706, 'DataVersionLogController#findById', '获取', 'GET', '/log/dataVersion/findById', '数据版本日志', b'1', b'1', '数据版本日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974707, 'MailConfigController#add', '增加新邮箱配置', 'POST', '/mail/config/add', '邮箱配置', b'1', b'1', '邮箱配置 增加新邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974708, 'UserInfoController#updateBaseInfo', '修改用户基础信息', 'POST', '/user/updateBaseInfo', '用户管理', b'1', b'1', '用户管理 修改用户基础信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974709, 'UserInfoController#bindPhone', '绑定手机', 'POST', '/user/bindPhone', '用户管理', b'1', b'1', '用户管理 绑定手机', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974710, 'NcDemoController#sendImageNotice', '企微图片消息测试', 'POST', '/nc/test/sendImageNotice', 'nc测试', b'1', b'1', 'nc测试 企微图片消息测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974711, 'PermPathController#batchUpdateEnable', '批量更新状态', 'POST', '/perm/path/batchUpdateEnable', '请求权限管理', b'1', b'1', '请求权限管理 批量更新状态', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974713, 'WeChatPortalController#post', 'post', 'POST', '/wechat/portal', '微信接入入口', b'1', b'1', '微信接入入口 post', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974714, 'UniPayController#simplePay', '简单下单', 'POST', '/unipay/simplePay', '统一支付接口', b'1', b'1', '统一支付接口 简单下单', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974715, 'SmsTemplateController#findAll', '查询所有', 'GET', '/sms/template/findAll', '短信模板配置', b'1', b'1', '短信模板配置 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974716, 'MessageTemplateController#existsByCode', '编码是否被使用', 'GET', '/message/template/existsByCode', '消息模板', b'1', b'1', '消息模板 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974717, 'MailConfigController#updateMailConfig', '更新邮箱配置', 'POST', '/mail/config/update', '邮箱配置', b'1', b'1', '邮箱配置 更新邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974718, 'UserInfoController#updatePassword', '修改密码', 'POST', '/user/updatePassword', '用户管理', b'1', b'1', '用户管理 修改密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974719, 'DictionaryItemController#existsByCode', '编码是否被使用', 'GET', '/dict/item/existsByCode', '字典项', b'1', b'1', '字典项 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974720, 'SmsChannelConfigController#update', '修改', 'POST', '/sms/config/update', '短信渠道配置', b'1', b'1', '短信渠道配置 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974721, 'DataRoleController#existsByName', '名称是否被使用(不包含自己)', 'GET', '/data/role/existsByNameNotId', '数据角色配置', b'1', b'1', '数据角色配置 名称是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974722, 'DeptController#add', '添加', 'POST', '/dept/add', '部门管理', b'1', b'1', '部门管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974723, 'FIleUpLoadController#local', '上传', 'POST', '/file/upload', '文件上传', b'1', b'1', '文件上传 上传', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974724, 'PermPathController#findById', '获取详情', 'GET', '/perm/path/findById', '请求权限管理', b'1', b'1', '请求权限管理 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974725, 'DeptController#delete', '普通删除', 'DELETE', '/dept/delete', '部门管理', b'1', b'1', '部门管理 普通删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974726, 'CashierController#wxAuthCallback', '微信授权回调页面', 'GET', '/demo/cashier/wxAuthCallback', '结算台演示', b'1', b'1', '结算台演示 微信授权回调页面', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974727, 'DataResultController#update', '修改', 'POST', '/data/result/update', 'SQL查询', b'1', b'1', 'SQL查询 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974728, 'UserAdminController#getByEmail', '根据邮箱查询用户', 'GET', '/user/admin/getByEmail', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据邮箱查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974729, 'LoginTypeController#findAll', '查询所有的登录方式', 'GET', '/loginType/findAll', '登录方式管理', b'1', b'1', '登录方式管理 查询所有的登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974730, 'PayRepairRecordController#findById', '查询单条', 'GET', '/record/repair/findById', '支付修复记录', b'1', b'1', '支付修复记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974731, 'UserAdminController#restartPasswordBatch', '批量重置密码', 'POST', '/user/admin/restartPasswordBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974732, 'UserInfoController#findUsernameByPhoneCaptcha', '根据手机验证码查询账号', 'GET', '/user/findUsernameByPhoneCaptcha', '用户管理', b'1', b'1', '用户管理 根据手机验证码查询账号', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974733, 'DynamicFormController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dynamic/form/existsByCodeNotId', '动态表单', b'1', b'1', '动态表单 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974734, 'ChinaWordController#add', '添加', 'POST', '/chinaword/add', '敏感词管理', b'1', b'1', '敏感词管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974735, 'LoginTypeController#delete', '删除登录方式', 'DELETE', '/loginType/delete', '登录方式管理', b'1', b'1', '登录方式管理 删除登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974736, 'DataVersionLogController#page', '分页', 'GET', '/log/dataVersion/page', '数据版本日志', b'1', b'1', '数据版本日志 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974737, 'AggregateController#createUrl', '创建聚合支付码', 'POST', '/demo/aggregate/createUrl', '聚合支付', b'1', b'1', '聚合支付 创建聚合支付码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974738, 'MailConfigController#findById', '通过 id 获取指定邮箱配置', 'GET', '/mail/config/findById', '邮箱配置', b'1', b'1', '邮箱配置 通过 id 获取指定邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974739, 'UserAssistController#validateCurrentChangeEmailCaptcha', '验证当前用户发送更改邮箱验证码', 'GET', '/user/validateCurrentChangeEmailCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证当前用户发送更改邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974740, 'ClientController#existsByCode', '编码是否被使用', 'GET', '/client/existsByCode', '认证终端', b'1', b'1', '认证终端 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974741, 'UserAdminController#findById', '根据用户id查询用户', 'GET', '/user/admin/findById', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据用户id查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974742, 'PayRefundOrderController#page', '分页查询', 'GET', '/order/refund/page', '支付退款控制器', b'1', b'1', '支付退款控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974743, 'RoleMenuController#findTreeByRole', '获取当前角色下可见的菜单和权限码树(分配时用)', 'GET', '/role/menu/findTreeByRole', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取当前角色下可见的菜单和权限码树(分配时用)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974744, 'WeChatPayConfigController#findPayWays', '微信支持支付方式', 'GET', '/wechat/pay/config/findPayWays', '微信支付配置', b'1', b'1', '微信支付配置 微信支持支付方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974745, 'AuthAssistController#sendSmsCaptcha', '发送短信验证码', 'POST', '/auth/sendSmsCaptcha', '认证支撑接口', b'1', b'1', '认证支撑接口 发送短信验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974746, 'WeChatPayConfigController#toBase64', '将文件转换成base64', 'POST', '/wechat/pay/config/toBase64', '微信支付配置', b'1', b'1', '微信支付配置 将文件转换成base64', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974747, 'MailConfigController#setUpActivity', '设置启用的邮箱配置', 'POST', '/mail/config/setUpActivity', '邮箱配置', b'1', b'1', '邮箱配置 设置启用的邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974748, 'UserDeptController#findIdsByUser', '根据用户ID获取到部门id集合', 'GET', '/user/dept/findIdsByUser', '用户部门关联关系', b'1', b'1', '用户部门关联关系 根据用户ID获取到部门id集合', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974749, 'OperateLogController#findById', '获取', 'GET', '/log/operate/findById', '操作日志', b'1', b'1', '操作日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974750, 'UserAdminController#getByPhone', '根据手机号查询用户', 'GET', '/user/admin/getByPhone', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据手机号查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974751, 'UserThirdController#getThirdBindInfo', '获取绑定详情', 'GET', '/user/third/getThirdBindInfo', '用户三方登录管理', b'1', b'1', '用户三方登录管理 获取绑定详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974752, 'DynamicDataSourceController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dynamic/source/existsByCodeNotId', '动态数据源管理', b'1', b'1', '动态数据源管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974753, 'SmsTemplateController#update', '修改', 'POST', '/sms/template/update', '短信模板配置', b'1', b'1', '短信模板配置 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974754, 'RoleController#add', '添加角色(返回角色对象)', 'POST', '/role/add', '角色管理', b'1', b'1', '角色管理 添加角色(返回角色对象)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974755, 'WechatNoticeConfigController#getConfig', '获取微信消息通知配置', 'GET', '/wx/notice/getConfig', '微信消息通知配置', b'1', b'1', '微信消息通知配置 获取微信消息通知配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974756, 'LoginLogController#findById', '获取', 'GET', '/log/login/findById', '登录日志', b'1', b'1', '登录日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974757, 'UserRoleController#saveAssign', '给用户分配角色', 'POST', '/user/role/saveAssign', '用户角色管理', b'1', b'1', '用户角色管理 给用户分配角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974758, 'DictionaryController#findById', '根据id获取', 'GET', '/dict/findById', '字典', b'1', b'1', '字典 根据id获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974759, 'PermPathController#findAll', '权限列表', 'GET', '/perm/path/findAll', '请求权限管理', b'1', b'1', '请求权限管理 权限列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974760, 'DingRobotConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/ding/robot/config/existsByCodeNotId', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974761, 'GeneralTemplateController#deleteBatch', '批量删除', 'DELETE', '/general/template/deleteBatch', '通用模板管理', b'1', b'1', '通用模板管理 批量删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974762, 'UserInfoController#forgetPasswordByEmail', '通过邮箱重置密码', 'POST', '/user/forgetPasswordByEmail', '用户管理', b'1', b'1', '用户管理 通过邮箱重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974763, 'GeneralTemplateController#update', '修改', 'POST', '/general/template/update', '通用模板管理', b'1', b'1', '通用模板管理 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974764, 'DictionaryItemController#update', '修改字典项(返回字典项对象)', 'POST', '/dict/item/update', '字典项', b'1', b'1', '字典项 修改字典项(返回字典项对象)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974765, 'SystemParamController#add', '添加', 'POST', '/system/param/add', '系统参数', b'1', b'1', '系统参数 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974766, 'BaseApiController#authEcho', '回声测试(必须要进行登录)', 'GET', '/auth/echo', '系统基础接口', b'1', b'1', '系统基础接口 回声测试(必须要进行登录)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974767, 'DatabaseTableController#findColumnByTableName', '获取数据表行信息', 'GET', '/gen/table/findColumnByTableName', '数据库表信息', b'1', b'1', '数据库表信息 获取数据表行信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974768, 'DictionaryItemController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dict/item/existsByCodeNotId', '字典项', b'1', b'1', '字典项 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974769, 'PayApiConfigController#findAll', '获取全部', 'GET', '/pay/api/config/findAll', '支付接口配置', b'1', b'1', '支付接口配置 获取全部', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974770, 'ChinaWordController#verify', '测试敏感词效果', 'POST', '/chinaword/verify', '敏感词管理', b'1', b'1', '敏感词管理 测试敏感词效果', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974771, 'DataRoleController#page', '分页', 'GET', '/data/role/page', '数据角色配置', b'1', b'1', '数据角色配置 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974772, 'UserInfoController#getUserSecurityInfo', '查询用户安全信息', 'GET', '/user/getUserSecurityInfo', '用户管理', b'1', b'1', '用户管理 查询用户安全信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974773, 'ChinaRegionController#findAllProvinceAndCityAndArea', ' 获取省市区县三级联动列表', 'GET', '/china/region/findAllProvinceAndCityAndArea', '中国行政区划', b'1', b'1', '中国行政区划 获取省市区县三级联动列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974774, 'DictionaryItemController#pageByDictionaryId', '分页查询指定字典下的字典项', 'GET', '/dict/item/pageByDictionaryId', '字典项', b'1', b'1', '字典项 分页查询指定字典下的字典项', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974775, 'WeChatMediaController#pageNews', '图文素材分页', 'GET', '/wechat/media/pageNews', '微信素材管理', b'1', b'1', '微信素材管理 图文素材分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974776, 'PermMenuController#resourceList', '资源(权限码)列表', 'GET', '/perm/menu/resourceList', '菜单和权限码', b'1', b'1', '菜单和权限码 资源(权限码)列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974777, 'WeChatPayConfigController#getConfig', '获取配置', 'GET', '/wechat/pay/config/getConfig', '微信支付配置', b'1', b'1', '微信支付配置 获取配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974778, 'AlipayConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/alipay/config/findPayWays', '支付宝配置', b'1', b'1', '支付宝配置 支付宝支持支付方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974779, 'PayRefundOrderController#findChannelById', '查询通道退款订单详情', 'GET', '/order/refund/findChannelById', '支付退款控制器', b'1', b'1', '支付退款控制器 查询通道退款订单详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974780, 'UserInfoController#forgetPasswordByPhone', '通过手机号重置密码', 'POST', '/user/forgetPasswordByPhone', '用户管理', b'1', b'1', '用户管理 通过手机号重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974781, 'DataRoleController#saveDeptAssign', '保存关联部门', 'POST', '/data/role/saveDeptAssign', '数据角色配置', b'1', b'1', '数据角色配置 保存关联部门', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974782, 'PayOrderController#getExtraById', '查询支付订单扩展信息', 'GET', '/order/pay/getExtraById', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付订单扩展信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974783, 'UserInfoController#existsPhone', '手机号是否被使用(不包含自己)', 'GET', '/user/existsPhoneNotId', '用户管理', b'1', b'1', '用户管理 手机号是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974784, 'LoginTypeController#add', '添加登录方式', 'POST', '/loginType/add', '登录方式管理', b'1', b'1', '登录方式管理 添加登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974785, 'PermMenuController#delete', '删除', 'DELETE', '/perm/menu/delete', '菜单和权限码', b'1', b'1', '菜单和权限码 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974786, 'RoleController#findAll', '查询所有的角色', 'GET', '/role/findAll', '角色管理', b'1', b'1', '角色管理 查询所有的角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974787, 'MessageTemplateController#findById', '获取详情', 'GET', '/message/template/findById', '消息模板', b'1', b'1', '消息模板 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974788, 'DataResultController#page', '分页查询', 'GET', '/data/result/page', 'SQL查询', b'1', b'1', 'SQL查询 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974789, 'NcDemoController#sendWeComMsg', '企微消息测试', 'POST', '/nc/test/sendWeComMsg', 'nc测试', b'1', b'1', 'nc测试 企微消息测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974790, 'DictionaryController#existsByCode', '编码是否被使用', 'GET', '/dict/existsByCode', '字典', b'1', b'1', '字典 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974791, 'UserInfoController#getLoginAfterUserInfo', '登录后获取用户信息', 'GET', '/user/getLoginAfterUserInfo', '用户管理', b'1', b'1', '用户管理 登录后获取用户信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974792, 'UserInfoController#bindEmail', '绑定邮箱', 'POST', '/user/bindEmail', '用户管理', b'1', b'1', '用户管理 绑定邮箱', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974793, 'OnlineUserController#pageByLogin', '登录用户分页', 'GET', '/online/user/pageByLogin', '在线用户', b'1', b'1', '在线用户 登录用户分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974794, 'PasswordSecurityConfigController#addOrUpdate', '新增或添加密码安全配置', 'POST', '/security/password/addOrUpdate', '密码安全策略', b'1', b'1', '密码安全策略 新增或添加密码安全配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974795, 'UserInfoController#getUserBaseInfo', '查询用户基础信息', 'GET', '/user/getUserBaseInfo', '用户管理', b'1', b'1', '用户管理 查询用户基础信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974796, 'DataRoleController#findUsersByDataRoleId', '获取关联的用户列表', 'GET', '/data/role/findUsersByDataRoleId', '数据角色配置', b'1', b'1', '数据角色配置 获取关联的用户列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974797, 'SiteMessageController#findById', '消息详情', 'GET', '/site/message/findById', '站内信', b'1', b'1', '站内信 消息详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168960, 'RolePathController#findPathsByRole', '获取当前用户角色下可见的请求权限列表(分配时用)', 'GET', '/role/path/findPathsByRole', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 获取当前用户角色下可见的请求权限列表(分配时用)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168961, 'UserAssistController#sendPhoneChangeCaptcha', '发送更改/绑定手机号验证码', 'POST', '/user/sendPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送更改/绑定手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168962, 'WeChatMenuController#findAll', '查询所有', 'GET', '/wechat/menu/findAll', '微信菜单管理', b'1', b'1', '微信菜单管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168963, 'DictionaryItemController#findByDictionaryId', '查询指定字典ID下的所有字典项', 'GET', '/dict/item/findByDictionaryId', '字典项', b'1', b'1', '字典项 查询指定字典ID下的所有字典项', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168964, 'SystemParamController#existsByKeyNotId', '判断编码是否存在(不包含自己)', 'GET', '/system/param/existsByKeyNotId', '系统参数', b'1', b'1', '系统参数 判断编码是否存在(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168965, 'MessageTemplateController#delete', '删除', 'DELETE', '/message/template/delete', '消息模板', b'1', b'1', '消息模板 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168966, 'WeChatMenuController#update', '修改', 'POST', '/wechat/menu/update', '微信菜单管理', b'1', b'1', '微信菜单管理 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168967, 'ChinaWordController#getTemplate', '获取模板', 'GET', '/chinaword/getTemplate', '敏感词管理', b'1', b'1', '敏感词管理 获取模板', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168968, 'DynamicFormController#findById', '通过ID查询', 'GET', '/dynamic/form/findById', '动态表单', b'1', b'1', '动态表单 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168969, 'SmsChannelConfigController#findByCode', '通过Code查询', 'GET', '/sms/config/findByCode', '短信渠道配置', b'1', b'1', '短信渠道配置 通过Code查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168970, 'UserInfoController#existsPhone', '手机号是否被使用', 'GET', '/user/existsPhone', '用户管理', b'1', b'1', '用户管理 手机号是否被使用', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168971, 'DataRoleController#getDeptIds', '获取关联部门id', 'GET', '/data/role/getDeptIds', '数据角色配置', b'1', b'1', '数据角色配置 获取关联部门id', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168972, 'PasswordSecurityConfigController#getDefault', '获取配置', 'GET', '/security/password/getDefault', '密码安全策略', b'1', b'1', '密码安全策略 获取配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168973, 'ClientController#update', '修改', 'POST', '/client/update', '认证终端', b'1', b'1', '认证终端 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168974, 'AggregateController#wxAuthCallback', '微信授权回调页面', 'GET', '/demo/aggregate/wxAuthCallback', '聚合支付', b'1', b'1', '聚合支付 微信授权回调页面', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168975, 'LoginTypeController#findById', '通过ID查询登录方式', 'GET', '/loginType/findById', '登录方式管理', b'1', b'1', '登录方式管理 通过ID查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168976, 'DingRobotConfigController#findById', '获取详情', 'GET', '/ding/robot/config/findById', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 获取详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168977, 'SiteMessageController#pageBySender', '发送消息分页', 'GET', '/site/message/pageBySender', '站内信', b'1', b'1', '站内信 发送消息分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168978, 'ThirdLoginController#toLoginUrl', '跳转到登陆页', 'GET', '/auth/third/toLoginUrl/{loginType}', '三方登录', b'1', b'1', '三方登录 跳转到登陆页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168979, 'RoleMenuController#save', '保存请求权限关系', 'POST', '/role/menu/save', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 保存请求权限关系', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168980, 'PayWayInfoController#findById', '根据ID获取', 'GET', '/pay/way/info/findById', '支付方式管理', b'1', b'1', '支付方式管理 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168981, 'UserInfoController#register', '注册账号', 'POST', '/user/register', '用户管理', b'1', b'1', '用户管理 注册账号', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168982, 'LoginTypeController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/loginType/existsByCodeNotId', '登录方式管理', b'1', b'1', '登录方式管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168983, 'ChinaWordController#page', '分页查询', 'GET', '/chinaword/page', '敏感词管理', b'1', b'1', '敏感词管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168984, 'DatabaseTableController#findAll', '表列表', 'GET', '/gen/table/findAll', '数据库表信息', b'1', b'1', '数据库表信息 表列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168985, 'UniPayAssistController#getWxAccessToken', '获取微信AccessToken数据', 'POST', '/unipay/assist/getWxAccessToken', '支付支撑接口', b'1', b'1', '支付支撑接口 获取微信AccessToken数据', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168986, 'WeChatTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/wechat/template/existsByCodeNotId', '微信模板消息', b'1', b'1', '微信模板消息 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168987, 'DynamicDataSourceController#addDynamicDataSourceById', '根据id进行添加到连接池中', 'POST', '/dynamic/source/addDynamicDataSourceById', '动态数据源管理', b'1', b'1', '动态数据源管理 根据id进行添加到连接池中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168988, 'LoginLogController#deleteByDay', '清除指定天数之前的日志', 'DELETE', '/log/login/deleteByDay', '登录日志', b'1', b'1', '登录日志 清除指定天数之前的日志', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168989, 'ClientController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/client/existsByCodeNotId', '认证终端', b'1', b'1', '认证终端 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168990, 'UniQueryController#queryRefundOrder', '查询退款订单', 'POST', '/uni/query/refundOrder', '统一查询接口', b'1', b'1', '统一查询接口 查询退款订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168991, 'SiteMessageController#listByReceiveNotRead', '小程序获取未读的接收消息标题列表', 'GET', '/site/message/listByReceiveNotRead', '站内信', b'1', b'1', '站内信 小程序获取未读的接收消息标题列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168992, 'WeChatMenuController#add', '添加', 'POST', '/wechat/menu/add', '微信菜单管理', b'1', b'1', '微信菜单管理 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168993, 'PasswordSecurityConfigController#check', '登录后检查密码相关的情况', 'GET', '/security/password/check', '密码安全策略', b'1', b'1', '密码安全策略 登录后检查密码相关的情况', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168994, 'PayOrderController#syncById', '同步支付状态', 'POST', '/order/pay/syncById', '支付订单控制器', b'1', b'1', '支付订单控制器 同步支付状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168995, 'GeneralTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/general/template/existsByCodeNotId', '通用模板管理', b'1', b'1', '通用模板管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168996, 'LoginTypeController#page', '分页查询登录方式', 'GET', '/loginType/page', '登录方式管理', b'1', b'1', '登录方式管理 分页查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168997, 'AggregateController#aliH5Pay', '支付宝通过聚合支付码发起支付', 'POST', '/demo/aggregate/aliH5Pay', '聚合支付', b'1', b'1', '聚合支付 支付宝通过聚合支付码发起支付', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168998, 'QuartzJobLogController#page', '分页', 'GET', '/quartz/log/page', '定时任务执行日志', b'1', b'1', '定时任务执行日志 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168999, 'PayOrderController#close', '关闭支付记录', 'POST', '/order/pay/close', '支付订单控制器', b'1', b'1', '支付订单控制器 关闭支付记录', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169000, 'DataRoleController#saveUserAssign', '保存数据角色关联用户权限', 'POST', '/data/role/saveUserAssign', '数据角色配置', b'1', b'1', '数据角色配置 保存数据角色关联用户权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169001, 'DictionaryItemController#add', '添加字典项(返回字典项对象)', 'POST', '/dict/item/add', '字典项', b'1', b'1', '字典项 添加字典项(返回字典项对象)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169002, 'QuartzJobController#update', '更新', 'POST', '/quartz/update', '定时任务', b'1', b'1', '定时任务 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169003, 'MailConfigController#delete', '删除', 'DELETE', '/mail/config/delete', '邮箱配置', b'1', b'1', '邮箱配置 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169004, 'UserAdminController#banBatch', '批量封禁用户', 'POST', '/user/admin/banBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量封禁用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169005, 'FIleUpLoadController#getFilePreviewUrl', '获取文件预览地址(流量会经过后端)', 'GET', '/file/getFilePreviewUrl', '文件上传', b'1', b'1', '文件上传 获取文件预览地址(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169006, 'DictionaryController#delete', '根据id删除', 'DELETE', '/dict/delete', '字典', b'1', b'1', '字典 根据id删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169007, 'WeChatQrLoginController#getStatus', '获取扫码状态', 'GET', '/token/wechat/qr/getStatus', '微信扫码登录', b'1', b'1', '微信扫码登录 获取扫码状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169008, 'PermPathController#add', '添加权限', 'POST', '/perm/path/add', '请求权限管理', b'1', b'1', '请求权限管理 添加权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169009, 'ChinaWordController#refresh', '刷新缓存', 'POST', '/chinaword/refresh', '敏感词管理', b'1', b'1', '敏感词管理 刷新缓存', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169010, 'AlipayConfigController#getConfig', '获取配置', 'GET', '/alipay/config/getConfig', '支付宝配置', b'1', b'1', '支付宝配置 获取配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169011, 'PayCallbackController#wechatPayNotify', '微信支付信息回调', 'POST', '/callback/pay/wechat', '支付通道信息回调', b'1', b'1', '支付通道信息回调 微信支付信息回调', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169012, 'DataResultController#test', '测试SQL解析和执行', 'POST', '/data/result/test', 'SQL查询', b'1', b'1', 'SQL查询 测试SQL解析和执行', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169013, 'SiteMessageController#delete', '删除消息', 'DELETE', '/site/message/delete', '站内信', b'1', b'1', '站内信 删除消息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169014, 'LoginTypeController#findByCode', '通过code查询登录方式', 'GET', '/loginType/findByCode', '登录方式管理', b'1', b'1', '登录方式管理 通过code查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169015, 'GeneralTemplateController#delete', '删除', 'DELETE', '/general/template/delete', '通用模板管理', b'1', b'1', '通用模板管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169016, 'PayReconcileOrderController#findById', '订单详情', 'GET', '/order/reconcile/findById', '对账控制器', b'1', b'1', '对账控制器 订单详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169017, 'DynamicDataSourceController#testConnectionById', '测试连接(根据主键ID)', 'GET', '/dynamic/source/testConnectionById', '动态数据源管理', b'1', b'1', '动态数据源管理 测试连接(根据主键ID)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169018, 'SiteMessageController#send', '发送站内信', 'POST', '/site/message/send', '站内信', b'1', b'1', '站内信 发送站内信', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169019, 'SiteMessageController#pageByReceive', '接收消息分页', 'GET', '/site/message/pageByReceive', '站内信', b'1', b'1', '站内信 接收消息分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169020, 'NcDemoController#sendDingFileMsg', '钉钉文件消息测试', 'POST', '/nc/test/sendDingFileMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉文件消息测试', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169021, 'MultipleOpenApiWebMvcResource#openapiYaml', 'openapiYaml', 'GET', '/v3/api-docs.yaml/{group}', 'MultipleOpenApiWebMvcResource', b'1', b'1', 'MultipleOpenApiWebMvcResource openapiYaml', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169022, 'RolePathController#save', '保存角色请求权限关联关系', 'POST', '/role/path/save', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 保存角色请求权限关联关系', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169023, 'WeChatMenuController#importMenu', '导入微信自定义菜单到系统中', 'POST', '/wechat/menu/importMenu', '微信菜单管理', b'1', b'1', '微信菜单管理 导入微信自定义菜单到系统中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169024, 'ChinaWordController#findById', '通过ID查询', 'GET', '/chinaword/findById', '敏感词管理', b'1', b'1', '敏感词管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169025, 'RoleMenuController#findPermissionIdsByRole', '获取当前角色下关联权限id集合(包含权限码和菜单)', 'GET', '/role/menu/findPermissionIdsByRole', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取当前角色下关联权限id集合(包含权限码和菜单)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169026, 'DictionaryItemController#findById', '根据字典项ID查询', 'GET', '/dict/item/findById', '字典项', b'1', b'1', '字典项 根据字典项ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169027, 'UserRoleController#saveAssignBatch', '给用户分配角色(批量)', 'POST', '/user/role/saveAssignBatch', '用户角色管理', b'1', b'1', '用户角色管理 给用户分配角色(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169028, 'SmsTemplateController#page', '分页查询', 'GET', '/sms/template/page', '短信模板配置', b'1', b'1', '短信模板配置 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169029, 'DataResultController#querySql', '执行SQL查询语句', 'POST', '/data/result/querySql', 'SQL查询', b'1', b'1', 'SQL查询 执行SQL查询语句', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169030, 'PayRefundOrderController#findById', '查询单条', 'GET', '/order/refund/findById', '支付退款控制器', b'1', b'1', '支付退款控制器 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169031, 'UserAssistController#sendCurrentEmailChangeCaptcha', '给当前用户发送更改邮箱验证码', 'POST', '/user/sendCurrentEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 给当前用户发送更改邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169032, 'PayCallbackRecordController#page', '分页查询', 'GET', '/record/callback/page', '支付回调信息记录', b'1', b'1', '支付回调信息记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169033, 'FIleUpLoadController#getFilePreviewUrlPrefix', '获取文件预览地址前缀', 'GET', '/file/getFilePreviewUrlPrefix', '文件上传', b'1', b'1', '文件上传 获取文件预览地址前缀', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169034, 'AlipayConfigController#readPem', '读取证书文件内容', 'POST', '/alipay/config/readPem', '支付宝配置', b'1', b'1', '支付宝配置 读取证书文件内容', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169035, 'DynamicFormController#findAll', '查询所有', 'GET', '/dynamic/form/findAll', '动态表单', b'1', b'1', '动态表单 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169036, 'PermMenuController#existsByPermCode', '编码是否被使用(不包含自己)', 'GET', '/perm/menu/existsByPermCodeNotId', '菜单和权限码', b'1', b'1', '菜单和权限码 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169037, 'DataRoleController#update', '更新', 'POST', '/data/role/update', '数据角色配置', b'1', b'1', '数据角色配置 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169038, 'CashierController#getPayEnv', '获取支付环境', 'GET', '/demo/cashier/getPayEnv', '结算台演示', b'1', b'1', '结算台演示 获取支付环境', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169039, 'PermPathController#delete', '删除权限', 'DELETE', '/perm/path/delete', '请求权限管理', b'1', b'1', '请求权限管理 删除权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169040, 'AggregateController#getWxJsapiPay', '获取微信支付调起Jsapi支付的信息', 'POST', '/demo/aggregate/getWxJsapiPay', '聚合支付', b'1', b'1', '聚合支付 获取微信支付调起Jsapi支付的信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169041, 'PayReconcileOrderController#downAndSave', '手动触发对账文件下载', 'POST', '/order/reconcile/downAndSave', '对账控制器', b'1', b'1', '对账控制器 手动触发对账文件下载', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169042, 'QuartzJobController#start', '启动', 'POST', '/quartz/start', '定时任务', b'1', b'1', '定时任务 启动', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169043, 'UserAssistController#validateEmailCaptcha', '验证更改/绑定邮箱验证码', 'GET', '/user/validateEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证更改/绑定邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169044, 'DynamicDataSourceController#delete', '删除', 'DELETE', '/dynamic/source/delete', '动态数据源管理', b'1', b'1', '动态数据源管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169045, 'SystemParamController#findById', '获取单条', 'GET', '/system/param/findById', '系统参数', b'1', b'1', '系统参数 获取单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169046, 'WeChatMenuController#publish', '发布菜单', 'POST', '/wechat/menu/publish', '微信菜单管理', b'1', b'1', '微信菜单管理 发布菜单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169047, 'PayCallbackController#aliPayNotify', '支付宝信息回调', 'POST', '/callback/pay/alipay', '支付通道信息回调', b'1', b'1', '支付通道信息回调 支付宝信息回调', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169048, 'DynamicDataSourceController#removeDataSourceByKey', '从数据源列表中删除指定数据源', 'DELETE', '/dynamic/source/removeDataSourceByKey', '动态数据源管理', b'1', b'1', '动态数据源管理 从数据源列表中删除指定数据源', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169049, 'QuartzJobController#execute', '立即执行', 'POST', '/quartz/execute', '定时任务', b'1', b'1', '定时任务 立即执行', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169050, 'DynamicDataSourceController#page', '分页查询', 'GET', '/dynamic/source/page', '动态数据源管理', b'1', b'1', '动态数据源管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169051, 'DictionaryController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dict/existsByCodeNotId', '字典', b'1', b'1', '字典 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169052, 'PayRepairRecordController#page', '分页查询', 'GET', '/record/repair/page', '支付修复记录', b'1', b'1', '支付修复记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169053, 'UserDeptController#saveAssignBatch', '给用户分配部门(批量)', 'POST', '/user/dept/saveAssignBatch', '用户部门关联关系', b'1', b'1', '用户部门关联关系 给用户分配部门(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169054, 'PayReconcileOrderController#create', '手动创建对账订单', 'POST', '/order/reconcile/create', '对账控制器', b'1', b'1', '对账控制器 手动创建支付订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169055, 'UserAdminController#restartPassword', '重置密码', 'POST', '/user/admin/restartPassword', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 重置密码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169056, 'CodeGeneratorController#codeGenPreview', '预览生成代码', 'POST', '/gen/code/codeGenPreview', '代码生成', b'1', b'1', '代码生成 预览生成代码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169057, 'NcDemoController#sendDingImageMsg', '钉钉图片消息测试', 'POST', '/nc/test/sendDingImageMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉图片消息测试', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169058, 'TestController#lock1', '锁测试1', 'GET', '/test/lock1', '测试', b'1', b'1', '测试 锁测试1', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169059, 'ForwardFrontController#toH5', 'toH5', 'GET', '/front/', 'ForwardFrontController', b'1', b'1', 'ForwardFrontController toH5', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169060, 'FIleUpLoadController#delete', '删除', 'DELETE', '/file/delete', '文件上传', b'1', b'1', '文件上传 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169061, 'OperateLogController#deleteByDay', '清除指定天数的日志', 'DELETE', '/log/operate/deleteByDay', '操作日志', b'1', b'1', '操作日志 清除指定天数的日志', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169062, 'AggregateController#barCodePay', '通过付款码发起支付', 'POST', '/demo/aggregate/barCodePay', '聚合支付', b'1', b'1', '聚合支付 通过付款码发起支付', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169063, 'SmsChannelConfigController#findAll', '查询所有', 'GET', '/sms/config/findAll', '短信渠道配置', b'1', b'1', '短信渠道配置 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169064, 'MessageTemplateController#update', '更新', 'POST', '/message/template/update', '消息模板', b'1', b'1', '消息模板 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169065, 'DingRobotConfigController#page', '分页', 'GET', '/ding/robot/config/page', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169066, 'RoleController#findById', '通过ID查询角色', 'GET', '/role/findById', '角色管理', b'1', b'1', '角色管理 通过ID查询角色', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169067, 'FIleUpLoadController#download', '下载文件(流量会经过后端)', 'GET', '/file/download/{id}', '文件上传', b'1', b'1', '文件上传 下载文件(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169068, 'RoleController#tree', '角色树', 'GET', '/role/tree', '角色管理', b'1', b'1', '角色管理 角色树', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169069, 'RoleController#dropdown', '角色下拉框', 'GET', '/role/dropdown', '角色管理', b'1', b'1', '角色管理 角色下拉框', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169070, 'WeChatPortalController#auth', 'auth', 'GET', '/wechat/portal', '微信接入入口', b'1', b'1', '微信接入入口 auth', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169071, 'UserAssistController#sendEmailForgetCaptcha', '发送找回密码邮箱验证码', 'POST', '/user/sendEmailForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送找回密码邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169072, 'DeptController#tree', '树状展示', 'GET', '/dept/tree', '部门管理', b'1', b'1', '部门管理 树状展示', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169073, 'QuartzJobController#judgeJobClass', '判断是否是定时任务类', 'GET', '/quartz/judgeJobClass', '定时任务', b'1', b'1', '定时任务 判断是否是定时任务类', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169075, 'WeChatArticleController#page', '分页', 'GET', '/wechat/article/page', '微信文章管理', b'1', b'1', '微信文章管理 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169076, 'AggregateController#qrPayPage', '聚合支付扫码跳转中间页', 'GET', '/demo/aggregate/qrPayPage/{code}', '聚合支付', b'1', b'1', '聚合支付 聚合支付扫码跳转中间页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169077, 'UniQueryController#queryPayOrder', '查询支付订单', 'POST', '/uni/query/payOrder', '统一查询接口', b'1', b'1', '统一查询接口 查询支付订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169078, 'ChinaRegionController#findAllProvinceAndCity', '获取省市二级联动列表', 'GET', '/china/region/findAllProvinceAndCity', '中国行政区划', b'1', b'1', '中国行政区划 获取省市二级联动列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169079, 'WeChatMediaController#deleteFile', '删除素材', 'DELETE', '/wechat/media/deleteFile', '微信素材管理', b'1', b'1', '微信素材管理 删除素材', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169080, 'DataRoleController#delete', '删除', 'DELETE', '/data/role/delete', '数据角色配置', b'1', b'1', '数据角色配置 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169081, 'UserDeptController#findAllByUser', '根据用户ID获取到部门集合', 'GET', '/user/dept/findAllByUser', '用户部门关联关系', b'1', b'1', '用户部门关联关系 根据用户ID获取到部门集合', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169082, 'SystemParamController#page', '分页', 'GET', '/system/param/page', '系统参数', b'1', b'1', '系统参数 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169083, 'DynamicDataSourceController#findAllDataSource', '查询当前数据源列表', 'GET', '/dynamic/source/findAllDataSource', '动态数据源管理', b'1', b'1', '动态数据源管理 查询当前数据源列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169084, 'PayChannelConfigController#findById', '根据ID获取', 'GET', '/pay/channel/config/findById', '支付通道信息', b'1', b'1', '支付通道信息 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169085, 'RoleController#delete', '删除角色', 'DELETE', '/role/delete', '角色管理', b'1', b'1', '角色管理 删除角色', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169086, 'PayOrderController#listByChannel', '查询支付订单关联支付通道订单', 'GET', '/order/pay/listByChannel', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付订单关联支付通道订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169087, 'UserDataRoleController#saveAssignBatch', '给用户分配权限(批量)', 'POST', '/user/data/role/saveAssignBatch', '用户数据角色配置', b'1', b'1', '用户数据角色配置 给用户分配权限(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169088, 'DeptController#findById', '获取', 'GET', '/dept/findById', '部门管理', b'1', b'1', '部门管理 获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169089, 'CashierController#getUniCashierUrl', '获取手机收银台链接', 'GET', '/demo/cashier/getUniCashierUrl', '结算台演示', b'1', b'1', '结算台演示 获取手机收银台链接', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169090, 'QuartzJobController#delete', '删除', 'DELETE', '/quartz/delete', '定时任务', b'1', b'1', '定时任务 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169091, 'PermMenuController#update', '修改菜单权限', 'POST', '/perm/menu/update', '菜单和权限码', b'1', b'1', '菜单和权限码 修改菜单权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169092, 'PaySyncRecordController#findById', '查询单条', 'GET', '/record/sync/findById', '支付同步记录控制器', b'1', b'1', '支付同步记录控制器 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169093, 'ChinaWordController#delete', '删除', 'DELETE', '/chinaword/delete', '敏感词管理', b'1', b'1', '敏感词管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169094, 'WeChatMenuController#clearMenu', '清空微信自定义菜单', 'POST', '/wechat/menu/clearMenu', '微信菜单管理', b'1', b'1', '微信菜单管理 清空微信自定义菜单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169095, 'UserDataRoleController#findDataRoleIdByUser', '根据用户ID获取到数据角色Id', 'GET', '/user/data/role/findDataRoleIdByUser', '用户数据角色配置', b'1', b'1', '用户数据角色配置 根据用户ID获取到数据角色Id', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169096, 'UserAssistController#sendEmailChangeCaptcha', '发送更改/绑定邮箱验证码', 'POST', '/user/sendEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送更改/绑定邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169097, 'DataRoleController#deleteUserAssigns', '批量删除数据角色关联用户', 'DELETE', '/data/role/deleteUserAssigns', '数据角色配置', b'1', b'1', '数据角色配置 批量删除数据角色关联用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169098, 'PayReconcileOrderController#page', '订单分页', 'GET', '/order/reconcile/page', '对账控制器', b'1', b'1', '对账控制器 订单分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169099, 'UniPayController#syncRefund', '退款状态同步', 'POST', '/unipay/syncRefund', '统一支付接口', b'1', b'1', '统一支付接口 退款状态同步', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169100, 'WeChatMediaController#pageFile', '非图文素材分页', 'GET', '/wechat/media/pageFile', '微信素材管理', b'1', b'1', '微信素材管理 非图文素材分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169101, 'SystemParamController#findByParamKey', '根据键名获取键值', 'GET', '/system/param/findByParamKey', '系统参数', b'1', b'1', '系统参数 根据键名获取键值', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169102, 'DynamicDataSourceController#existsByDataSourceKey', '是否已经添加到连接池中', 'GET', '/dynamic/source/existsByDataSourceKey', '动态数据源管理', b'1', b'1', '动态数据源管理 是否已经添加到连接池中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169103, 'MessageTemplateController#add', '添加', 'POST', '/message/template/add', '消息模板', b'1', b'1', '消息模板 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169104, 'DataRoleController#existsByCode', '编码是否被使用', 'GET', '/data/role/existsByCode', '数据角色配置', b'1', b'1', '数据角色配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169105, 'DynamicDataSourceController#update', '修改', 'POST', '/dynamic/source/update', '动态数据源管理', b'1', b'1', '动态数据源管理 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169106, 'OperateLogController#page', '分页', 'GET', '/log/operate/page', '操作日志', b'1', b'1', '操作日志 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169107, 'NcDemoController#p1', '企微机器人图片发送', 'POST', '/nc/test/p1', 'nc测试', b'1', b'1', 'nc测试 企微机器人图片发送', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169108, 'PayOrderController#findById', '查询订单详情', 'GET', '/order/pay/findById', '支付订单控制器', b'1', b'1', '支付订单控制器 查询订单详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169109, 'OnlineUserController#page', '分页', 'GET', '/online/user/page', '在线用户', b'1', b'1', '在线用户 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169110, 'RoleController#existsByName', '名称是否被使用(不包含自己)', 'GET', '/role/existsByNameNotId', '角色管理', b'1', b'1', '角色管理 名称是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169111, 'WecomRobotConfigController#page', '分页', 'GET', '/wecom/robot/config/page', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169112, 'DataRoleController#findById', '获取', 'GET', '/data/role/findById', '数据角色配置', b'1', b'1', '数据角色配置 获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169113, 'DataRoleController#findAll', '查询全部', 'GET', '/data/role/findAll', '数据角色配置', b'1', b'1', '数据角色配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169114, 'OpenApiWebMvcResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs', 'OpenApiWebMvcResource', b'1', b'1', 'OpenApiWebMvcResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169115, 'CaptchaController#imgCaptcha', '获取图片验证码', 'POST', '/captcha/imgCaptcha', '验证码服务', b'1', b'1', '验证码服务 获取图片验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169116, 'WecomRobotConfigController#update', '修改机器人配置', 'POST', '/wecom/robot/config/update', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 修改机器人配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169117, 'PlatformConfigController#update', '更新平台配置项', 'POST', '/platform/config/update', '支付平台配置控制器', b'1', b'1', '支付平台配置控制器 更新平台配置项', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169118, 'ClientController#add', '添加', 'POST', '/client/add', '认证终端', b'1', b'1', '认证终端 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169119, 'DatabaseTableController#findByTableName', '获取表信息', 'GET', '/gen/table/findByTableName', '数据库表信息', b'1', b'1', '数据库表信息 获取表信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169120, 'OnlineUserController#kickOut', '踢出用户', 'GET', '/online/user/kickOut', '在线用户', b'1', b'1', '在线用户 踢出用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169121, 'UserAdminController#getUserInfoWhole', '查询用户详情', 'GET', '/user/admin/getUserInfoWhole', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 查询用户详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169122, 'WeChatTemplateController#update', '修改', 'POST', '/wechat/template/update', '微信模板消息', b'1', b'1', '微信模板消息 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169123, 'ChinaRegionController#findAllProvince', '获取一级行政区', 'GET', '/china/region/findAllProvince', '中国行政区划', b'1', b'1', '中国行政区划 获取一级行政区', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169124, 'WeChatMenuController#page', '分页查询', 'GET', '/wechat/menu/page', '微信菜单管理', b'1', b'1', '微信菜单管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169125, 'DictionaryController#update', '更新', 'POST', '/dict/update', '字典', b'1', b'1', '字典 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169126, 'PayChannelConfigController#findAll', '查询全部', 'GET', '/pay/channel/config/findAll', '支付通道信息', b'1', b'1', '支付通道信息 查询全部', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169127, 'UserAssistController#validateEmailForgetCaptcha', '验证找回密码邮箱验证码', 'GET', '/user/validateEmailForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证找回密码邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169128, 'ClientController#findById', '通过ID查询', 'GET', '/client/findById', '认证终端', b'1', b'1', '认证终端 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169129, 'PermMenuController#menuAndPermCodeTree', '获取菜单和权限码树', 'GET', '/perm/menu/menuAndPermCodeTree', '菜单和权限码', b'1', b'1', '菜单和权限码 获取菜单和权限码树', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169130, 'QuartzJobController#syncJobStatus', '同步定时任务状态', 'POST', '/quartz/syncJobStatus', '定时任务', b'1', b'1', '定时任务 同步定时任务状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169131, 'PermMenuController#add', '添加菜单权限', 'POST', '/perm/menu/add', '菜单和权限码', b'1', b'1', '菜单和权限码 添加菜单权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169132, 'ClientController#page', '分页查询', 'GET', '/client/page', '认证终端', b'1', b'1', '认证终端 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169133, 'FIleUpLoadController#findById', '获取单条详情', 'GET', '/file/findById', '文件上传', b'1', b'1', '文件上传 获取单条详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169134, 'WeChatQrLoginController#applyQrCode', '申请登录用QR码', 'POST', '/token/wechat/qr/applyQrCode', '微信扫码登录', b'1', b'1', '微信扫码登录 申请登录用QR码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169135, 'SiteMessageController#cancel', '撤回消息', 'POST', '/site/message/cancel', '站内信', b'1', b'1', '站内信 撤回消息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169136, 'DataRoleController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/data/role/existsByCodeNotId', '数据角色配置', b'1', b'1', '数据角色配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169138, 'DynamicFormController#add', '添加', 'POST', '/dynamic/form/add', '动态表单', b'1', b'1', '动态表单 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169139, 'ChinaRegionController#findAllRegionByParentCode', '根据编码获取下一级行政区划的列表', 'GET', '/china/region/findAllRegionByParentCode', '中国行政区划', b'1', b'1', '中国行政区划 根据编码获取下一级行政区划的列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169140, 'DatabaseTableController#getTableGenParam', '获取表相关的代码生成参数信息', 'GET', '/gen/table/getTableGenParam', '数据库表信息', b'1', b'1', '数据库表信息 获取表相关的代码生成参数信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169141, 'UniPayController#close', '订单关闭', 'POST', '/unipay/close', '统一支付接口', b'1', b'1', '统一支付接口 订单关闭', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169142, 'LoginTypeController#superPage', '超级查询', 'POST', '/loginType/superPage', '登录方式管理', b'1', b'1', '登录方式管理 超级查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169143, 'DictionaryController#page', '分页', 'GET', '/dict/page', '字典', b'1', b'1', '字典 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169144, 'DingRobotConfigController#update', '修改机器人配置', 'POST', '/ding/robot/config/update', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 修改机器人配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169145, 'PayCloseRecordController#page', '分页查询', 'GET', '/record/close/page', '支付订单关闭记录', b'1', b'1', '支付订单关闭记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169146, 'PayCallbackRecordController#findById', '查询单条', 'GET', '/record/callback/findById', '支付回调信息记录', b'1', b'1', '支付回调信息记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169147, 'MessageTemplateController#rendering', '渲染模板', 'POST', '/message/template/rendering', '消息模板', b'1', b'1', '消息模板 渲染模板', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363264, 'NcDemoController#p2', '企微机器人文件发送', 'POST', '/nc/test/p2', 'nc测试', b'1', b'1', 'nc测试 企微机器人文件发送', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363265, 'UserDataRoleController#saveAssign', '给用户分配数据角色', 'POST', '/user/data/role/saveAssign', '用户数据角色配置', b'1', b'1', '用户数据角色配置 给用户分配数据角色', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363266, 'MultipleOpenApiWebMvcResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs/{group}', 'MultipleOpenApiWebMvcResource', b'1', b'1', 'MultipleOpenApiWebMvcResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363267, 'DynamicDataSourceController#add', '添加', 'POST', '/dynamic/source/add', '动态数据源管理', b'1', b'1', '动态数据源管理 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363268, 'RoleController#update', '修改角色(返回角色对象)', 'POST', '/role/update', '角色管理', b'1', b'1', '角色管理 修改角色(返回角色对象)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363269, 'DataResultController#exportQueryResult', '导出SQL查询的结果', 'POST', '/data/result/exportQueryResult', 'SQL查询', b'1', b'1', 'SQL查询 导出SQL查询的结果', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363270, 'DataRoleController#existsByName', '名称是否被使用', 'GET', '/data/role/existsByName', '数据角色配置', b'1', b'1', '数据角色配置 名称是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363271, 'ClientController#delete', '删除', 'DELETE', '/client/delete', '认证终端', b'1', b'1', '认证终端 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363272, 'UserDeptController#saveAssign', '给用户分配部门', 'POST', '/user/dept/saveAssign', '用户部门关联关系', b'1', b'1', '用户部门关联关系 给用户分配部门', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363273, 'UserAdminController#update', '修改用户', 'POST', '/user/admin/update', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 修改用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363274, 'WecomRobotConfigController#findAll', '查询全部', 'GET', '/wecom/robot/config/findAll', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363275, 'SiteMessageController#countByReceiveNotRead', '获取未读的接收消息条数', 'GET', '/site/message/countByReceiveNotRead', '站内信', b'1', b'1', '站内信 获取未读的接收消息条数', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363276, 'QuartzJobController#findById', '单条', 'GET', '/quartz/findById', '定时任务', b'1', b'1', '定时任务 单条', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363277, 'SmsTemplateController#findById', '通过ID查询', 'GET', '/sms/template/findById', '短信模板配置', b'1', b'1', '短信模板配置 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363278, 'GeneralTemplateController#existsByCode', '编码是否被使用', 'GET', '/general/template/existsByCode', '通用模板管理', b'1', b'1', '通用模板管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363279, 'ChinaWordController#update', '修改', 'POST', '/chinaword/update', '敏感词管理', b'1', b'1', '敏感词管理 修改', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363280, 'ThirdLoginController#callback', '扫码后回调', 'GET', '/auth/third/callback/{loginType}', '三方登录', b'1', b'1', '三方登录 扫码后回调', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363281, 'UserThirdController#unbind', '解绑第三方账号', 'POST', '/user/third/unbind', '用户三方登录管理', b'1', b'1', '用户三方登录管理 解绑第三方账号', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363282, 'SmsChannelConfigController#findById', '通过ID查询', 'GET', '/sms/config/findById', '短信渠道配置', b'1', b'1', '短信渠道配置 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363283, 'WeChatMenuController#delete', '删除', 'DELETE', '/wechat/menu/delete', '微信菜单管理', b'1', b'1', '微信菜单管理 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363284, 'UserInfoController#existsEmail', '邮箱是否被使用', 'GET', '/user/existsEmail', '用户管理', b'1', b'1', '用户管理 邮箱是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363285, 'AggregateController#getInfo', '获取聚合支付信息', 'GET', '/demo/aggregate/getInfo', '聚合支付', b'1', b'1', '聚合支付 获取聚合支付信息', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363286, 'DingRobotConfigController#add', '新增机器人配置', 'POST', '/ding/robot/config/add', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 新增机器人配置', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363287, 'FIleUpLoadController#page', '分页', 'GET', '/file/page', '文件上传', b'1', b'1', '文件上传 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363288, 'MailConfigController#page', '分页', 'GET', '/mail/config/page', '邮箱配置', b'1', b'1', '邮箱配置 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363289, 'PayOrderController#getChannel', '查询支付通道订单详情', 'GET', '/order/pay/getChannel', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付通道订单详情', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363290, 'DynamicFormController#update', '修改', 'POST', '/dynamic/form/update', '动态表单', b'1', b'1', '动态表单 修改', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363291, 'UserInfoController#updateEmail', '修改邮箱', 'POST', '/user/updateEmail', '用户管理', b'1', b'1', '用户管理 修改邮箱', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363292, 'WecomRobotConfigController#findById', '获取详情', 'GET', '/wecom/robot/config/findById', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 获取详情', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363293, 'RoleMenuController#findMenuIds', '获取权限菜单id列表,不包含资源权限', 'GET', '/role/menu/findMenuIds', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取权限菜单id列表,不包含资源权限', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363294, 'SiteMessageController#saveOrUpdate', '保存站内信草稿', 'POST', '/site/message/saveOrUpdate', '站内信', b'1', b'1', '站内信 保存站内信草稿', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363295, 'PermPathController#page', '权限分页', 'GET', '/perm/path/page', '请求权限管理', b'1', b'1', '请求权限管理 权限分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363296, 'PermPathController#syncSystem', '同步系统请求资源', 'POST', '/perm/path/syncSystem', '请求权限管理', b'1', b'1', '请求权限管理 同步系统请求资源', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363297, 'PayRefundOrderController#syncById', '退款同步', 'POST', '/order/refund/syncById', '支付退款控制器', b'1', b'1', '支付退款控制器 退款同步', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363298, 'OnlineUserController#getSessionByUserId', '获取用户链接信息', 'GET', '/online/user/getSessionByUserId', '在线用户', b'1', b'1', '在线用户 获取用户链接信息', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363299, 'NcDemoController#sendDingMsg', '钉钉消息测试', 'POST', '/nc/test/sendDingMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉消息测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363300, 'UserInfoController#existsUsername', '账号是否被使用(不包含自己)', 'GET', '/user/existsUsernameNotId', '用户管理', b'1', b'1', '用户管理 账号是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363301, 'LoginTypeController#existsByCode', '编码是否被使用', 'GET', '/loginType/existsByCode', '登录方式管理', b'1', b'1', '登录方式管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363302, 'UniPayAssistController#getWxAuthUrl', '获取微信oauth2授权的url', 'POST', '/unipay/assist/getWxAuthUrl', '支付支撑接口', b'1', b'1', '支付支撑接口 获取微信oauth2授权的url', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363303, 'RoleController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/role/existsByCodeNotId', '角色管理', b'1', b'1', '角色管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363304, 'CashierController#queryPayOrder', '查询支付订单', 'GET', '/demo/cashier/queryPayOrderSuccess', '结算台演示', b'1', b'1', '结算台演示 查询支付订单', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363305, 'ClientController#findAll', '查询所有', 'GET', '/client/findAll', '认证终端', b'1', b'1', '认证终端 查询所有', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363306, 'PayWayInfoController#update', '更新', 'POST', '/pay/way/info/update', '支付方式管理', b'1', b'1', '支付方式管理 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363307, 'LoginLogController#page', '分页', 'GET', '/log/login/page', '登录日志', b'1', b'1', '登录日志 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363308, 'PasswordSecurityConfigController#isRecentlyUsed', '查看要修改的密码是否重复', 'GET', '/security/password/isRecentlyUsed', '密码安全策略', b'1', b'1', '密码安全策略 查看要修改的密码是否重复', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363309, 'FIleUpLoadController#getFileDownloadUrl', '获取文件下载地址(流量会经过后端)', 'GET', '/file/getFileDownloadUrl', '文件上传', b'1', b'1', '文件上传 获取文件下载地址(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363310, 'TokenEndpoint#login', '普通登录', 'POST', '/token/login', '认证相关', b'1', b'1', '认证相关 普通登录', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363311, 'UserRoleController#findRoleIdsByUser', '根据用户ID获取到角色id集合', 'GET', '/user/role/findRoleIdsByUser', '用户角色管理', b'1', b'1', '用户角色管理 根据用户ID获取到角色id集合', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363312, 'PayApiConfigController#findById', '根据ID获取', 'GET', '/pay/api/config/findById', '支付接口配置', b'1', b'1', '支付接口配置 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363313, 'RoleController#existsByName', '名称是否被使用', 'GET', '/role/existsByName', '角色管理', b'1', b'1', '角色管理 名称是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363314, 'GeneralTemplateController#page', '分页查询', 'GET', '/general/template/page', '通用模板管理', b'1', b'1', '通用模板管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363315, 'RolePathController#findIdsByRole', '根据角色id获取关联权限id', 'GET', '/role/path/findIdsByRole', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 根据角色id获取关联权限id', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363316, 'DingRobotConfigController#delete', '删除', 'DELETE', '/ding/robot/config/delete', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363317, 'PermMenuController#findById', '根据id查询', 'GET', '/perm/menu/findById', '菜单和权限码', b'1', b'1', '菜单和权限码 根据id查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363318, 'DingRobotConfigController#findAll', '查询全部', 'GET', '/ding/robot/config/findAll', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363319, 'RoleMenuController#getPermissions', '获取菜单和权限码(根据用户进行筛选)', 'GET', '/role/menu/getPermissions', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取菜单和权限码(根据用户进行筛选)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363320, 'SmsTemplateController#delete', '删除', 'DELETE', '/sms/template/delete', '短信模板配置', b'1', b'1', '短信模板配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363321, 'UserThirdController#bind', '绑定第三方账号', 'POST', '/user/third/bind', '用户三方登录管理', b'1', b'1', '用户三方登录管理 绑定第三方账号', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363322, 'RoleController#existsByCode', '编码是否被使用', 'GET', '/role/existsByCode', '角色管理', b'1', b'1', '角色管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363323, 'QuartzJobController#page', '分页', 'GET', '/quartz/page', '定时任务', b'1', b'1', '定时任务 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363324, 'DataRoleController#add', '添加', 'POST', '/data/role/add', '数据角色配置', b'1', b'1', '数据角色配置 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363325, 'SiteMessageController#read', '标为已读', 'POST', '/site/message/read', '站内信', b'1', b'1', '站内信 标为已读', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363326, 'MessageTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/message/template/existsByCodeNotId', '消息模板', b'1', b'1', '消息模板 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363327, 'UserAssistController#validateCurrentPhoneChangeCaptcha', '验证当前用户发送更改手机号验证码', 'GET', '/user/validateCurrentPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证当前用户发送更改手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363328, 'NcDemoController#recallNotice', '企微消息撤回', 'POST', '/nc/test/recallNotice', 'nc测试', b'1', b'1', 'nc测试 企微消息撤回', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363329, 'WeChatMenuController#findById', '通过ID查询', 'GET', '/wechat/menu/findById', '微信菜单管理', b'1', b'1', '微信菜单管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363330, 'UserAdminController#add', '添加用户', 'POST', '/user/admin/add', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 添加用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363331, 'UniPayController#syncPay', '支付状态同步', 'POST', '/unipay/syncPay', '统一支付接口', b'1', b'1', '统一支付接口 支付状态同步', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363332, 'MailConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/mail/config/existsByCodeNotId', '邮箱配置', b'1', b'1', '邮箱配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363333, 'PayWayInfoController#findAll', '获取全部', 'GET', '/pay/way/info/findAll', '支付方式管理', b'1', b'1', '支付方式管理 获取全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363334, 'SwaggerWelcomeWebMvc#redirectToUi', 'redirectToUi', 'GET', '/swagger-ui.html', 'SwaggerWelcomeWebMvc', b'1', b'1', 'SwaggerWelcomeWebMvc redirectToUi', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363335, 'WecomRobotConfigController#existsByCode', '编码是否被使用', 'GET', '/wecom/robot/config/existsByCode', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363336, 'UserInfoController#existsEmail', '邮箱是否被使用(不包含自己)', 'GET', '/user/existsEmailNotId', '用户管理', b'1', b'1', '用户管理 邮箱是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363337, 'WeChatTemplateController#findById', '通过ID查询', 'GET', '/wechat/template/findById', '微信模板消息', b'1', b'1', '微信模板消息 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363338, 'DatabaseTableController#page', '表列表分页', 'GET', '/gen/table/page', '数据库表信息', b'1', b'1', '数据库表信息 表列表分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363339, 'PermMenuController#existsByPermCode', '编码是否被使用', 'GET', '/perm/menu/existsByPermCode', '菜单和权限码', b'1', b'1', '菜单和权限码 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363340, 'PlatformConfigController#getConfig', '获取平台配置', 'GET', '/platform/config/getConfig', '支付平台配置控制器', b'1', b'1', '支付平台配置控制器 获取平台配置', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363341, 'SmsTemplateController#add', '添加', 'POST', '/sms/template/add', '短信模板配置', b'1', b'1', '短信模板配置 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363342, 'DingRobotConfigController#existsByCode', '编码是否被使用', 'GET', '/ding/robot/config/existsByCode', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363343, 'DeptController#update', '更新', 'POST', '/dept/update', '部门管理', b'1', b'1', '部门管理 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363344, 'UserThirdController#page', '分页', 'GET', '/user/third/page', '用户三方登录管理', b'1', b'1', '用户三方登录管理 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363345, 'WecomRobotConfigController#delete', '删除', 'DELETE', '/wecom/robot/config/delete', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363346, 'WecomRobotConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/wecom/robot/config/existsByCodeNotId', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363347, 'WeChatTemplateController#sync', '同步消息模板数据', 'POST', '/wechat/template/sync', '微信模板消息', b'1', b'1', '微信模板消息 同步消息模板数据', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363348, 'CashierController#simplePayCashier', '创建支付订单并发起', 'POST', '/demo/cashier/simplePayCashier', '结算台演示', b'1', b'1', '结算台演示 创建支付订单并发起', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363349, 'LoginTypeController#update', '修改登录方式(返回登录方式对象)', 'POST', '/loginType/update', '登录方式管理', b'1', b'1', '登录方式管理 修改登录方式(返回登录方式对象)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363350, 'PayApiConfigController#update', '更新', 'POST', '/pay/api/config/update', '支付接口配置', b'1', b'1', '支付接口配置 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363351, 'UniPayController#pay', '统一下单', 'POST', '/unipay/pay', '统一支付接口', b'1', b'1', '统一支付接口 统一下单', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363352, 'UserInfoController#existsUsername', '账号是否被使用', 'GET', '/user/existsUsername', '用户管理', b'1', b'1', '用户管理 账号是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363353, 'UserAssistController#validatePhoneForgetCaptcha', '验证找回密码手机验证码', 'GET', '/user/validatePhoneForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证找回密码手机验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363354, 'CodeGeneratorController#genCodeZip', '下载生成代码', 'POST', '/gen/code/genCodeZip', '代码生成', b'1', b'1', '代码生成 下载生成代码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363355, 'PermPathController#update', '更新权限', 'POST', '/perm/path/update', '请求权限管理', b'1', b'1', '请求权限管理 更新权限', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363356, 'UserAdminController#unlockBatch', '批量解锁用户', 'POST', '/user/admin/unlockBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量解锁用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363357, 'BaseApiController#echo', '回声测试', 'GET', '/echo', '系统基础接口', b'1', b'1', '系统基础接口 回声测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363358, 'WeChatMediaController#uploadFile', '上传素材', 'POST', '/wechat/media/uploadFile', '微信素材管理', b'1', b'1', '微信素材管理 上传素材', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363359, 'UserAssistController#sendCurrentPhoneChangeCaptcha', '给当前用户发送更改手机号验证码', 'POST', '/user/sendCurrentPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 给当前用户发送更改手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363360, 'SystemParamController#existsByKey', '判断编码是否存在', 'GET', '/system/param/existsByKey', '系统参数', b'1', b'1', '系统参数 判断编码是否存在', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363361, 'PayOrderController#page', '分页查询', 'GET', '/order/pay/page', '支付订单控制器', b'1', b'1', '支付订单控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363362, 'GeneralTemplateController#findById', '通过ID查询', 'GET', '/general/template/findById', '通用模板管理', b'1', b'1', '通用模板管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363363, 'CashierController#getWxAuthUrl', '获取微信授权链接', 'GET', '/demo/cashier/getWxAuthUrl', '结算台演示', b'1', b'1', '结算台演示 获取微信授权链接', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363364, 'DictionaryController#findAll', '查询全部', 'GET', '/dict/findAll', '字典', b'1', b'1', '字典 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363365, 'NcDemoController#sendMsg', '邮件消息测试', 'POST', '/nc/test/sendMsg', 'nc测试', b'1', b'1', 'nc测试 邮件消息测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363366, 'DictionaryItemController#findAll', '获取全部字典项', 'GET', '/dict/item/findAll', '字典项', b'1', b'1', '字典项 获取全部字典项', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363367, 'PayChannelConfigController#update', '更新', 'POST', '/pay/channel/config/update', '支付通道信息', b'1', b'1', '支付通道信息 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363368, 'PayRefundOrderController#listByChannel', '通道退款订单列表查询', 'GET', '/order/refund/listByChannel', '支付退款控制器', b'1', b'1', '支付退款控制器 通道退款订单列表查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363369, 'DynamicDataSourceController#findAll', '查询所有', 'GET', '/dynamic/source/findAll', '动态数据源管理', b'1', b'1', '动态数据源管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363370, 'WeChatTemplateController#page', '分页查询', 'GET', '/wechat/template/page', '微信模板消息', b'1', b'1', '微信模板消息 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363371, 'DictionaryController#add', '添加', 'POST', '/dict/add', '字典', b'1', b'1', '字典 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363372, 'UserAdminController#page', '分页', 'GET', '/user/admin/page', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363373, 'SwaggerConfigResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs/swagger-config', 'SwaggerConfigResource', b'1', b'1', 'SwaggerConfigResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363374, 'PaySyncRecordController#page', '分页查询', 'GET', '/record/sync/page', '支付同步记录控制器', b'1', b'1', '支付同步记录控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206464, 'VoucherController#findById', '查询储值卡详情', 'GET', '/voucher/findById', '储值卡管理', b'1', b'1', '储值卡管理 查询储值卡详情', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206465, 'WalletConfigController#update', '更新', 'POST', '/wallet/config/update', '钱包配置', b'1', b'1', '钱包配置 更新', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206466, 'ClientNoticeTaskController#recordPage', '分页查询', 'GET', '/task/notice/record/page', '客户系统通知任务', b'1', b'1', '客户系统通知任务 分页查询', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206467, 'WalletConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/wallet/config/findPayWays', '钱包配置', b'1', b'1', '钱包配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206468, 'VoucherController#voucherImport', '导入储值卡', 'POST', '/voucher/import', '储值卡管理', b'1', b'1', '储值卡管理 导入储值卡', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206469, 'VoucherController#recordFindById', '查询记录详情', 'GET', '/voucher/record/findById', '储值卡管理', b'1', b'1', '储值卡管理 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206470, 'CashController#recordPage', '记录分页', 'GET', '/cash/record/page', '现金控制器', b'1', b'1', '现金控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206471, 'AlipayController#recordPage', '记录分页', 'GET', '/alipay/record/page', '支付宝控制器', b'1', b'1', '支付宝控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206472, 'CashConfigController#getConfig', '获取配置', 'GET', '/cash/config/getConfig', '现金支付配置', b'1', b'1', '现金支付配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206473, 'ClientNoticeReceiveController#pay', '支付消息(对象接收)', 'POST', '/demo/callback/payObject', '回调测试', b'1', b'1', '回调测试 支付消息(对象接收)', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206474, 'VoucherConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/voucher/config/findPayWays', '储值卡支付配置', b'1', b'1', '储值卡支付配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206475, 'ClientNoticeReceiveController#refund', '退款消息(对象)', 'POST', '/demo/callback/refundObject', '回调测试', b'1', b'1', '回调测试 退款消息(对象)', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206476, 'WalletController#recharge', '充值', 'POST', '/wallet/recharge', '钱包管理', b'1', b'1', '钱包管理 充值', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400768, 'VoucherController#page', '储值卡分页', 'GET', '/voucher/page', '储值卡管理', b'1', b'1', '储值卡管理 储值卡分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400769, 'PayReturnController#wechat', '微信同步通知', 'GET', '/return/pay/wechat', '支付同步通知', b'1', b'1', '支付同步通知 微信同步通知', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400770, 'WalletController#findRecordById', '查询记录详情', 'GET', '/wallet/record/findById', '钱包管理', b'1', b'1', '钱包管理 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400771, 'WalletConfigController#getConfig', '获取配置', 'GET', '/wallet/config/getConfig', '钱包配置', b'1', b'1', '钱包配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400772, 'WalletController#recordPage', '记录分页', 'GET', '/wallet/record/page', '钱包管理', b'1', b'1', '钱包管理 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400773, 'VoucherController#existsByCardNo', '判断卡号是否存在', 'GET', '/voucher/existsByCardNo', '储值卡管理', b'1', b'1', '储值卡管理 判断卡号是否存在', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400774, 'WalletController#page', '钱包分页', 'GET', '/wallet/page', '钱包管理', b'1', b'1', '钱包管理 钱包分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400775, 'ClientNoticeTaskController#findById', '查询单条', 'GET', '/task/notice/findById', '客户系统通知任务', b'1', b'1', '客户系统通知任务 查询单条', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400776, 'CashController#findById', '查询记录详情', 'GET', '/cash/record/findById', '现金控制器', b'1', b'1', '现金控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400777, 'WeChatPayController#findById', '查询记录详情', 'GET', '/wechat/pay/record/findById', '微信支付控制器', b'1', b'1', '微信支付控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400778, 'ClientNoticeReceiveController#pay', '支付消息(map接收)', 'POST', '/demo/callback/pay', '回调测试', b'1', b'1', '回调测试 支付消息(map接收)', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400779, 'VoucherConfigController#getConfig', '获取配置', 'GET', '/voucher/config/getConfig', '储值卡支付配置', b'1', b'1', '储值卡支付配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400780, 'WalletController#create', '创建钱包', 'POST', '/wallet/create', '钱包管理', b'1', b'1', '钱包管理 创建钱包', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400781, 'ClientNoticeTaskController#findRecordById', '查询单条', 'GET', '/task/notice/record/findById', '客户系统通知任务', b'1', b'1', '客户系统通知任务 查询单条', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400782, 'CashConfigController#update', '更新', 'POST', '/cash/config/update', '现金支付配置', b'1', b'1', '现金支付配置 更新', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400783, 'ClientNoticeReceiveController#refund', '退款消息', 'POST', '/demo/callback/refund', '回调测试', b'1', b'1', '回调测试 退款消息', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400784, 'WeChatPayController#recordPage', '记录分页', 'GET', '/wechat/pay/record/page', '微信支付控制器', b'1', b'1', '微信支付控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400785, 'PayReturnController#alipay', '支付宝同步跳转连接', 'GET', '/return/pay/alipay', '支付同步通知', b'1', b'1', '支付同步通知 支付宝同步跳转连接', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400786, 'WalletController#findById', '查询钱包详情', 'GET', '/wallet/findById', '钱包管理', b'1', b'1', '钱包管理 查询钱包详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400787, 'CashConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/cash/config/findPayWays', '现金支付配置', b'1', b'1', '现金支付配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400788, 'AlipayController#findById', '查询记录详情', 'GET', '/alipay/record/findById', '支付宝控制器', b'1', b'1', '支付宝控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400789, 'VoucherConfigController#update', '更新', 'POST', '/voucher/config/update', '储值卡支付配置', b'1', b'1', '储值卡支付配置 更新', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400790, 'ClientNoticeTaskController#page', '分页查询', 'GET', '/task/notice/page', '客户系统通知任务', b'1', b'1', '客户系统通知任务 分页查询', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400791, 'VoucherController#recordPage', '记录分页', 'GET', '/voucher/record/page', '储值卡管理', b'1', b'1', '储值卡管理 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400792, 'ClientNoticeTaskController#resetSend', '重新发送消息通知', 'POST', '/task/notice/resetSend', '客户系统通知任务', b'1', b'1', '客户系统通知任务 重新发送消息通知', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400793, 'WalletController#deduct', '扣减', 'POST', '/wallet/deduct', '钱包管理', b'1', b'1', '钱包管理 扣减', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400794, 'WalletController#existsByUserId', '判断用户是否开通了钱包', 'GET', '/wallet/existsByUserId', '钱包管理', b'1', b'1', '钱包管理 判断用户是否开通了钱包', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303616, 'ReconcileOrderController#pageDiff', '对账差异分页', 'GET', '/order/reconcile/diff/page', '对账控制器', b'1', b'1', '对账控制器 对账差异分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303617, 'ReconcileOrderController#findDiffById', '对账差异详情', 'GET', '/order/reconcile/diff/findById', '对账控制器', b'1', b'1', '对账控制器 对账差异详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303618, 'ReconcileOrderController#findDetailById', '对账明细详情', 'GET', '/order/reconcile/detail/findById', '对账控制器', b'1', b'1', '对账控制器 对账明细详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303619, 'ReconcileOrderController#compare', '手动触发对账单比对', 'POST', '/order/reconcile/compare', '对账控制器', b'1', b'1', '对账控制器 手动触发对账单比对', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303620, 'ReconcileOrderController#pageDetail', '对账明细分页', 'GET', '/order/reconcile/detail/page', '对账控制器', b'1', b'1', '对账控制器 对账明细分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994971140096, 'RefundOrderController#resetRefund', '重新发起退款', 'POST', '/order/refund/resetRefund', '支付退款控制器', b'1', b'1', '支付退款控制器 重新发起退款', 1399985191002447872, '2024-03-14 18:17:53.396000', 1399985191002447872, '2024-03-14 18:17:53.397000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528704, 'UnionPayConfigController#getConfig', '获取配置', 'GET', '/union/pay/config/getConfig', '云闪付配置', b'1', b'1', '云闪付配置 获取配置', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528705, 'UnionPayController#findById', '查询记录详情', 'GET', '/union/pay/record/findById', '云闪付控制器', b'1', b'1', '云闪付控制器 查询记录详情', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528706, 'UnionPayController#recordPage', '记录分页', 'GET', '/union/pay/record/page', '云闪付控制器', b'1', b'1', '云闪付控制器 记录分页', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528707, 'UnionPayConfigController#update', '更新', 'POST', '/union/pay/config/update', '云闪付配置', b'1', b'1', '云闪付配置 更新', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528708, 'PayReturnController#union', '云闪付同步通知', 'POST', '/return/pay/union', '支付同步通知', b'1', b'1', '支付同步通知 云闪付同步通知', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528709, 'PayCallbackController#unionPayNotify', '云闪付支付信息回调', 'POST', '/callback/pay/union', '支付通道信息回调', b'1', b'1', '支付通道信息回调 云闪付支付信息回调', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528710, 'UnionPayConfigController#toBase64', '读取证书文件内容', 'POST', '/union/pay/config/toBase64', '云闪付配置', b'1', b'1', '云闪付配置 读取证书文件内容', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528711, 'UnionPayConfigController#findPayWays', '支持的支付方式', 'GET', '/union/pay/config/findPayWays', '云闪付配置', b'1', b'1', '云闪付配置 支持的支付方式', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); + +-- ---------------------------- +-- Table structure for iam_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role`; +CREATE TABLE `iam_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `pid` bigint(20) NULL DEFAULT NULL COMMENT '父ID', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role +-- ---------------------------- +INSERT INTO `iam_role` VALUES (1757297023118462976, 'daxpayAdmin', NULL, '支付网关管理员', b'0', '', 1399985191002447872, '2024-02-13 14:53:54', 1399985191002447872, '2024-02-13 14:53:54', 0, 0); +INSERT INTO `iam_role` VALUES (1757298887092326400, 'daxpayDemo', 1757297023118462976, '支付演示角色', b'0', '用于进行演示的角色, 没有修改和删除的权限', 1399985191002447872, '2024-02-13 15:01:18', 1399985191002447872, '2024-02-13 15:01:18', 0, 0); + +-- ---------------------------- +-- Table structure for iam_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role_menu`; +CREATE TABLE `iam_role_menu` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code', + `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role_menu +-- ---------------------------- +INSERT INTO `iam_role_menu` VALUES (1757298674730520576, 1757297023118462976, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298674730520577, 1757297023118462976, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298674730520578, 1757297023118462976, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298674730520579, 1757297023118462976, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298674730520580, 1757297023118462976, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298674730520581, 1757297023118462976, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298674730520582, 1757297023118462976, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298674730520583, 1757297023118462976, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298674730520584, 1757297023118462976, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298674730520585, 1757297023118462976, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298674730520586, 1757297023118462976, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298674730520587, 1757297023118462976, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298674730520588, 1757297023118462976, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298674730520589, 1757297023118462976, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298674730520590, 1757297023118462976, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059200, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059201, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059202, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059203, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059204, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059205, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059206, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059207, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059208, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059209, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059210, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059211, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059212, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059213, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059214, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059215, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059216, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059217, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059218, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059219, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059220, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059221, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059222, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059223, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059224, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059225, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059226, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059227, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059228, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059229, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059230, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059231, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059232, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059233, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059234, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059235, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059236, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059237, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059238, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059239, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059240, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059241, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059242, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059243, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059244, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059245, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059246, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059247, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059248, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059249, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059250, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059251, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059252, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059253, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059254, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059255, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059256, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059257, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059258, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059259, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1762112282006073344, 1757297023118462976, 'dax-pay', 1758860876272861184); +INSERT INTO `iam_role_menu` VALUES (1762112282006073345, 1757297023118462976, 'dax-pay', 1759861648606097408); +INSERT INTO `iam_role_menu` VALUES (1762112282006073346, 1757297023118462976, 'dax-pay', 1759865163772485632); +INSERT INTO `iam_role_menu` VALUES (1762112282006073347, 1757297023118462976, 'dax-pay', 1758861129311027200); +INSERT INTO `iam_role_menu` VALUES (1762112282006073348, 1757297023118462976, 'dax-pay', 1759192238594949120); +INSERT INTO `iam_role_menu` VALUES (1762112282006073349, 1757297023118462976, 'dax-pay', 1759192520611561472); +INSERT INTO `iam_role_menu` VALUES (1762112282006073350, 1757297023118462976, 'dax-pay', 1761429304959528960); +INSERT INTO `iam_role_menu` VALUES (1762112282006073351, 1757297023118462976, 'dax-pay', 1761429682618855424); +INSERT INTO `iam_role_menu` VALUES (1762112282006073352, 1757297023118462976, 'dax-pay', 1759768820429352960); +INSERT INTO `iam_role_menu` VALUES (1762112282006073353, 1757297023118462976, 'dax-pay', 1759769092698402816); +INSERT INTO `iam_role_menu` VALUES (1762112282232565760, 1757298887092326400, 'dax-pay', 1758860876272861184); +INSERT INTO `iam_role_menu` VALUES (1762112282232565761, 1757298887092326400, 'dax-pay', 1759861648606097408); +INSERT INTO `iam_role_menu` VALUES (1762112282232565762, 1757298887092326400, 'dax-pay', 1759865163772485632); +INSERT INTO `iam_role_menu` VALUES (1762112282232565763, 1757298887092326400, 'dax-pay', 1758861129311027200); +INSERT INTO `iam_role_menu` VALUES (1762112282232565764, 1757298887092326400, 'dax-pay', 1759192238594949120); +INSERT INTO `iam_role_menu` VALUES (1762112282232565765, 1757298887092326400, 'dax-pay', 1759192520611561472); +INSERT INTO `iam_role_menu` VALUES (1762112282232565766, 1757298887092326400, 'dax-pay', 1761429304959528960); +INSERT INTO `iam_role_menu` VALUES (1762112282232565767, 1757298887092326400, 'dax-pay', 1761429682618855424); +INSERT INTO `iam_role_menu` VALUES (1762112282232565768, 1757298887092326400, 'dax-pay', 1759768820429352960); +INSERT INTO `iam_role_menu` VALUES (1762112282232565769, 1757298887092326400, 'dax-pay', 1759769092698402816); +INSERT INTO `iam_role_menu` VALUES (1764945575888781312, 1757297023118462976, 'dax-pay', 1764638353289027584); +INSERT INTO `iam_role_menu` VALUES (1764945575888781313, 1757297023118462976, 'dax-pay', 1764638678821543936); +INSERT INTO `iam_role_menu` VALUES (1764945576350154752, 1757298887092326400, 'dax-pay', 1764638353289027584); +INSERT INTO `iam_role_menu` VALUES (1764945576350154753, 1757298887092326400, 'dax-pay', 1764638678821543936); +INSERT INTO `iam_role_menu` VALUES (1768220067952029696, 1757297023118462976, 'dax-pay', 1768203432981655552); +INSERT INTO `iam_role_menu` VALUES (1768220068631506944, 1757298887092326400, 'dax-pay', 1768203432981655552); + +-- ---------------------------- +-- Table structure for iam_role_path +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role_path`; +CREATE TABLE `iam_role_path` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `permission_id` bigint(20) NOT NULL COMMENT '请求权限id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role_path +-- ---------------------------- +INSERT INTO `iam_role_path` VALUES (1757299898544541696, 1757297023118462976, 1757297527147974745); +INSERT INTO `iam_role_path` VALUES (1757299898544541697, 1757297023118462976, 1757297527147974777); +INSERT INTO `iam_role_path` VALUES (1757299898544541698, 1757297023118462976, 1757297527147974746); +INSERT INTO `iam_role_path` VALUES (1757299898544541699, 1757297023118462976, 1757297527147974744); +INSERT INTO `iam_role_path` VALUES (1757299898544541700, 1757297023118462976, 1757297527147974692); +INSERT INTO `iam_role_path` VALUES (1757299898544541701, 1757297023118462976, 1757297527152169034); +INSERT INTO `iam_role_path` VALUES (1757299898544541702, 1757297023118462976, 1757297527152169010); +INSERT INTO `iam_role_path` VALUES (1757299898544541703, 1757297023118462976, 1757297527147974778); +INSERT INTO `iam_role_path` VALUES (1757299898544541704, 1757297023118462976, 1757297527147974668); +INSERT INTO `iam_role_path` VALUES (1757299898544541705, 1757297023118462976, 1757297527152169052); +INSERT INTO `iam_role_path` VALUES (1757299898544541706, 1757297023118462976, 1757297527147974730); +INSERT INTO `iam_role_path` VALUES (1757299898544541709, 1757297023118462976, 1757297527152169077); +INSERT INTO `iam_role_path` VALUES (1757299898544541710, 1757297023118462976, 1757297527152168990); +INSERT INTO `iam_role_path` VALUES (1757299898544541711, 1757297023118462976, 1757297527152169098); +INSERT INTO `iam_role_path` VALUES (1757299898544541712, 1757297023118462976, 1757297527152169054); +INSERT INTO `iam_role_path` VALUES (1757299898544541713, 1757297023118462976, 1757297527152169041); +INSERT INTO `iam_role_path` VALUES (1757299898544541714, 1757297023118462976, 1757297527152169016); +INSERT INTO `iam_role_path` VALUES (1757299898544541717, 1757297023118462976, 1757297527156363367); +INSERT INTO `iam_role_path` VALUES (1757299898544541718, 1757297023118462976, 1757297527152169126); +INSERT INTO `iam_role_path` VALUES (1757299898544541719, 1757297023118462976, 1757297527152169084); +INSERT INTO `iam_role_path` VALUES (1757299898544541720, 1757297023118462976, 1757297527156363350); +INSERT INTO `iam_role_path` VALUES (1757299898544541721, 1757297023118462976, 1757297527156363312); +INSERT INTO `iam_role_path` VALUES (1757299898544541722, 1757297023118462976, 1757297527147974769); +INSERT INTO `iam_role_path` VALUES (1757299898544541723, 1757297023118462976, 1757297527152169146); +INSERT INTO `iam_role_path` VALUES (1757299898544541724, 1757297023118462976, 1757297527152169032); +INSERT INTO `iam_role_path` VALUES (1757299898544541725, 1757297023118462976, 1757297527152169145); +INSERT INTO `iam_role_path` VALUES (1757299898544541726, 1757297023118462976, 1757297527147974691); +INSERT INTO `iam_role_path` VALUES (1757299898825560064, 1757298887092326400, 1757297527147974745); +INSERT INTO `iam_role_path` VALUES (1757299898825560065, 1757298887092326400, 1757297527147974777); +INSERT INTO `iam_role_path` VALUES (1757299898825560067, 1757298887092326400, 1757297527147974744); +INSERT INTO `iam_role_path` VALUES (1757299898825560069, 1757298887092326400, 1757297527152169034); +INSERT INTO `iam_role_path` VALUES (1757299898825560070, 1757298887092326400, 1757297527152169010); +INSERT INTO `iam_role_path` VALUES (1757299898825560071, 1757298887092326400, 1757297527147974778); +INSERT INTO `iam_role_path` VALUES (1757299898825560073, 1757298887092326400, 1757297527152169052); +INSERT INTO `iam_role_path` VALUES (1757299898825560074, 1757298887092326400, 1757297527147974730); +INSERT INTO `iam_role_path` VALUES (1757299898825560077, 1757298887092326400, 1757297527152169077); +INSERT INTO `iam_role_path` VALUES (1757299898825560078, 1757298887092326400, 1757297527152168990); +INSERT INTO `iam_role_path` VALUES (1757299898825560079, 1757298887092326400, 1757297527152169098); +INSERT INTO `iam_role_path` VALUES (1757299898825560080, 1757298887092326400, 1757297527152169054); +INSERT INTO `iam_role_path` VALUES (1757299898825560081, 1757298887092326400, 1757297527152169041); +INSERT INTO `iam_role_path` VALUES (1757299898825560082, 1757298887092326400, 1757297527152169016); +INSERT INTO `iam_role_path` VALUES (1757299898825560083, 1757298887092326400, 1757297527147974712); +INSERT INTO `iam_role_path` VALUES (1757299898825560084, 1757298887092326400, 1757297527147974657); +INSERT INTO `iam_role_path` VALUES (1757299898825560086, 1757298887092326400, 1757297527152169126); +INSERT INTO `iam_role_path` VALUES (1757299898825560087, 1757298887092326400, 1757297527152169084); +INSERT INTO `iam_role_path` VALUES (1757299898825560089, 1757298887092326400, 1757297527156363312); +INSERT INTO `iam_role_path` VALUES (1757299898825560090, 1757298887092326400, 1757297527147974769); +INSERT INTO `iam_role_path` VALUES (1757299898825560091, 1757298887092326400, 1757297527152169146); +INSERT INTO `iam_role_path` VALUES (1757299898825560092, 1757298887092326400, 1757297527152169032); +INSERT INTO `iam_role_path` VALUES (1757299898825560093, 1757298887092326400, 1757297527152169145); +INSERT INTO `iam_role_path` VALUES (1757299898825560094, 1757298887092326400, 1757297527147974691); +INSERT INTO `iam_role_path` VALUES (1757300046846742528, 1757297023118462976, 1757297527156363340); +INSERT INTO `iam_role_path` VALUES (1757300046846742529, 1757297023118462976, 1757297527152169117); +INSERT INTO `iam_role_path` VALUES (1757300047022903296, 1757298887092326400, 1757297527156363340); +INSERT INTO `iam_role_path` VALUES (1757301364139216896, 1757297023118462976, 1757297527156363333); +INSERT INTO `iam_role_path` VALUES (1757301364139216897, 1757297023118462976, 1757297527156363306); +INSERT INTO `iam_role_path` VALUES (1757301364139216898, 1757297023118462976, 1757297527152168980); +INSERT INTO `iam_role_path` VALUES (1757301364311183360, 1757298887092326400, 1757297527156363333); +INSERT INTO `iam_role_path` VALUES (1757301364311183362, 1757298887092326400, 1757297527152168980); +INSERT INTO `iam_role_path` VALUES (1757301683791319040, 1757297023118462976, 1757297527156363361); +INSERT INTO `iam_role_path` VALUES (1757301683791319041, 1757297023118462976, 1757297527156363289); +INSERT INTO `iam_role_path` VALUES (1757301683791319042, 1757297023118462976, 1757297527152169108); +INSERT INTO `iam_role_path` VALUES (1757301683791319043, 1757297023118462976, 1757297527152169086); +INSERT INTO `iam_role_path` VALUES (1757301683791319044, 1757297023118462976, 1757297527152168999); +INSERT INTO `iam_role_path` VALUES (1757301683791319045, 1757297023118462976, 1757297527152168994); +INSERT INTO `iam_role_path` VALUES (1757301683791319046, 1757297023118462976, 1757297527147974782); +INSERT INTO `iam_role_path` VALUES (1757301683791319047, 1757297023118462976, 1757297527156363368); +INSERT INTO `iam_role_path` VALUES (1757301683791319048, 1757297023118462976, 1757297527156363297); +INSERT INTO `iam_role_path` VALUES (1757301683791319049, 1757297023118462976, 1757297527152169030); +INSERT INTO `iam_role_path` VALUES (1757301683791319050, 1757297023118462976, 1757297527147974779); +INSERT INTO `iam_role_path` VALUES (1757301683791319051, 1757297023118462976, 1757297527147974742); +INSERT INTO `iam_role_path` VALUES (1757301683791319052, 1757297023118462976, 1757297527147974662); +INSERT INTO `iam_role_path` VALUES (1757301684013617152, 1757298887092326400, 1757297527156363361); +INSERT INTO `iam_role_path` VALUES (1757301684013617153, 1757298887092326400, 1757297527156363289); +INSERT INTO `iam_role_path` VALUES (1757301684013617154, 1757298887092326400, 1757297527152169108); +INSERT INTO `iam_role_path` VALUES (1757301684013617155, 1757298887092326400, 1757297527152169086); +INSERT INTO `iam_role_path` VALUES (1757301684013617156, 1757298887092326400, 1757297527152168999); +INSERT INTO `iam_role_path` VALUES (1757301684013617157, 1757298887092326400, 1757297527152168994); +INSERT INTO `iam_role_path` VALUES (1757301684013617158, 1757298887092326400, 1757297527147974782); +INSERT INTO `iam_role_path` VALUES (1757301684013617159, 1757298887092326400, 1757297527156363368); +INSERT INTO `iam_role_path` VALUES (1757301684013617160, 1757298887092326400, 1757297527156363297); +INSERT INTO `iam_role_path` VALUES (1757301684013617161, 1757298887092326400, 1757297527152169030); +INSERT INTO `iam_role_path` VALUES (1757301684013617162, 1757298887092326400, 1757297527147974779); +INSERT INTO `iam_role_path` VALUES (1757301684013617163, 1757298887092326400, 1757297527147974742); +INSERT INTO `iam_role_path` VALUES (1757301684013617164, 1757298887092326400, 1757297527147974662); +INSERT INTO `iam_role_path` VALUES (1757305163645964288, 1757297023118462976, 1757297527156363374); +INSERT INTO `iam_role_path` VALUES (1757305163645964289, 1757297023118462976, 1757297527152169092); +INSERT INTO `iam_role_path` VALUES (1757305194193080320, 1757298887092326400, 1757297527156363374); +INSERT INTO `iam_role_path` VALUES (1757305194193080321, 1757298887092326400, 1757297527152169092); +INSERT INTO `iam_role_path` VALUES (1762112867598020608, 1757297023118462976, 1762112351866400794); +INSERT INTO `iam_role_path` VALUES (1762112867598020609, 1757297023118462976, 1762112351866400793); +INSERT INTO `iam_role_path` VALUES (1762112867598020610, 1757297023118462976, 1762112351866400786); +INSERT INTO `iam_role_path` VALUES (1762112867598020611, 1757297023118462976, 1762112351866400780); +INSERT INTO `iam_role_path` VALUES (1762112867598020612, 1757297023118462976, 1762112351866400774); +INSERT INTO `iam_role_path` VALUES (1762112867598020613, 1757297023118462976, 1762112351866400772); +INSERT INTO `iam_role_path` VALUES (1762112867598020614, 1757297023118462976, 1762112351866400770); +INSERT INTO `iam_role_path` VALUES (1762112867598020615, 1757297023118462976, 1762112351862206476); +INSERT INTO `iam_role_path` VALUES (1762112867598020616, 1757297023118462976, 1762112351866400787); +INSERT INTO `iam_role_path` VALUES (1762112867598020617, 1757297023118462976, 1762112351866400782); +INSERT INTO `iam_role_path` VALUES (1762112867598020618, 1757297023118462976, 1762112351862206472); +INSERT INTO `iam_role_path` VALUES (1762112867598020619, 1757297023118462976, 1762112351866400788); +INSERT INTO `iam_role_path` VALUES (1762112867598020620, 1757297023118462976, 1762112351862206471); +INSERT INTO `iam_role_path` VALUES (1762112867598020621, 1757297023118462976, 1762112351866400789); +INSERT INTO `iam_role_path` VALUES (1762112867598020622, 1757297023118462976, 1762112351866400779); +INSERT INTO `iam_role_path` VALUES (1762112867598020623, 1757297023118462976, 1762112351862206474); +INSERT INTO `iam_role_path` VALUES (1762112867598020624, 1757297023118462976, 1762112351866400791); +INSERT INTO `iam_role_path` VALUES (1762112867598020625, 1757297023118462976, 1762112351866400773); +INSERT INTO `iam_role_path` VALUES (1762112867598020626, 1757297023118462976, 1762112351866400768); +INSERT INTO `iam_role_path` VALUES (1762112867598020627, 1757297023118462976, 1762112351862206469); +INSERT INTO `iam_role_path` VALUES (1762112867598020628, 1757297023118462976, 1762112351862206468); +INSERT INTO `iam_role_path` VALUES (1762112867598020629, 1757297023118462976, 1762112351862206464); +INSERT INTO `iam_role_path` VALUES (1762112867598020630, 1757297023118462976, 1762112351866400792); +INSERT INTO `iam_role_path` VALUES (1762112867598020631, 1757297023118462976, 1762112351866400790); +INSERT INTO `iam_role_path` VALUES (1762112867598020632, 1757297023118462976, 1762112351866400781); +INSERT INTO `iam_role_path` VALUES (1762112867598020633, 1757297023118462976, 1762112351866400775); +INSERT INTO `iam_role_path` VALUES (1762112867598020634, 1757297023118462976, 1762112351862206466); +INSERT INTO `iam_role_path` VALUES (1762112867598020635, 1757297023118462976, 1762112351866400776); +INSERT INTO `iam_role_path` VALUES (1762112867598020636, 1757297023118462976, 1762112351862206470); +INSERT INTO `iam_role_path` VALUES (1762112867598020637, 1757297023118462976, 1762112351866400784); +INSERT INTO `iam_role_path` VALUES (1762112867598020638, 1757297023118462976, 1762112351866400777); +INSERT INTO `iam_role_path` VALUES (1762112867598020639, 1757297023118462976, 1762112351866400771); +INSERT INTO `iam_role_path` VALUES (1762112867598020640, 1757297023118462976, 1762112351862206467); +INSERT INTO `iam_role_path` VALUES (1762112867598020641, 1757297023118462976, 1762112351862206465); +INSERT INTO `iam_role_path` VALUES (1762112867837095936, 1757298887092326400, 1762112351866400794); +INSERT INTO `iam_role_path` VALUES (1762112867837095937, 1757298887092326400, 1762112351866400793); +INSERT INTO `iam_role_path` VALUES (1762112867837095938, 1757298887092326400, 1762112351866400786); +INSERT INTO `iam_role_path` VALUES (1762112867837095939, 1757298887092326400, 1762112351866400780); +INSERT INTO `iam_role_path` VALUES (1762112867837095940, 1757298887092326400, 1762112351866400774); +INSERT INTO `iam_role_path` VALUES (1762112867837095941, 1757298887092326400, 1762112351866400772); +INSERT INTO `iam_role_path` VALUES (1762112867837095942, 1757298887092326400, 1762112351866400770); +INSERT INTO `iam_role_path` VALUES (1762112867837095943, 1757298887092326400, 1762112351862206476); +INSERT INTO `iam_role_path` VALUES (1762112867837095944, 1757298887092326400, 1762112351866400787); +INSERT INTO `iam_role_path` VALUES (1762112867837095945, 1757298887092326400, 1762112351866400782); +INSERT INTO `iam_role_path` VALUES (1762112867837095946, 1757298887092326400, 1762112351862206472); +INSERT INTO `iam_role_path` VALUES (1762112867837095947, 1757298887092326400, 1762112351866400788); +INSERT INTO `iam_role_path` VALUES (1762112867837095948, 1757298887092326400, 1762112351862206471); +INSERT INTO `iam_role_path` VALUES (1762112867837095949, 1757298887092326400, 1762112351866400789); +INSERT INTO `iam_role_path` VALUES (1762112867837095950, 1757298887092326400, 1762112351866400779); +INSERT INTO `iam_role_path` VALUES (1762112867837095951, 1757298887092326400, 1762112351862206474); +INSERT INTO `iam_role_path` VALUES (1762112867837095952, 1757298887092326400, 1762112351866400791); +INSERT INTO `iam_role_path` VALUES (1762112867837095953, 1757298887092326400, 1762112351866400773); +INSERT INTO `iam_role_path` VALUES (1762112867837095954, 1757298887092326400, 1762112351866400768); +INSERT INTO `iam_role_path` VALUES (1762112867837095955, 1757298887092326400, 1762112351862206469); +INSERT INTO `iam_role_path` VALUES (1762112867837095956, 1757298887092326400, 1762112351862206468); +INSERT INTO `iam_role_path` VALUES (1762112867837095957, 1757298887092326400, 1762112351862206464); +INSERT INTO `iam_role_path` VALUES (1762112867837095958, 1757298887092326400, 1762112351866400792); +INSERT INTO `iam_role_path` VALUES (1762112867837095959, 1757298887092326400, 1762112351866400790); +INSERT INTO `iam_role_path` VALUES (1762112867837095960, 1757298887092326400, 1762112351866400781); +INSERT INTO `iam_role_path` VALUES (1762112867837095961, 1757298887092326400, 1762112351866400775); +INSERT INTO `iam_role_path` VALUES (1762112867837095962, 1757298887092326400, 1762112351862206466); +INSERT INTO `iam_role_path` VALUES (1762112867837095963, 1757298887092326400, 1762112351866400776); +INSERT INTO `iam_role_path` VALUES (1762112867837095964, 1757298887092326400, 1762112351862206470); +INSERT INTO `iam_role_path` VALUES (1762112867837095965, 1757298887092326400, 1762112351866400784); +INSERT INTO `iam_role_path` VALUES (1762112867837095966, 1757298887092326400, 1762112351866400777); +INSERT INTO `iam_role_path` VALUES (1762112867837095967, 1757298887092326400, 1762112351866400771); +INSERT INTO `iam_role_path` VALUES (1762112867837095968, 1757298887092326400, 1762112351862206467); +INSERT INTO `iam_role_path` VALUES (1762112867837095969, 1757298887092326400, 1762112351862206465); +INSERT INTO `iam_role_path` VALUES (1764931648924622848, 1757297023118462976, 1764663810424303620); +INSERT INTO `iam_role_path` VALUES (1764931648924622849, 1757297023118462976, 1764663810424303619); +INSERT INTO `iam_role_path` VALUES (1764931648924622850, 1757297023118462976, 1764663810424303618); +INSERT INTO `iam_role_path` VALUES (1764931648924622851, 1757297023118462976, 1764663810424303617); +INSERT INTO `iam_role_path` VALUES (1764931648924622852, 1757297023118462976, 1764663810424303616); +INSERT INTO `iam_role_path` VALUES (1768220144112201728, 1757297023118462976, 1768219994971140096); +INSERT INTO `iam_role_path` VALUES (1768220144112201729, 1757297023118462976, 1768219994979528705); +INSERT INTO `iam_role_path` VALUES (1768220144112201730, 1757297023118462976, 1768219994979528706); +INSERT INTO `iam_role_path` VALUES (1768220144611323904, 1757298887092326400, 1768219994971140096); +INSERT INTO `iam_role_path` VALUES (1768220144611323905, 1757298887092326400, 1768219994979528705); +INSERT INTO `iam_role_path` VALUES (1768220144611323906, 1757298887092326400, 1768219994979528706); + +-- ---------------------------- +-- Table structure for iam_user_data_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_data_role`; +CREATE TABLE `iam_user_data_role` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '数据角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_data_role +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_dept`; +CREATE TABLE `iam_user_dept` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_expand_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_expand_info`; +CREATE TABLE `iam_user_expand_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `sex` int(4) NULL DEFAULT NULL COMMENT '性别', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像', + `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '上次登录时间', + `current_login_time` datetime(0) NULL DEFAULT NULL COMMENT '本次登录时间', + `initial_password` bit(1) NOT NULL COMMENT '是否初始密码', + `expire_password` bit(1) NOT NULL COMMENT '密码是否过期', + `last_change_password_time` datetime(0) NULL DEFAULT NULL COMMENT '上次修改密码时间', + `register_time` datetime(0) NOT NULL COMMENT '注册时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_expand_info +-- ---------------------------- +INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2024-02-13 14:51:40', '2024-02-13 16:13:07', b'0', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 0, '2024-02-13 16:13:07', 419, b'0'); +INSERT INTO `iam_user_expand_info` VALUES (1757299137932677120, 1, '2024-02-13', NULL, '2024-02-13 15:03:21', '2024-02-13 16:09:27', b'0', b'0', NULL, '2024-02-13 15:02:18', 1399985191002447872, '2024-02-13 15:02:18', 1757299137932677120, '2024-02-13 16:09:44', 3, b'0'); +INSERT INTO `iam_user_expand_info` VALUES (1757317255899869184, NULL, NULL, NULL, NULL, '2024-02-13 16:17:59', b'0', b'0', NULL, '2024-02-13 16:14:18', 1399985191002447872, '2024-02-13 16:14:18', 0, '2024-02-13 16:17:59', 1, b'0'); + +-- ---------------------------- +-- Table structure for iam_user_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_info`; +CREATE TABLE `iam_user_info` ( + `id` bigint(20) NOT NULL, + `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', + `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱', + `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds', + `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员', + `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_info +-- ---------------------------- +INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.cn', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'normal', 1, '2021-06-02 15:04:15', 1399985191002447872, '2024-01-16 09:26:44', 64, 0); +INSERT INTO `iam_user_info` VALUES (1757299137932677120, 'DaxPay演示', 'daxpay', 'f52020dca765fd3943ed40a615dc2c5c', '14443332251', 'daxpay@qq.com', '1580487061605175296', b'0', 'normal', 1399985191002447872, '2024-02-13 15:02:18', 1757299137932677120, '2024-02-13 16:09:44', 2, 0); +INSERT INTO `iam_user_info` VALUES (1757317255899869184, 'DaxPay管理员', 'daxpayadmin', '1e9e3c3deaa4a06d08326e82a49d1b63', '12222333223', 'daxpayadmin@qq.com', '1580487061605175296', b'0', 'normal', 1399985191002447872, '2024-02-13 16:14:18', 1399985191002447872, '2024-02-13 16:14:18', 0, 0); + +-- ---------------------------- +-- Table structure for iam_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_role`; +CREATE TABLE `iam_user_role` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_role +-- ---------------------------- +INSERT INTO `iam_user_role` VALUES (1757299293314863104, 1757299137932677120, 1757298887092326400); +INSERT INTO `iam_user_role` VALUES (1757317495407210496, 1757317255899869184, 1757297023118462976); + +-- ---------------------------- +-- Table structure for iam_user_third +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_third`; +CREATE TABLE `iam_user_third` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId', + `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id', + `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId', + `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id', + `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识', + `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识', + `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_third +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_third_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_third_info`; +CREATE TABLE `iam_user_third_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型', + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像', + `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_third_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for miniapp_feedback_info +-- ---------------------------- +DROP TABLE IF EXISTS `miniapp_feedback_info`; +CREATE TABLE `miniapp_feedback_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `classify` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '问题分类', + `time` datetime(0) NULL DEFAULT NULL COMMENT '时间', + `contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '联系方式', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '姓名', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '反馈用户ID', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户反馈信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of miniapp_feedback_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for miniapp_user_protocol +-- ---------------------------- +DROP TABLE IF EXISTS `miniapp_user_protocol`; +CREATE TABLE `miniapp_user_protocol` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '编码', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户协议' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of miniapp_user_protocol +-- ---------------------------- + +-- ---------------------------- +-- Table structure for mtm_table +-- ---------------------------- +DROP TABLE IF EXISTS `mtm_table`; +CREATE TABLE `mtm_table` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `h1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `date` date NULL DEFAULT NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = 'actable测试' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of mtm_table +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_mail_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_mail_config`; +CREATE TABLE `notice_mail_config` ( + `id` bigint(20) NOT NULL, + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host', + `port` int(5) NOT NULL COMMENT '邮箱服务器 port', + `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username', + `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password', + `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender', + `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from', + `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl', + `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_mail_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_message_template +-- ---------------------------- +DROP TABLE IF EXISTS `notice_message_template`; +CREATE TABLE `notice_message_template` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_message_template +-- ---------------------------- +INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0); + +-- ---------------------------- +-- Table structure for notice_site_message +-- ---------------------------- +DROP TABLE IF EXISTS `notice_site_message`; +CREATE TABLE `notice_site_message` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', + `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id', + `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名', + `sender_time` datetime(0) NULL DEFAULT NULL COMMENT '发送时间', + `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态', + `efficient_time` datetime(0) NULL DEFAULT NULL COMMENT '截至有效期', + `cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤回时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_site_message +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_site_message_user +-- ---------------------------- +DROP TABLE IF EXISTS `notice_site_message_user`; +CREATE TABLE `notice_site_message_user` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `message_id` bigint(20) NOT NULL COMMENT '消息id', + `receive_id` bigint(20) NOT NULL COMMENT '接收者id', + `have_read` bit(1) NOT NULL COMMENT '已读/未读', + `read_time` datetime(0) NULL DEFAULT NULL COMMENT '已读时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引', + INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_site_message_user +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_sms_channel_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_channel_config`; +CREATE TABLE `notice_sms_channel_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey', + `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret', + `image` bigint(20) NULL DEFAULT NULL COMMENT '图片', + `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_channel_config +-- ---------------------------- +INSERT INTO `notice_sms_channel_config` VALUES (1688432603289337856, 'alibaba', '阿里云短信', 'normal', '1', '{\"accessKeyId\":\"1231231231232111\",\"accessKeySecret\":\"12312312321111\",\"signature\":\"1231\",\"templateId\":\"2312313\",\"templateName\":\"123\",\"requestUrl\":\"五千二无二\",\"action\":\"SendSms\",\"version\":\"11\",\"regionId\":\"cn-hangzhou\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 14:11:17', 1414143554414059520, '2023-08-07 15:35:34', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688456604610953216, 'huawei', '华为云短信', 'normal', '1', '{\"appKey\":\"1231231231232\",\"appSecret\":\"1111\",\"signature\":\"1\",\"sender\":\"1\",\"templateId\":\"12\",\"statusCallBack\":\"1\",\"url\":\"1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 15:46:39', 1414143554414059520, '2023-08-07 15:46:49', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688461302302732288, 'yunpian', '云片短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"callbackUrl\":null,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 16:05:19', 1414143554414059520, '2023-08-08 14:12:23', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788784751001600, 'tencent', '腾讯短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"sdkAppId\":null,\"territory\":\"ap-guangzhou\",\"connTimeout\":60,\"requestUrl\":\"sms.tencentcloudapi.com\",\"action\":\"SendSms\",\"version\":\"2021-01-11\",\"service\":\"sms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:37', 1414143554414059520, '2023-08-08 13:46:37', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788807228276736, 'uni_sms', '合一短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"isSimple\":true,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:42', 1414143554414059520, '2023-08-08 13:46:43', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788823900635136, 'netease', '网易云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"templateUrl\":\"https://api.netease.im/sms/sendtemplate.action\",\"codeUrl\":\"https://api.netease.im/sms/sendcode.action\",\"verifyUrl\":\"https://api.netease.im/sms/verifycode.action\",\"needUp\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:46', 1414143554414059520, '2023-08-08 13:46:47', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788846944141312, 'ctyun', '天翼云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"requestUrl\":\"https://sms-global.ctapi.ctyun.cn/sms/api/v1\",\"action\":\"SendSms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:52', 1414143554414059520, '2023-08-08 13:46:52', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788862987354112, 'emay', '亿美短信', 'normal', '1', '{\"appId\":\"1\",\"secretKey\":\"1\",\"requestUrl\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:56', 1414143554414059520, '2023-08-08 14:03:04', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788885141667840, 'cloopen', '容联短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"appId\":null,\"baseUrl\":\"https://app.cloopen.com:8883/2013-12-26\",\"serverIp\":null,\"serverPort\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:01', 1414143554414059520, '2023-08-08 13:47:01', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788904481603584, 'jd_cloud', '京东短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"region\":\"cn-north-1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:06', 1414143554414059520, '2023-08-08 13:47:06', 0, b'0'); + +-- ---------------------------- +-- Table structure for notice_sms_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_config`; +CREATE TABLE `notice_sms_config` ( + `id` bigint(18) NOT NULL, + `tid` bigint(18) NOT NULL COMMENT '租户id', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)', + `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `creator` bigint(18) NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `last_modifier` bigint(18) NULL DEFAULT NULL, + `last_modified_time` datetime(0) NULL DEFAULT NULL, + `version` int(10) NULL DEFAULT NULL, + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_sms_template +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_template`; +CREATE TABLE `notice_sms_template` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `supplier_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信渠道商类型', + `template_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信渠道商类型', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板名称', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '短信模板配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_template +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_wechat_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_wechat_config`; +CREATE TABLE `notice_wechat_config` ( + `id` bigint(18) NOT NULL, + `tid` bigint(18) NOT NULL COMMENT '租户id', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `creator` bigint(18) NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `last_modifier` bigint(18) NULL DEFAULT NULL, + `last_modified_time` datetime(0) NULL DEFAULT NULL, + `version` int(10) NULL DEFAULT NULL, + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_wechat_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_config`; +CREATE TABLE `pay_alipay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝商户appId', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知页面路径', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知页面路径', + `server_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关地址', + `auth_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '认证类型', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型 RSA2', + `alipay_public_key` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝公钥', + `private_key` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '私钥', + `app_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '应用公钥证书', + `alipay_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝公钥证书', + `alipay_root_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝CA根证书', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_config +-- ---------------------------- +INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0'); + +-- ---------------------------- +-- Table structure for pay_alipay_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_reconcile_bill_detail`; +CREATE TABLE `pay_alipay_reconcile_bill_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝交易号', + `out_trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号', + `trade_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `create_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建时间', + `end_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '完成时间', + `store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店编号', + `store_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店名称', + `operator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作员', + `terminal_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端号', + `other_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '对方账户', + `order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额(元)', + `real_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家实收(元)', + `alipay_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝红包(元)', + `jfb_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '集分宝(元)', + `alipay_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝优惠(元)', + `discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家优惠(元)', + `coupon_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '券核销金额(元)', + `coupon_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '券名称', + `coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家红包消费金额(元)', + `card_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡消费金额(元)', + `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款批次号/请求号', + `service_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务费(元)', + `split_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分润(元)', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝业务明细对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_reconcile_bill_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_reconcile_bill_total +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_reconcile_bill_total`; +CREATE TABLE `pay_alipay_reconcile_bill_total` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店编号', + `store_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店名称', + `total_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单总笔数', + `total_refund_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款订单总笔数', + `total_order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额(元)', + `total_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家实收(元)', + `total_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝优惠(元)', + `total_coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家优惠(元)', + `total_consume_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡消费金额(元)', + `total_service_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务费(元)', + `total_share_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分润(元)', + `total_net_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实收净额(元)', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝业务汇总对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_reconcile_bill_total +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_record`; +CREATE TABLE `pay_alipay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝流水记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_api_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_api_config`; +CREATE TABLE `pay_api_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', + `api` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口地址', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `notice_support` bit(1) NULL DEFAULT NULL COMMENT '支持回调通知', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notice` bit(1) NULL DEFAULT NULL COMMENT '是否开启回调通知', + `notice_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '默认通知地址', + `req_sign` bit(1) NULL DEFAULT NULL COMMENT '请求参数是否签名', + `res_sign` bit(1) NULL DEFAULT NULL COMMENT '响应参数是否签名', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调信息是否签名', + `record` bit(1) NULL DEFAULT NULL COMMENT '是否记录请求的信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付接口配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_api_config +-- ---------------------------- +INSERT INTO `pay_api_config` VALUES (1, 'pay', '/uniPay/pay', '统一支付接口 ', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/payObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:41', 7, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (2, 'simplePay', '/uniPay/simplePay', '简单支付接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/payObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:44', 11, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (3, 'close', '/uniPay/close', '支付关闭接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (4, 'refund', '/uniPay/refund', '统一退款接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/refundObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:33', 4, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (5, 'simpleRefund', '/uniPay/simpleRefund', '简单退款接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/refundObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:38', 4, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (6, 'syncPay', '/uniPay/syncPay', '支付同步接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (7, 'syncRefund', '/uniPay/syncRefund', '退款同步接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (8, 'transfer', '/uniPay/transfer', '统一转账接口', b'1', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (9, 'allocation', '/uniPay/allocation', '统一分账接口', b'1', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (10, 'queryPayOrder', '/uniPay/queryPayOrder', '支付订单查询接口', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (11, 'queryRefundOrder', '/uniPay/queryRefundOrder', '退款订单查询接口', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (12, 'getWxAuthUrl', '/unipay/assist/getWxAuthUrl', '获取微信OAuth2授权链接', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (13, 'getWxAccessToken', '/unipay/assist/getWxAccessToken', '获取微信AccessToken', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); + +-- ---------------------------- +-- Table structure for pay_callback_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_callback_record`; +CREATE TABLE `pay_callback_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单id', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关订单号', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付通道', + `callback_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回调类型', + `notify_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '通知消息', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回调处理状态', + `repair_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网关回调通知' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_callback_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_cash_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_cash_config`; +CREATE TABLE `pay_cash_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现金支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_cash_config +-- ---------------------------- +INSERT INTO `pay_cash_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 14:40:45', 4, b'0'); + +-- ---------------------------- +-- Table structure for pay_channel_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_channel_config`; +CREATE TABLE `pay_channel_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `icon_id` bigint(20) NULL DEFAULT NULL COMMENT 'ICON图片', + `bg_color` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡牌背景色', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付通道配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_channel_config +-- ---------------------------- +INSERT INTO `pay_channel_config` VALUES (1, 'ali_pay', '支付宝', NULL, NULL, b'1', '', 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-02-13 15:38:21', 10, b'0'); +INSERT INTO `pay_channel_config` VALUES (2, 'wechat_pay', '微信支付', NULL, NULL, b'1', '', 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-02-13 15:38:24', 7, b'0'); +INSERT INTO `pay_channel_config` VALUES (3, 'union_pay', '云闪付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-03-10 15:04:36', 2, b'0'); +INSERT INTO `pay_channel_config` VALUES (4, 'cash_pay', '现金支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); +INSERT INTO `pay_channel_config` VALUES (5, 'wallet_pay', '钱包支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); +INSERT INTO `pay_channel_config` VALUES (6, 'voucher_pay', '储值卡支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); + +-- ---------------------------- +-- Table structure for pay_channel_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_channel_order`; +CREATE TABLE `pay_channel_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付id', + `async` bit(1) NULL DEFAULT NULL COMMENT '异步支付方式', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `pay_way` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付方式', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '可退款金额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付状态', + `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付时间', + `channel_extra` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附加支付参数', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单关联支付时通道信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_channel_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_client_notice_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_client_notice_record`; +CREATE TABLE `pay_client_notice_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `task_id` bigint(20) NULL DEFAULT NULL COMMENT '任务ID', + `req_count` int(11) NULL DEFAULT NULL COMMENT '请求次数', + `success` bit(1) NULL DEFAULT NULL COMMENT '发送是否成功', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `send_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送类型', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息通知任务记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_client_notice_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_client_notice_task +-- ---------------------------- +DROP TABLE IF EXISTS `pay_client_notice_task`; +CREATE TABLE `pay_client_notice_task` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', + `success` bit(1) NULL DEFAULT NULL COMMENT '是否发送成功', + `send_count` int(11) NULL DEFAULT NULL COMMENT '发送次数', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送地址', + `latest_time` datetime(0) NULL DEFAULT NULL COMMENT '最后发送时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `notice_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `order_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单状态', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息通知任务' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_client_notice_task +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_close_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_close_record`; +CREATE TABLE `pay_close_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付记录id', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务号', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关闭的异步支付通道', + `closed` bit(1) NULL DEFAULT NULL COMMENT '是否关闭成功', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误消息', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端IP', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付关闭记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_close_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order`; +CREATE TABLE `pay_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联的业务号', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `combination_pay` bit(1) NULL DEFAULT NULL COMMENT '是否是组合支付', + `async_pay` bit(1) NULL DEFAULT NULL COMMENT '是否是异步支付', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步支付通道', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '可退款余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付状态', + `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付时间', + `close_time` datetime(0) NULL DEFAULT NULL COMMENT '关闭时间', + `expired_time` datetime(0) NULL DEFAULT NULL COMMENT '过期时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `business_no`(`business_no`) USING BTREE COMMENT '业务业务号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_order_extra +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order_extra`; +CREATE TABLE `pay_order_extra` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步跳转地址', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调通知时是否需要进行签名', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知地址,以最后一次为准', + `attach` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户扩展参数', + `req_sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型', + `req_sign` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名', + `req_time` datetime(0) NULL DEFAULT NULL COMMENT '请求时间,传输时间戳,以最后一次为准', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付终端ip', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_order_extra +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_platform_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_platform_config`; +CREATE TABLE `pay_platform_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `website_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网站地址', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名方式', + `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名秘钥', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付通知地址', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步支付通知地址', + `order_timeout` int(11) NULL DEFAULT NULL COMMENT '订单默认超时时间(分钟)', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付平台配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_platform_config +-- ---------------------------- +INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '132456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0'); + +-- ---------------------------- +-- Table structure for pay_reconcile_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_detail`; +CREATE TABLE `pay_reconcile_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `amount` int(11) NULL DEFAULT NULL COMMENT '交易金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易类型', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地订单ID', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付对账记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_reconcile_diff_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_diff_record`; +CREATE TABLE `pay_reconcile_diff_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单ID', + `detail_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单明细ID', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单标题', + `order_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单类型', + `diff_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '差异类型', + `diffs` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '差异内容', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `amount` int(11) NULL DEFAULT NULL COMMENT '交易金额', + `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '对账差异单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_diff_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_reconcile_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_order`; +CREATE TABLE `pay_reconcile_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '批次号', + `date` date NULL DEFAULT NULL COMMENT '日期', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `down` bit(1) NULL DEFAULT NULL COMMENT '是否下载成功', + `compare` bit(1) NULL DEFAULT NULL COMMENT '是否比对完成', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `批次号索引`(`batch_no`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付对账单订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_channel_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_channel_order`; +CREATE TABLE `pay_refund_channel_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `refund_id` bigint(20) NULL DEFAULT NULL COMMENT '关联退款id', + `pay_channel_id` bigint(20) NULL DEFAULT NULL COMMENT '通道支付单id', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `async` bit(1) NULL DEFAULT NULL COMMENT '异步支付方式', + `order_amount` int(11) NULL DEFAULT NULL COMMENT '订单金额', + `amount` int(11) NULL DEFAULT NULL COMMENT '退款金额', + `refundable_amount` int(11) NULL DEFAULT NULL COMMENT '剩余可退余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `refund_time` datetime(0) NULL DEFAULT NULL COMMENT '退款完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付退款通道订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_channel_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_order`; +CREATE TABLE `pay_refund_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '原支付id', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原支付业务号', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原支付标题', + `refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款号', + `async_pay` bit(1) NULL DEFAULT NULL COMMENT '是否含有异步通道', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通道', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `order_amount` int(11) NULL DEFAULT NULL COMMENT '订单金额', + `amount` int(11) NULL DEFAULT NULL COMMENT '退款金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '剩余可退', + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款原因', + `refund_time` datetime(0) NULL DEFAULT NULL COMMENT '退款完成时间', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '退款订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_order_extra +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_order_extra`; +CREATE TABLE `pay_refund_order_extra` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调通知时是否需要进行签名', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知地址', + `attach` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户扩展参数', + `req_sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求签名值', + `req_sign` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求签名值', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `req_time` datetime(0) NULL DEFAULT NULL COMMENT '请求时间,传输时间戳', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付终端ip', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '退款订单扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_order_extra +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_repair_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_repair_record`; +CREATE TABLE `pay_repair_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `repair_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复号', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地业务号', + `repair_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复类型', + `repair_source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复来源', + `repair_way` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复方式', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复的异步通道', + `before_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复前状态', + `after_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复后状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付修复记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_repair_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_sync_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_sync_record`; +CREATE TABLE `pay_sync_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地业务号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `sync_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步类型', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步的异步通道', + `sync_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '同步消息', + `gateway_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关返回状态', + `repair_order` bit(1) NULL DEFAULT NULL COMMENT '是否进行修复', + `repair_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复单号', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误消息', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端IP', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付同步订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_sync_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_union_pay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_pay_config`; +CREATE TABLE `pay_union_pay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `mach_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户号', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `server_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关地址', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知路径', + `pay_ways` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `seller` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户收款账号', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型', + `cert_sign` bit(1) NULL DEFAULT NULL COMMENT '是否为证书签名', + `key_private_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '应用私钥证书', + `key_private_cert_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '私钥证书对应的密码', + `acp_middle_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '中级证书', + `acp_root_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '根证书', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知页面路径', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_pay_config +-- ---------------------------- +INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0'); + +-- ---------------------------- +-- Table structure for pay_union_pay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_pay_record`; +CREATE TABLE `pay_union_pay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付流水记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_pay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher`; +CREATE TABLE `pay_voucher` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `card_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡号', + `face_value` int(11) NULL DEFAULT NULL COMMENT '面值', + `balance` int(11) NULL DEFAULT NULL COMMENT '余额', + `enduring` bit(1) NULL DEFAULT NULL COMMENT '是否长期有效', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + INDEX `card_no`(`card_no`) USING BTREE COMMENT '卡号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_voucher_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher_config`; +CREATE TABLE `pay_voucher_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher_config +-- ---------------------------- +INSERT INTO `pay_voucher_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 17:01:25', 7, b'0'); + +-- ---------------------------- +-- Table structure for pay_voucher_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher_record`; +CREATE TABLE `pay_voucher_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `voucher_id` bigint(20) NULL DEFAULT NULL COMMENT '储值卡id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `old_amount` int(11) NULL DEFAULT NULL COMMENT '变动之前的金额', + `new_amount` int(11) NULL DEFAULT NULL COMMENT '变动之后的金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `voucher_id`(`voucher_id`) USING BTREE COMMENT '储值卡ID' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wallet +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet`; +CREATE TABLE `pay_wallet` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联用户id', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钱包名称', + `balance` int(11) NULL DEFAULT NULL COMMENT '余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + INDEX `用户ID索引`(`user_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wallet_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet_config`; +CREATE TABLE `pay_wallet_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet_config +-- ---------------------------- +INSERT INTO `pay_wallet_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 14:40:45', 4, b'0'); + +-- ---------------------------- +-- Table structure for pay_wallet_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet_record`; +CREATE TABLE `pay_wallet_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `wallet_id` bigint(20) NULL DEFAULT NULL COMMENT '钱包id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `old_amount` int(11) NULL DEFAULT NULL COMMENT '变动之前的金额', + `new_amount` int(11) NULL DEFAULT NULL COMMENT '变动之后的金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `wallet_id`(`wallet_id`) USING BTREE COMMENT '钱包ID' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_way_info +-- ---------------------------- +DROP TABLE IF EXISTS `pay_way_info`; +CREATE TABLE `pay_way_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付方式' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_way_info +-- ---------------------------- +INSERT INTO `pay_way_info` VALUES (1, 'normal', '常规支付', '同步支付使用这个', 0, '2024-01-09 10:01:21', 1399985191002447872, '2024-02-13 15:39:16', 1, b'0'); +INSERT INTO `pay_way_info` VALUES (2, 'wap', 'wap支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (3, 'app', '应用支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (4, 'web', 'web支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (6, 'barcode', '付款码', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (7, 'jsapi', '公众号/小程序支付', '主要是微信使用', 0, '2024-01-09 10:01:21', 1399985191002447872, '2024-02-13 15:38:57', 1, b'0'); + +-- ---------------------------- +-- Table structure for pay_wechat_notice_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_notice_config`; +CREATE TABLE `pay_wechat_notice_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用id', + `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用秘钥', + `qr_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公众号二维码', + `oauth2_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'OAuth2地址', + `verify_file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信校验文件名称', + `verify_file_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信校验文件内容', + `template_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息Id', + `template_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息内容', + `template_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息通知相关配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_notice_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_pay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_pay_config`; +CREATE TABLE `pay_wechat_pay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `wx_mch_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信商户号', + `wx_app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信应用appId', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知路径', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知路径', + `api_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口版本', + `api_key_v2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APIv2 密钥', + `api_key_v3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APIv3 密钥', + `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APPID对应的接口密码', + `p12` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'API证书中p12证书Base64', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `pay_ways` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_pay_config +-- ---------------------------- +INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', '0', NULL, 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', NULL, '0', 'wap,app,jsapi,qrcode,barcode', 0, '0000-00-00 00:00:00', 2024, '0000-00-00 00:00:00', 2024, b'1'); + +-- ---------------------------- +-- Table structure for pay_wechat_pay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_pay_record`; +CREATE TABLE `pay_wechat_pay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_pay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_reconcile_bill_detail`; +CREATE TABLE `pay_wechat_reconcile_bill_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `transaction_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易时间', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公众账号ID', + `merchant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户号', + `sub_merchant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '特约商户号', + `wei_xin_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信订单号', + `mch_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号', + `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户标识', + `device_info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备号', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易类型', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易状态', + `bank` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '付款银行', + `currency` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '货币种类', + `amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应结订单金额', + `envelope_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代金券金额', + `wx_refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信退款单号', + `mch_refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户退款单号', + `refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款金额', + `coupon_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '充值券退款金额', + `refund_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款类型', + `refund_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `mch_data_packet` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户数据包', + `premium` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手续费', + `rates` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费率', + `order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额', + `apply_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请退款金额', + `rates_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费率备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信对账单明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_reconcile_bill_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_reconcile_bill_total +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_reconcile_bill_total`; +CREATE TABLE `pay_wechat_reconcile_bill_total` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `total_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '总交易单数', + `total_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应结订单总金额', + `total_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款总金额', + `total_refund_coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '充值券退款总金额', + `total_fee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手续费总金额', + `total_order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单总金额', + `apply_total_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请退款总金额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信对账单汇总' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_reconcile_bill_total +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_blob_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_blob_triggers`; +CREATE TABLE `qrtz_blob_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `BLOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_blob_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_calendars +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_calendars`; +CREATE TABLE `qrtz_calendars` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR` blob NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_calendars +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_cron_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_cron_triggers`; +CREATE TABLE `qrtz_cron_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_cron_triggers +-- ---------------------------- +INSERT INTO `qrtz_cron_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '0/5 * * * * ? *', 'Asia/Shanghai'); + +-- ---------------------------- +-- Table structure for qrtz_fired_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_fired_triggers`; +CREATE TABLE `qrtz_fired_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `FIRED_TIME` bigint(13) NOT NULL, + `SCHED_TIME` bigint(13) NOT NULL, + `PRIORITY` int(11) NOT NULL, + `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, + INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE, + INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE, + INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_fired_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_job_details +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_job_details`; +CREATE TABLE `qrtz_job_details` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_job_details +-- ---------------------------- +INSERT INTO `qrtz_job_details` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', NULL, 'cn.bootx.platform.daxpay.service.task.PayExpiredTimeTask', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C77080000001000000001740009706172616D65746572707800); + +-- ---------------------------- +-- Table structure for qrtz_locks +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_locks`; +CREATE TABLE `qrtz_locks` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_locks +-- ---------------------------- +INSERT INTO `qrtz_locks` VALUES ('quartzScheduler', 'TRIGGER_ACCESS'); + +-- ---------------------------- +-- Table structure for qrtz_paused_trigger_grps +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; +CREATE TABLE `qrtz_paused_trigger_grps` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_paused_trigger_grps +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_scheduler_state +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_scheduler_state`; +CREATE TABLE `qrtz_scheduler_state` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LAST_CHECKIN_TIME` bigint(13) NOT NULL, + `CHECKIN_INTERVAL` bigint(13) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_scheduler_state +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_simple_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simple_triggers`; +CREATE TABLE `qrtz_simple_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REPEAT_COUNT` bigint(7) NOT NULL, + `REPEAT_INTERVAL` bigint(12) NOT NULL, + `TIMES_TRIGGERED` bigint(10) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_simple_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_simprop_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simprop_triggers`; +CREATE TABLE `qrtz_simprop_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `INT_PROP_1` int(11) NULL DEFAULT NULL, + `INT_PROP_2` int(11) NULL DEFAULT NULL, + `LONG_PROP_1` bigint(20) NULL DEFAULT NULL, + `LONG_PROP_2` bigint(20) NULL DEFAULT NULL, + `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, + `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, + `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_simprop_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_triggers`; +CREATE TABLE `qrtz_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PRIORITY` int(11) NULL DEFAULT NULL, + `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `START_TIME` bigint(13) NOT NULL, + `END_TIME` bigint(13) NULL DEFAULT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_triggers +-- ---------------------------- +INSERT INTO `qrtz_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '1546857070483939328', 'DEFAULT', NULL, 1708956430000, 1708956425000, 5, 'WAITING', 'CRON', 1708844216000, 0, NULL, 0, ''); + +-- ---------------------------- +-- Table structure for starter_audit_data_version +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_data_version`; +CREATE TABLE `starter_audit_data_version` ( + `id` bigint(20) NOT NULL, + `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称', + `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称', + `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键', + `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容', + `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容', + `version` int(10) NOT NULL COMMENT '版本', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_data_version +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_audit_login_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_login_log`; +CREATE TABLE `starter_audit_login_log` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id', + `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称', + `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态', + `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端', + `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式', + `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址', + `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点', + `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统', + `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型', + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息', + `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_login_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_audit_operate_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_operate_log`; +CREATE TABLE `starter_audit_operate_log` ( + `id` bigint(20) NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块', + `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号', + `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法', + `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式', + `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url', + `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip', + `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点', + `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数', + `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数', + `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功', + `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示', + `operate_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_operate_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_ding_media_md5 +-- ---------------------------- +DROP TABLE IF EXISTS `starter_ding_media_md5`; +CREATE TABLE `starter_ding_media_md5` ( + `id` bigint(20) NOT NULL, + `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id', + `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_ding_media_md5 +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_ding_robot_config +-- ---------------------------- +DROP TABLE IF EXISTS `starter_ding_robot_config`; +CREATE TABLE `starter_ding_robot_config` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token', + `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签', + `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_ding_robot_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_file_data +-- ---------------------------- +DROP TABLE IF EXISTS `starter_file_data`; +CREATE TABLE `starter_file_data` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储', + `data` longblob NULL COMMENT '数据方式存储', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_file_data +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_file_upload_info +-- ---------------------------- +DROP TABLE IF EXISTS `starter_file_upload_info`; +CREATE TABLE `starter_file_upload_info` ( + `id` bigint(20) NOT NULL COMMENT '文件id', + `url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件访问地址', + `size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小,单位字节', + `filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `original_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原始文件名', + `base_path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '基础存储路径', + `path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储路径', + `ext` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件扩展名', + `content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'MIME类型', + `platform` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储平台', + `th_url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图访问路径', + `th_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图名称', + `th_size` bigint(20) NULL DEFAULT NULL COMMENT '缩略图大小,单位字节', + `th_content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图MIME类型', + `object_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象id', + `object_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象类型,例如用户头像,评价图片', + `metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件元数据', + `user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件用户元数据', + `th_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图元数据', + `th_user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图用户元数据', + `attr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '附加属性', + `file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件ACL', + `th_file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图文件ACL', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '文件记录表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_file_upload_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_quartz_job +-- ---------------------------- +DROP TABLE IF EXISTS `starter_quartz_job`; +CREATE TABLE `starter_quartz_job` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名', + `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式', + `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数', + `state` int(4) NULL DEFAULT NULL COMMENT '状态', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_quartz_job +-- ---------------------------- +INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.platform.starter.quartz.task.TestTask', '0/3 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2024-02-24 23:57:57', 29, 0); +INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.platform.daxpay.service.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后调用同步事件状态修复', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2024-02-25 14:56:56', 4, 0); +INSERT INTO `starter_quartz_job` VALUES (1761419490908958720, '客户系统通知重发任务', 'cn.bootx.platform.daxpay.service.task.ClientNoticeSendTask', '0/1 * * * * ? *', '', 1, '每秒调用一下当前需要进行通知的任务', 1399985191002447872, '2024-02-24 23:55:07', 1399985191002447872, '2024-03-05 23:05:09', 2, 0); +INSERT INTO `starter_quartz_job` VALUES (1764664552203743232, '支付宝定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '0 0 11 * * ? *', '{\"channel\":\"ali_pay\",\"n\":1}', 1, '', 1399985191002447872, '2024-03-04 22:49:50', 1399985191002447872, '2024-03-10 11:19:17', 3, 0); +INSERT INTO `starter_quartz_job` VALUES (1764667388106887168, '微信支付定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '0 0 11 * * ? *', '{\"channel\":\"wechat_pay\",\"n\":1}', 1, '', 1399985191002447872, '2024-03-04 23:01:06', 1399985191002447872, '2024-03-10 11:19:14', 3, 0); +INSERT INTO `starter_quartz_job` VALUES (1767553847839141888, '退款订单定时同步', 'cn.bootx.platform.daxpay.service.task.RefundSyncTask', '0 * * * * ? *', '', 1, '', 1399985191002447872, '2024-03-12 22:10:52', 1399985191002447872, '2024-03-12 22:10:59', 1, 0); + +-- ---------------------------- +-- Table structure for starter_quartz_job_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_quartz_job_log`; +CREATE TABLE `starter_quartz_job_log` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称', + `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名', + `success` bit(1) NOT NULL COMMENT '是否执行成功', + `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_quartz_job_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wecom_robot_config +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wecom_robot_config`; +CREATE TABLE `starter_wecom_robot_config` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wecom_robot_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_fans +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_fans`; +CREATE TABLE `starter_wx_fans` ( + `id` bigint(20) NOT NULL, + `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId', + `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态', + `subscribe_time` datetime(0) NULL DEFAULT NULL COMMENT '订阅时间', + `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称', + `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别', + `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言', + `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家', + `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份', + `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市', + `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_fans +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_menu +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_menu`; +CREATE TABLE `starter_wx_menu` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息', + `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `publish` bit(1) NOT NULL COMMENT '是否发布', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_menu +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_template +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_template`; +CREATE TABLE `starter_wx_template` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', + `enable` bit(1) NOT NULL COMMENT '是否启用', + `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题', + `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业', + `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业', + `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容', + `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_template +-- ---------------------------- + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.4/2.0.4.update.data.sql b/_config/sql/2.0.4/2.0.4.update.data.sql new file mode 100644 index 00000000..b6946f34 --- /dev/null +++ b/_config/sql/2.0.4/2.0.4.update.data.sql @@ -0,0 +1,81 @@ +SET FOREIGN_KEY_CHECKS = 0; + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460544, 'CockpitReportController#getRefundChannelInfo', '显示通道退款订单金额和订单数', 'GET', '/report/cockpit/getRefundChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道退款订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460545, 'CockpitReportController#getRefundAmount', '退款金额(分)', 'GET', '/report/cockpit/getRefundAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460546, 'CockpitReportController#getRefundOrderCount', '退款订单数量', 'GET', '/report/cockpit/getRefundOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460547, 'CockpitReportController#getPayChannelInfo', '显示通道支付订单金额和订单数', 'GET', '/report/cockpit/getPayChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道支付订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460548, 'ReconcileOrderController#upload', '手动上传对账单文件', 'POST', '/order/reconcile/upload', '对账控制器', b'1', b'1', '对账控制器 手动上传对账单文件', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460549, 'CockpitReportController#getPayAmount', '支付金额(分)', 'GET', '/report/cockpit/getPayAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1772446740356460550, 'CockpitReportController#getPayOrderCount', '支付订单数量', 'GET', '/report/cockpit/getPayOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +DELETE FROM `iam_role_path` WHERE `id` = 1757299898825560083; + +DELETE FROM `iam_role_path` WHERE `id` = 1757299898825560084; + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571904, 1757297023118462976, 1772446740356460550); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571905, 1757297023118462976, 1772446740356460549); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571906, 1757297023118462976, 1772446740356460547); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571907, 1757297023118462976, 1772446740356460546); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571908, 1757297023118462976, 1772446740356460545); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571909, 1757297023118462976, 1772446740356460544); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571910, 1757297023118462976, 1772446740356460548); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571911, 1757297023118462976, 1768219994979528711); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571912, 1757297023118462976, 1768219994979528710); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571913, 1757297023118462976, 1768219994979528704); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446949400571914, 1757297023118462976, 1768219994979528707); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234688, 1757298887092326400, 1772446740356460550); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234689, 1757298887092326400, 1772446740356460549); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234690, 1757298887092326400, 1772446740356460547); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234691, 1757298887092326400, 1772446740356460546); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234692, 1757298887092326400, 1772446740356460545); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234693, 1757298887092326400, 1772446740356460544); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234694, 1757298887092326400, 1772446740356460548); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234695, 1757298887092326400, 1768219994979528711); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234696, 1757298887092326400, 1768219994979528710); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772446952005234697, 1757298887092326400, 1768219994979528704); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772447125519396864, 1757298887092326400, 1764663810424303620); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772447125519396865, 1757298887092326400, 1764663810424303619); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772447125519396866, 1757298887092326400, 1764663810424303618); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772447125519396867, 1757298887092326400, 1764663810424303617); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1772447125519396868, 1757298887092326400, 1764663810424303616); + +UPDATE `pay_alipay_config` SET `app_id` = '123456', `enable` = b'1', `notify_url` = 'ServerUrl/callback/pay/alipay', `return_url` = 'ServerUrl/return/pay/alipay', `server_url` = 'https://openapi.alipay.com/gateway.do', `auth_type` = 'key', `sign_type` = 'RSA2', `alipay_public_key` = 'ImfODRp7hnJ3DUk9fCes0Q==', `private_key` = 'ImfODRp7hnJ3DUk9fCes0Q==', `app_cert` = NULL, `alipay_cert` = NULL, `alipay_root_cert` = NULL, `sandbox` = b'0', `pay_ways` = 'wap,app,web,qrcode,barcode', `remark` = '支付宝支付', `creator` = 0, `create_time` = '2024-01-02 21:17:58', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 15:43:51', `version` = 23, `deleted` = b'0', `single_limit` = NULL, `alipay_user_id` = NULL WHERE `id` = 0; + +UPDATE `pay_platform_config` SET `website_url` = 'http://127.0.0.1', `sign_type` = 'HMAC_SHA256', `sign_secret` = '132456', `notify_url` = 'http://127.0.0.1/h5/#/result/success', `return_url` = 'http://127.0.0.1/h5/#/result/success', `order_timeout` = 30, `creator` = 0, `create_time` = '2024-01-02 20:23:19', `last_modifier` = 1757299137932677120, `last_modified_time` = '2024-02-13 15:08:51', `version` = 3, `deleted` = b'0', `limit_amount` = NULL WHERE `id` = 0; + +UPDATE `pay_union_pay_config` SET `mach_id` = '123456', `enable` = b'1', `server_url` = 'https://qra.95516.com/pay/gateway', `notify_url` = 'ServerUrl/callback/pay/union', `pay_ways` = 'wap,app,web,qrcode,barcode,jsapi,b2b', `remark` = NULL, `seller` = NULL, `sign_type` = 'RSA2', `cert_sign` = b'0', `key_private_cert` = NULL, `key_private_cert_pwd` = NULL, `acp_middle_cert` = NULL, `acp_root_cert` = NULL, `sandbox` = b'1', `return_url` = 'ServerUrl/return/pay/union', `creator` = 0, `create_time` = '2024-03-06 22:56:22', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-03-12 23:30:18', `version` = 11, `deleted` = b'0', `single_limit` = NULL WHERE `id` = 0; + +UPDATE `pay_wechat_pay_config` SET `wx_mch_id` = '123', `wx_app_id` = '123', `enable` = b'1', `notify_url` = 'ServerUrl/callback/pay/wechat', `return_url` = 'ServerUrl/pay/wechat', `api_version` = '0', `api_key_v2` = NULL, `api_key_v3` = 'E0jIzPNngkpkZYL19H3vFQ==', `app_secret` = 'E0jIzPNngkpkZYL19H3vFQ==', `p12` = 'E0jIzPNngkpkZYL19H3vFQ==', `sandbox` = NULL, `pay_ways` = '0', `remark` = 'wap,app,jsapi,qrcode,barcode', `creator` = 0, `create_time` = '0000-00-00 00:00:00', `last_modifier` = 2024, `last_modified_time` = '0000-00-00 00:00:00', `version` = 2024, `deleted` = b'1', `single_limit` = NULL WHERE `id` = 0; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.4/2.0.4.update.table.sql b/_config/sql/2.0.4/2.0.4.update.table.sql new file mode 100644 index 00000000..cbd9c883 --- /dev/null +++ b/_config/sql/2.0.4/2.0.4.update.table.sql @@ -0,0 +1,44 @@ +SET FOREIGN_KEY_CHECKS=0; + +ALTER TABLE `pay_alipay_config` ADD COLUMN `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额' AFTER `deleted`; + +ALTER TABLE `pay_alipay_config` ADD COLUMN `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID' AFTER `single_limit`; + +ALTER TABLE `pay_channel_order` MODIFY COLUMN `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付完成时间' AFTER `status`; + +ALTER TABLE `pay_platform_config` ADD COLUMN `limit_amount` int(11) NULL DEFAULT NULL COMMENT '支付限额' AFTER `deleted`; + +ALTER TABLE `pay_platform_config` MODIFY COLUMN `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步支付跳转地址' AFTER `notify_url`; + +CREATE TABLE `pay_transfer_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `out_trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `amount` int(11) NULL DEFAULT NULL, + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `success_time` datetime(0) NULL DEFAULT NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '转账订单' ROW_FORMAT = Dynamic; + +ALTER TABLE `pay_union_pay_config` ADD COLUMN `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额' AFTER `deleted`; + +CREATE TABLE `pay_union_reconcile_bill_detail` ( + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `trade_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易代码', + `txn_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易传输时间', + `txn_amt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易金额', + `query_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '查询流水号', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付业务明细对账单' ROW_FORMAT = Dynamic; + +ALTER TABLE `pay_wechat_pay_config` ADD COLUMN `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额' AFTER `deleted`; + +SET FOREIGN_KEY_CHECKS=1; diff --git a/_config/sql/dax-pay.sql b/_config/sql/dax-pay.sql index d9ea503a..75b00753 100644 --- a/_config/sql/dax-pay.sql +++ b/_config/sql/dax-pay.sql @@ -8,7 +8,7 @@ Target Server Version : 50743 File Encoding : 65001 - Date: 14/03/2024 18:59:35 + Date: 26/03/2024 10:58:01 */ SET NAMES utf8mb4; @@ -1494,6 +1494,13 @@ INSERT INTO `iam_perm_path` VALUES (1768219994979528708, 'PayReturnController#un INSERT INTO `iam_perm_path` VALUES (1768219994979528709, 'PayCallbackController#unionPayNotify', '云闪付支付信息回调', 'POST', '/callback/pay/union', '支付通道信息回调', b'1', b'1', '支付通道信息回调 云闪付支付信息回调', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1768219994979528710, 'UnionPayConfigController#toBase64', '读取证书文件内容', 'POST', '/union/pay/config/toBase64', '云闪付配置', b'1', b'1', '云闪付配置 读取证书文件内容', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1768219994979528711, 'UnionPayConfigController#findPayWays', '支持的支付方式', 'GET', '/union/pay/config/findPayWays', '云闪付配置', b'1', b'1', '云闪付配置 支持的支付方式', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460544, 'CockpitReportController#getRefundChannelInfo', '显示通道退款订单金额和订单数', 'GET', '/report/cockpit/getRefundChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道退款订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460545, 'CockpitReportController#getRefundAmount', '退款金额(分)', 'GET', '/report/cockpit/getRefundAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460546, 'CockpitReportController#getRefundOrderCount', '退款订单数量', 'GET', '/report/cockpit/getRefundOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460547, 'CockpitReportController#getPayChannelInfo', '显示通道支付订单金额和订单数', 'GET', '/report/cockpit/getPayChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道支付订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460548, 'ReconcileOrderController#upload', '手动上传对账单文件', 'POST', '/order/reconcile/upload', '对账控制器', b'1', b'1', '对账控制器 手动上传对账单文件', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460549, 'CockpitReportController#getPayAmount', '支付金额(分)', 'GET', '/report/cockpit/getPayAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460550, 'CockpitReportController#getPayOrderCount', '支付订单数量', 'GET', '/report/cockpit/getPayOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); -- ---------------------------- -- Table structure for iam_role @@ -1693,8 +1700,6 @@ INSERT INTO `iam_role_path` VALUES (1757299898825560079, 1757298887092326400, 17 INSERT INTO `iam_role_path` VALUES (1757299898825560080, 1757298887092326400, 1757297527152169054); INSERT INTO `iam_role_path` VALUES (1757299898825560081, 1757298887092326400, 1757297527152169041); INSERT INTO `iam_role_path` VALUES (1757299898825560082, 1757298887092326400, 1757297527152169016); -INSERT INTO `iam_role_path` VALUES (1757299898825560083, 1757298887092326400, 1757297527147974712); -INSERT INTO `iam_role_path` VALUES (1757299898825560084, 1757298887092326400, 1757297527147974657); INSERT INTO `iam_role_path` VALUES (1757299898825560086, 1757298887092326400, 1757297527152169126); INSERT INTO `iam_role_path` VALUES (1757299898825560087, 1757298887092326400, 1757297527152169084); INSERT INTO `iam_role_path` VALUES (1757299898825560089, 1757298887092326400, 1757297527156363312); @@ -1820,6 +1825,32 @@ INSERT INTO `iam_role_path` VALUES (1768220144112201730, 1757297023118462976, 17 INSERT INTO `iam_role_path` VALUES (1768220144611323904, 1757298887092326400, 1768219994971140096); INSERT INTO `iam_role_path` VALUES (1768220144611323905, 1757298887092326400, 1768219994979528705); INSERT INTO `iam_role_path` VALUES (1768220144611323906, 1757298887092326400, 1768219994979528706); +INSERT INTO `iam_role_path` VALUES (1772446949400571904, 1757297023118462976, 1772446740356460550); +INSERT INTO `iam_role_path` VALUES (1772446949400571905, 1757297023118462976, 1772446740356460549); +INSERT INTO `iam_role_path` VALUES (1772446949400571906, 1757297023118462976, 1772446740356460547); +INSERT INTO `iam_role_path` VALUES (1772446949400571907, 1757297023118462976, 1772446740356460546); +INSERT INTO `iam_role_path` VALUES (1772446949400571908, 1757297023118462976, 1772446740356460545); +INSERT INTO `iam_role_path` VALUES (1772446949400571909, 1757297023118462976, 1772446740356460544); +INSERT INTO `iam_role_path` VALUES (1772446949400571910, 1757297023118462976, 1772446740356460548); +INSERT INTO `iam_role_path` VALUES (1772446949400571911, 1757297023118462976, 1768219994979528711); +INSERT INTO `iam_role_path` VALUES (1772446949400571912, 1757297023118462976, 1768219994979528710); +INSERT INTO `iam_role_path` VALUES (1772446949400571913, 1757297023118462976, 1768219994979528704); +INSERT INTO `iam_role_path` VALUES (1772446949400571914, 1757297023118462976, 1768219994979528707); +INSERT INTO `iam_role_path` VALUES (1772446952005234688, 1757298887092326400, 1772446740356460550); +INSERT INTO `iam_role_path` VALUES (1772446952005234689, 1757298887092326400, 1772446740356460549); +INSERT INTO `iam_role_path` VALUES (1772446952005234690, 1757298887092326400, 1772446740356460547); +INSERT INTO `iam_role_path` VALUES (1772446952005234691, 1757298887092326400, 1772446740356460546); +INSERT INTO `iam_role_path` VALUES (1772446952005234692, 1757298887092326400, 1772446740356460545); +INSERT INTO `iam_role_path` VALUES (1772446952005234693, 1757298887092326400, 1772446740356460544); +INSERT INTO `iam_role_path` VALUES (1772446952005234694, 1757298887092326400, 1772446740356460548); +INSERT INTO `iam_role_path` VALUES (1772446952005234695, 1757298887092326400, 1768219994979528711); +INSERT INTO `iam_role_path` VALUES (1772446952005234696, 1757298887092326400, 1768219994979528710); +INSERT INTO `iam_role_path` VALUES (1772446952005234697, 1757298887092326400, 1768219994979528704); +INSERT INTO `iam_role_path` VALUES (1772447125519396864, 1757298887092326400, 1764663810424303620); +INSERT INTO `iam_role_path` VALUES (1772447125519396865, 1757298887092326400, 1764663810424303619); +INSERT INTO `iam_role_path` VALUES (1772447125519396866, 1757298887092326400, 1764663810424303618); +INSERT INTO `iam_role_path` VALUES (1772447125519396867, 1757298887092326400, 1764663810424303617); +INSERT INTO `iam_role_path` VALUES (1772447125519396868, 1757298887092326400, 1764663810424303616); -- ---------------------------- -- Table structure for iam_user_data_role @@ -2296,13 +2327,15 @@ CREATE TABLE `pay_alipay_config` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', + `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝支付配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_alipay_config -- ---------------------------- -INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0'); +INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0', NULL, NULL); -- ---------------------------- -- Table structure for pay_alipay_reconcile_bill_detail @@ -2525,7 +2558,7 @@ CREATE TABLE `pay_channel_order` ( `amount` int(11) NULL DEFAULT NULL COMMENT '金额', `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '可退款金额', `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付状态', - `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付时间', + `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付完成时间', `channel_extra` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附加支付参数', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', @@ -2678,7 +2711,7 @@ CREATE TABLE `pay_platform_config` ( `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名方式', `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名秘钥', `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付通知地址', - `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步支付通知地址', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步支付跳转地址', `order_timeout` int(11) NULL DEFAULT NULL COMMENT '订单默认超时时间(分钟)', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', @@ -2686,13 +2719,14 @@ CREATE TABLE `pay_platform_config` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `limit_amount` int(11) NULL DEFAULT NULL COMMENT '支付限额', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付平台配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_platform_config -- ---------------------------- -INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '132456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0'); +INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '132456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0', NULL); -- ---------------------------- -- Table structure for pay_reconcile_detail @@ -2903,6 +2937,32 @@ CREATE TABLE `pay_sync_record` ( -- Records of pay_sync_record -- ---------------------------- +-- ---------------------------- +-- Table structure for pay_transfer_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_transfer_order`; +CREATE TABLE `pay_transfer_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `out_trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `amount` int(11) NULL DEFAULT NULL, + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `success_time` datetime(0) NULL DEFAULT NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '转账订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_transfer_order +-- ---------------------------- + -- ---------------------------- -- Table structure for pay_union_pay_config -- ---------------------------- @@ -2930,13 +2990,14 @@ CREATE TABLE `pay_union_pay_config` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付支付配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_union_pay_config -- ---------------------------- -INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0'); +INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0', NULL); -- ---------------------------- -- Table structure for pay_union_pay_record @@ -2959,6 +3020,23 @@ CREATE TABLE `pay_union_pay_record` ( -- Records of pay_union_pay_record -- ---------------------------- +-- ---------------------------- +-- Table structure for pay_union_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_reconcile_bill_detail`; +CREATE TABLE `pay_union_reconcile_bill_detail` ( + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `trade_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易代码', + `txn_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易传输时间', + `txn_amt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易金额', + `query_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '查询流水号', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号' +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付业务明细对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_reconcile_bill_detail +-- ---------------------------- + -- ---------------------------- -- Table structure for pay_voucher -- ---------------------------- @@ -3189,13 +3267,14 @@ CREATE TABLE `pay_wechat_pay_config` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_wechat_pay_config -- ---------------------------- -INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', '0', NULL, 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', NULL, '0', 'wap,app,jsapi,qrcode,barcode', 0, '0000-00-00 00:00:00', 2024, '0000-00-00 00:00:00', 2024, b'1'); +INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', '0', NULL, 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', NULL, '0', 'wap,app,jsapi,qrcode,barcode', 0, '0000-00-00 00:00:00', 2024, '0000-00-00 00:00:00', 2024, b'1', NULL); -- ---------------------------- -- Table structure for pay_wechat_pay_record @@ -3362,6 +3441,7 @@ CREATE TABLE `qrtz_fired_triggers` ( -- ---------------------------- -- Records of qrtz_fired_triggers -- ---------------------------- +INSERT INTO `qrtz_fired_triggers` VALUES ('quartzScheduler', 'NON_CLUSTERED1711420949184', '1546857070483939328', 'DEFAULT', 'NON_CLUSTERED', 1711421986284, 1711421990000, 5, 'ACQUIRED', NULL, NULL, '0', '0'); -- ---------------------------- -- Table structure for qrtz_job_details @@ -3519,7 +3599,7 @@ CREATE TABLE `qrtz_triggers` ( -- ---------------------------- -- Records of qrtz_triggers -- ---------------------------- -INSERT INTO `qrtz_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '1546857070483939328', 'DEFAULT', NULL, 1708956430000, 1708956425000, 5, 'WAITING', 'CRON', 1708844216000, 0, NULL, 0, ''); +INSERT INTO `qrtz_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '1546857070483939328', 'DEFAULT', NULL, 1711421995000, 1711421990000, 5, 'ACQUIRED', 'CRON', 1708844216000, 0, NULL, 0, ''); -- ---------------------------- -- Table structure for starter_audit_data_version diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index c2df4fdf..1cf85d06 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -1,15 +1,27 @@ # CHANGELOG +## [v2.0.4] +- 新增: 首页驾驶舱功能: 各通道收入和支付情况 +- 新增: 云闪付支持对账功能 +- 新增: 对账文件支持手动导入 +- 新增: 结算台DEMO增加云闪付示例 +- 新增: 增加支付限额,包括整单限额和通道限额 +- 优化: 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 +- 优化: 前端列表状态显示优化 +- fix: 对账订单流水号生成规则不是按天生成修改 + ## [v2.0.3] - 增加云闪付通道,支持支付、退款、同步、回调处理 - 增加定时同步退款中的退款订单任务 - 增加通知任务订单的状态类型,例如订单关闭、成功、失败等 - 增加退款操作支持重试 - 增加手动触发通知任务消息的发送功能 + ## [v2.0.2] - 增加微信支付对账功能 - 增加支付宝支付对账功能 - 优化: 修复策略对订单时间和状态字段的变更优化 - fix: 前端支付订单查询条件中"支付ID"条件不生效 + ## [v2.0.1] - 增加支付、退款时客户通知功能,支持多次重发 - 开源文档增加支付通知和退款通知文档 @@ -31,7 +43,7 @@ - fix: 修复简单退款选择全部退款时报错问题 - fix: 修复退款时未检验退款金额问题,导致可以退款余额可以大于可退余额 -## [v2.0.3] +## [v2.0.0] - 支持支付宝支付: 扫码支付、付款码支付、PC支付、H5支付 - 支持微信支付: 扫码支付、WAP支付、公众号支付 - 增加聚合支付演示功能,支持支付宝和微信支付 diff --git a/daxpay-single-demo/pom.xml b/daxpay-single-demo/pom.xml index 2eb4cd91..44976351 100644 --- a/daxpay-single-demo/pom.xml +++ b/daxpay-single-demo/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform dax-pay - 2.0.3 + 2.0.4 daxpay-single-demo @@ -36,7 +36,7 @@ cn.bootx.platform daxpay-single-sdk - 2.0.3 + 2.0.4 diff --git a/daxpay-single-sdk/pom.xml b/daxpay-single-sdk/pom.xml index 4a238880..a399ccf3 100644 --- a/daxpay-single-sdk/pom.xml +++ b/daxpay-single-sdk/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single-sdk - 2.0.3 + 2.0.4 jar diff --git a/daxpay-single/daxpay-single-admin/pom.xml b/daxpay-single/daxpay-single-admin/pom.xml index 48a13f68..af007f5c 100644 --- a/daxpay-single/daxpay-single-admin/pom.xml +++ b/daxpay-single/daxpay-single-admin/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.3 + 2.0.4 daxpay-single-admin diff --git a/daxpay-single/daxpay-single-core/pom.xml b/daxpay-single/daxpay-single-core/pom.xml index 16314b31..a6abf109 100644 --- a/daxpay-single/daxpay-single-core/pom.xml +++ b/daxpay-single/daxpay-single-core/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.3 + 2.0.4 daxpay-single-core diff --git a/daxpay-single/daxpay-single-gateway/pom.xml b/daxpay-single/daxpay-single-gateway/pom.xml index a792156b..69ce8c08 100644 --- a/daxpay-single/daxpay-single-gateway/pom.xml +++ b/daxpay-single/daxpay-single-gateway/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.3 + 2.0.4 daxpay-single-gateway diff --git a/daxpay-single/daxpay-single-service/pom.xml b/daxpay-single/daxpay-single-service/pom.xml index d987e123..4c477fa9 100644 --- a/daxpay-single/daxpay-single-service/pom.xml +++ b/daxpay-single/daxpay-single-service/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.3 + 2.0.4 daxpay-single-service diff --git a/daxpay-single/daxpay-single-start/pom.xml b/daxpay-single/daxpay-single-start/pom.xml index c3d65fc3..e38bd3e5 100644 --- a/daxpay-single/daxpay-single-start/pom.xml +++ b/daxpay-single/daxpay-single-start/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.3 + 2.0.4 daxpay-single-start diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index bb465c00..a0b9630b 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -65,7 +65,7 @@ bootx: swagger: enabled: true author: bootx - version: 2.0.3 + version: 2.0.4 title: 开源支付平台-单商户 description: 开源支付平台-单商户版 # 多模块扫码 @@ -100,6 +100,7 @@ bootx: starter: # 认证 auth: + enable-admin: true default-password: 123456 ignore-urls: - '/actuator/**' diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml index dacc8b74..1122a67c 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml @@ -65,7 +65,7 @@ bootx: swagger: enabled: false author: bootx - version: 2.0.3 + version: 2.0.4 title: 开源支付平台-单商户 description: 开源支付平台-单商户版 # 缓存 diff --git a/daxpay-single/pom.xml b/daxpay-single/pom.xml index 79a3920b..f9219df4 100644 --- a/daxpay-single/pom.xml +++ b/daxpay-single/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform dax-pay - 2.0.3 + 2.0.4 daxpay-single diff --git a/pom.xml b/pom.xml index 79c6eabc..9934756d 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ cn.bootx.platform dax-pay pom - 2.0.3 + 2.0.4 daxpay-single @@ -30,7 +30,7 @@ 1.3.6.2 - 2.0.3 + 2.0.4 1.7.30 3.16.8 -- Gitee From 7d0d5d71103f6f72f472b96809e42e5bfbedd8d6 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 26 Mar 2024 16:48:39 +0800 Subject: [PATCH 16/45] =?UTF-8?q?fix=20=E5=BC=82=E6=AD=A5=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=A4=B1=E8=B4=A5=E6=83=85=E5=86=B5=E4=B8=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=BF=9D=E5=AD=98=E4=B8=8D=E5=AE=8C=E6=95=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++---- _doc/Task.md | 25 +++++------- .../core/order/pay/entity/PayOrderExtra.java | 2 + .../core/payment/pay/service/PayService.java | 38 +++++++++++++++---- .../src/main/resources/application-dev.yml | 2 +- 5 files changed, 50 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 194d3dd3..98852993 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ ## 🧭 特色功能 - 封装各类支付通道的接口为统一的接口,方便业务系统进行调用,简化对接多种支付方式的复杂度 -- 已对接`微信支付`和`支付宝`相关的接口,目前已经支持`V2`版本的接口,后续版本将支持`V3`版本的接口 +- 已对接`微信支付`、`支付宝`和云闪付相关的接口,后续版本将支持`V3`版本的接口 - 支持组合支付,满足用户系统需要多种方式同时进行支付的场景。 - 提供`HTTP`方式接口调用能力,和`Java`版本的`SDK`,方便业务系统进行对接 - 接口请求和响应数据支持启用签名机制,可根据实际需要进行开关,保证交易安全可靠 @@ -150,16 +150,14 @@ public class SimplePayOrderTest { ``` ## 🍎 系统截图 - -### H5收银台演示 -![h5.png](https://s11.ax1x.com/2024/02/12/pF8nPMV.png) -### 支付演示 -![pay.png](https://s11.ax1x.com/2024/02/12/pF8np2q.png) ### 收银台演示 -![pc.jpg](https://s11.ax1x.com/2024/02/12/pF8n9x0.jpg) +![微信截图_20240326141126](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326141126.es9yupxd3.webp) +### 驾驶舱 +![QQ截图20240326141912](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/QQ截图20240326141912.60u0cpvjg5.webp) +### H5收银台演示 +![h5](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/h5.839t0s61xr.webp) ### 支付通道配置 -![](https://s11.ax1x.com/2024/02/13/pF8s2VS.jpg) - +![微信截图_20240326142208](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326142208.6bgu5vdv60.webp) ## 🛣️ 路线图 > 当前处于功能开发阶段,部分功能可能会有调整,`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容 diff --git a/_doc/Task.md b/_doc/Task.md index 50eba0b1..7a14b1de 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,21 +1,16 @@ -2.0.4: -- [x] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 -- [x] 首页驾驶舱功能: 各通道收入和支付情况 - - [x] 第一排: (数字格式)显示今日收入、支出金额,支付总订单数量、退款总订单数, 时间分支分为: 今日金额/昨日金额/七天内金额 - - [x] 第二排: (饼图)显示各通道各支付方式数量和占比, 时间分为: 今日金额/昨日金额/七天内金额 - - [x] 第三排: (折线图)显示各通道支付分为支付金额和退款,时间分为: 今日金额/昨日金额/七天内金额 -- [x] 云闪付支持对账功能 -- [x] 对账文件支持手动导入 -- [x] 结算台DEMO增加云闪付示例 -- [x] 增加支付限额 - - [x] 各通道(异步支付)支持单独的限额 - - [x] 整个订单支持整体的限额 +2.0.5: +- [ ] 资金流水优化 +- [ ] 支持分账 +- [ ] 增加撤销功能,用于处理线下支付订单的情况 +- [ ] 统计报表功能 +- [ ] 修复创建支付订单报错时, 订单保存数据不完整 +- [ ] 针对同步/对账等出现脏数据导致阻塞的问题, 进行优化 + - [ ] 同步接口 + - [ ] 对账接口 + 2.0.x 版本内容 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 -- [ ] 资金流水优化 -- [ ] 统一关闭接口增加使用撤销关闭订单 -- [ ] 支持分账 - [ ] 增加各类日志记录,例如钱包的各项操作 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 数据库表进行规则, 字段设置长度, 增加索引 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrderExtra.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrderExtra.java index 63d583e4..bd7a4d5b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrderExtra.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrderExtra.java @@ -72,10 +72,12 @@ public class PayOrderExtra extends MpBaseEntity implements EntityBaseFunction strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); + List strategies = PayStrategyFactory.createAsyncLast(payParam.getPayChannels()); if (CollectionUtil.isEmpty(strategies)) { throw new PayUnsupportedMethodException(); } @@ -219,9 +219,8 @@ public class PayService { // 执行支付前处理动作, 进行各种校验 asyncPayStrategy.doBeforePayHandler(); - // 创建支付订单和扩展记录并返回支付订单对象 - PayOrder payOrder = payAssistService.createPayOrder(payParam); - asyncPayStrategy.setOrder(payOrder); + // 执行支付前的保存动作, 保持订单和通道订单的原子性 + PayOrder payOrder = SpringUtil.getBean(this.getClass()).firstPreAsyncPay(asyncPayStrategy, payParam); // 支付操作 try { @@ -238,6 +237,19 @@ public class PayService { } + /** + * 异步单通道支付的订单预保存, 保存订单和通道订单 + */ + @Transactional(rollbackFor = Exception.class) + public PayOrder firstPreAsyncPay(AbsPayStrategy asyncPayStrategy, PayParam payParam){ + // 创建支付订单和扩展记录并返回支付订单对象 + PayOrder payOrder = payAssistService.createPayOrder(payParam); + asyncPayStrategy.setOrder(payOrder); + // 生成通道支付订单 + asyncPayStrategy.generateChannelOrder(); + return payOrder; + } + /** * 首次单通道异步支付成功后操作, 更新订单和扥爱松 */ @@ -254,9 +266,13 @@ public class PayService { .setPayTime(LocalDateTime.now()); } payOrderService.updateById(payOrder); + // 扩展记录更新 + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + payOrderExtra.setErrorMsg(null); + payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ - clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); + clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); } @@ -348,10 +364,13 @@ public class PayService { .setPayTime(LocalDateTime.now()); } payOrderService.updateById(payOrder); - payOrderService.updateById(payOrder); + // 扩展记录更新 + PayOrderExtra payOrderExtra = payInfo.getPayOrderExtra(); + payOrderExtra.setErrorMsg(null); + payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ - clientNoticeService.registerPayNotice(payOrder, payInfo.getPayOrderExtra(), payInfo.getPayChannelOrders()); + clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); } @@ -428,6 +447,9 @@ public class PayService { .setPayTime(LocalDateTime.now()); } payOrderService.updateById(payOrder); + // 扩展记录更新 + payOrderExtra.setErrorMsg(null); + payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ // 查询通道订单 diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index a0b9630b..512e3626 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -165,7 +165,7 @@ dax-pay: # 演示模块 demo: # 网关地址 - server-url: http://localhost:9000/server + server-url: http://localhost:9000 # 前端h5地址 front-h5-url: http://localhost:5173/# # 签名秘钥 -- Gitee From d306486e088f054d1d09c9b3f9bcd75e2ac8f044 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 26 Mar 2024 19:35:35 +0800 Subject: [PATCH 17/45] =?UTF-8?q?feat=20=E6=96=B0=E5=BB=BA=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E7=9B=B8=E5=85=B3=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 2 +- .../core/report/dao/DataReportMapper.java | 12 ++++++++++++ .../core/report/service/DataReportService.java | 16 ++++++++++++++++ .../resources/mapper/report/DataReportMapper.xml | 6 ++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/DataReportMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/DataReportService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/resources/mapper/report/DataReportMapper.xml diff --git a/_doc/Task.md b/_doc/Task.md index 7a14b1de..819d98a8 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -3,7 +3,7 @@ - [ ] 支持分账 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 统计报表功能 -- [ ] 修复创建支付订单报错时, 订单保存数据不完整 +- [x] 修复创建支付订单报错时, 订单保存数据不完整 - [ ] 针对同步/对账等出现脏数据导致阻塞的问题, 进行优化 - [ ] 同步接口 - [ ] 对账接口 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/DataReportMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/DataReportMapper.java new file mode 100644 index 00000000..48688cfc --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/dao/DataReportMapper.java @@ -0,0 +1,12 @@ +package cn.bootx.platform.daxpay.service.core.report.dao; + +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/26 + */ +@Mapper +public interface DataReportMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/DataReportService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/DataReportService.java new file mode 100644 index 00000000..b14fa8bf --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/service/DataReportService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.daxpay.service.core.report.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 数据报表服务类 + * @author xxm + * @since 2024/3/26 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DataReportService { +} diff --git a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/DataReportMapper.xml b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/DataReportMapper.xml new file mode 100644 index 00000000..79976971 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/DataReportMapper.xml @@ -0,0 +1,6 @@ + + + + + + -- Gitee From 9532f6366b6121a55edd5c82be3975414c7ec5e6 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Wed, 27 Mar 2024 22:04:49 +0800 Subject: [PATCH 18/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E6=96=B9=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daxpay/sdk/param/pay/PayParam.java | 3 + .../code/AllocationRelationTypeEnum.java | 9 ++ .../platform/daxpay/param/pay/PayParam.java | 4 + .../bootx/platform/daxpay/util/PayUtil.java | 45 +++++---- .../channel/alipay/service/AliPayService.java | 34 ++++++- .../wechat/service/WeChatPayService.java | 92 ++++++++++--------- .../core/order/pay/entity/PayOrder.java | 4 + .../dao/AllocationGroupManager.java | 18 ++++ .../allocation/dao/AllocationGroupMapper.java | 15 +++ .../dao/AllocationReceiverGroupManager.java | 18 ++++ .../dao/AllocationReceiverGroupMapper.java | 14 +++ .../dao/AllocationReceiverManager.java | 18 ++++ .../dao/AllocationReceiverMapper.java | 14 +++ .../allocation/entity/AllocationGroup.java | 30 ++++++ .../allocation/entity/AllocationReceiver.java | 50 ++++++++++ .../entity/AllocationReceiverGroup.java | 24 +++++ .../service/AllocationReceiverService.java | 16 ++++ .../core/payment/pay/service/PayService.java | 8 +- .../service/dto/order/pay/PayOrderDto.java | 4 + .../service/sdk/wechat/BarPayModel.java | 51 ++++++++++ 20 files changed, 402 insertions(+), 69 deletions(-) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java index cbdf98eb..0ec9cfd4 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java @@ -33,6 +33,9 @@ public class PayParam extends DaxPayRequest { /** 过期时间, 多次传输以第一次为准 */ private Long expiredTime; + /** 是否开启分账 */ + private boolean allocation; + /** 用户付款中途退出返回商户网站的地址(部分支付场景中可用) */ private String quitUrl; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java new file mode 100644 index 00000000..57ef4c96 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java @@ -0,0 +1,9 @@ +package cn.bootx.platform.daxpay.code; + +/** + * 分账关系类型 + * @author xxm + * @since 2024/3/27 + */ +public enum AllocationRelationTypeEnum { +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/PayParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/PayParam.java index 949bd7b9..027b5e9e 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/PayParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/PayParam.java @@ -35,6 +35,9 @@ public class PayParam extends PaymentCommonParam { @Schema(description = "支付描述") private String description; + @Schema(description = "是否开启分账") + private boolean allocation; + @Schema(description = "过期时间, 多次传输以第一次为准") @JsonDeserialize(using = TimestampToLocalDateTimeDeserializer.class) private LocalDateTime expiredTime; @@ -55,6 +58,7 @@ public class PayParam extends PaymentCommonParam { @Schema(description = "同步跳转URL") private String returnUrl; + /** 是否不启用异步通知 */ @Schema(description = "是否不启用异步通知") private boolean notNotify; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java index 497bda70..743ccfe8 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java @@ -7,7 +7,6 @@ import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; import cn.hutool.core.date.DatePattern; -import cn.hutool.core.util.IdUtil; import lombok.experimental.UtilityClass; import java.time.LocalDateTime; @@ -21,6 +20,34 @@ import java.util.List; */ @UtilityClass public class PayUtil { + + /** + * 校验参数 + */ + public void validation(PayParam payParam) { + // 验证支付金额 + validationAmount(payParam.getPayChannels()); + // 验证异步支付方式 + validationAsyncPay(payParam); + // 验证是否可以分账 + validationAllocation(payParam); + } + + /** + * 验证是否可以分账 + */ + private void validationAllocation(PayParam payParam) { + // 如果分账不启用, 不需要校验 + if (!payParam.isAllocation()) { + return; + } + // 只有异步支付方式支持分账 + if (!isNotSync(payParam.getPayChannels())) { + throw new PayFailureException("分账只支持包含异步支付通道的订单"); + } + } + + /** * 检查异步支付方式 */ @@ -36,8 +63,8 @@ public class PayUtil { if (asyncPayCount > 1) { throw new PayFailureException("组合支付时只允许有一个异步支付方式"); } - } + } /** * 检查支付金额 @@ -52,13 +79,6 @@ public class PayUtil { } } - /** - * 获取支付宝的过期时间 - */ - public String getAliExpiredTime(int minute) { - return minute + "m"; - } - /** * 获取支付宝的过期时间 yyyy-MM-dd HH:mm:ss */ @@ -96,11 +116,4 @@ public class PayUtil { .noneMatch(PayChannelEnum.ASYNC_TYPE_CODE::contains); } - /** - * 生成退款号 - */ - public String getRefundNo(){ -// return "R" + IdUtil.getSnowflakeNextIdStr(); - return IdUtil.getSnowflakeNextIdStr(); - } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java index 78b716de..76613b04 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayService.java @@ -109,6 +109,12 @@ public class AliPayService { model.setProductCode(AliPayCode.QUICK_WAP_PAY); // 中途退出地址 model.setQuitUrl(noticeInfo.getQuitUrl()); + // 是否分账 + if (payOrder.isAllocation()){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); request.setBizModel(model); @@ -140,6 +146,12 @@ public class AliPayService { // 过期时间 model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime())); model.setTotalAmount(String.valueOf(amount*0.01)); + // 是否分账 + if (payOrder.isAllocation()){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } try { // 异步回调必须到当前系统中 @@ -156,7 +168,6 @@ public class AliPayService { * PC支付 */ public String webPay(int amount, PayOrder payOrder, AliPayConfig alipayConfig) { - NoticeLocal noticeInfo = PaymentContextLocal.get().getNoticeInfo(); AlipayTradePagePayModel model = new AlipayTradePagePayModel(); model.setSubject(payOrder.getTitle()); @@ -167,6 +178,13 @@ public class AliPayService { // 目前仅支持FAST_INSTANT_TRADE_PAY model.setProductCode(AliPayCode.FAST_INSTANT_TRADE_PAY); + // 是否分账 + if (payOrder.isAllocation()){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } + AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); request.setBizModel(model); // 异步回调必须到当前系统中 @@ -192,7 +210,12 @@ public class AliPayService { model.setSubject(payOrder.getTitle()); model.setOutTradeNo(String.valueOf(payOrder.getId())); model.setTotalAmount(String.valueOf(amount*0.01)); - + // 是否分账 + if (payOrder.isAllocation()){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } // 过期时间 model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime())); @@ -218,7 +241,12 @@ public class AliPayService { model.setOutTradeNo(String.valueOf(payOrder.getId())); model.setScene(AliPayCode.BAR_CODE); model.setAuthCode(aliPayParam.getAuthCode()); - + // 是否分账 + if (payOrder.isAllocation()){ + ExtendParams extendParams = new ExtendParams(); + extendParams.setRoyaltyFreeze("true"); + model.setExtendParams(extendParams); + } // 过期时间 model.setTimeExpire(PayUtil.getAliTimeExpire(payOrder.getExpiredTime())); model.setTotalAmount(String.valueOf(amount*0.01)); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java index fe6a773a..19e741ef 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java @@ -16,6 +16,7 @@ import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConf import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; import cn.bootx.platform.daxpay.service.param.channel.wechat.WeChatPayParam; +import cn.bootx.platform.daxpay.service.sdk.wechat.BarPayModel; import cn.bootx.platform.daxpay.util.PayUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.net.NetUtil; @@ -25,7 +26,6 @@ import com.ijpay.core.enums.SignType; import com.ijpay.core.enums.TradeType; import com.ijpay.core.kit.WxPayKit; import com.ijpay.wxpay.WxPayApi; -import com.ijpay.wxpay.model.MicroPayModel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.retry.annotation.Backoff; @@ -66,7 +66,7 @@ public class WeChatPayService { } PayWayEnum payWayEnum = Optional.ofNullable(WeChatPayWay.findByCode(payChannelParam.getWay())) - .orElseThrow(() -> new PayFailureException("非法的微信支付类型")); + .orElseThrow(() -> new PayFailureException("非法的微信支付类型")); if (!payWays.contains(payWayEnum.getCode())) { throw new PayFailureException("该微信支付方式不可用"); } @@ -105,7 +105,7 @@ public class WeChatPayService { } // 付款码支付 else if (payWayEnum == PayWayEnum.BARCODE) { - this.barCodePay(totalFee, payOrder, weChatPayParam.getAuthCode(), weChatPayConfig); + this.barCodePay(totalFee, payOrder, weChatPayParam.getAuthCode(), weChatPayConfig); } asyncPayInfo.setPayBody(payBody); } @@ -113,10 +113,10 @@ public class WeChatPayService { /** * wap支付 */ - private String wapPay(String amount, PayOrder payment, WeChatPayConfig weChatPayConfig) { - Map params = this.buildParams(amount, payment, weChatPayConfig, TradeType.MWEB.getTradeType()) - .build() - .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + private String wapPay(String amount, PayOrder payOrder, WeChatPayConfig weChatPayConfig) { + Map params = this.buildParams(amount, payOrder, weChatPayConfig, TradeType.MWEB.getTradeType()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); String xmlResult = WxPayApi.pushOrder(false, params); Map result = WxPayKit.xmlToMap(xmlResult); @@ -127,10 +127,10 @@ public class WeChatPayService { /** * 程序支付 */ - private String appPay(String amount, PayOrder payment, WeChatPayConfig weChatPayConfig) { - Map params = this.buildParams(amount, payment, weChatPayConfig, TradeType.APP.getTradeType()) - .build() - .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + private String appPay(String amount, PayOrder payOrder, WeChatPayConfig weChatPayConfig) { + Map params = this.buildParams(amount, payOrder, weChatPayConfig, TradeType.APP.getTradeType()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); String xmlResult = WxPayApi.pushOrder(false, params); Map result = WxPayKit.xmlToMap(xmlResult); @@ -141,11 +141,11 @@ public class WeChatPayService { /** * 微信公众号支付或者小程序支付 */ - private String jsPay(String amount, PayOrder payment, String openId, WeChatPayConfig weChatPayConfig) { - Map params = this.buildParams(amount, payment, weChatPayConfig, TradeType.JSAPI.getTradeType()) - .openid(openId) - .build() - .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + private String jsPay(String amount, PayOrder payOrder, String openId, WeChatPayConfig weChatPayConfig) { + Map params = this.buildParams(amount, payOrder, weChatPayConfig, TradeType.JSAPI.getTradeType()) + .openid(openId) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); String xmlResult = WxPayApi.pushOrder(false, params); Map result = WxPayKit.xmlToMap(xmlResult); @@ -161,11 +161,11 @@ public class WeChatPayService { /** * 二维码支付 */ - private String qrCodePay(String amount, PayOrder payment, WeChatPayConfig weChatPayConfig) { + private String qrCodePay(String amount, PayOrder payOrder, WeChatPayConfig weChatPayConfig) { - Map params = this.buildParams(amount, payment, weChatPayConfig, TradeType.NATIVE.getTradeType()) - .build() - .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + Map params = this.buildParams(amount, payOrder, weChatPayConfig, TradeType.NATIVE.getTradeType()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); String xmlResult = WxPayApi.pushOrder(false, params); Map result = WxPayKit.xmlToMap(xmlResult); @@ -176,20 +176,21 @@ public class WeChatPayService { /** * 付款码支付 */ - private void barCodePay(String amount, PayOrder payment, String authCode, WeChatPayConfig weChatPayConfig) { + private void barCodePay(String amount, PayOrder payOrder, String authCode, WeChatPayConfig weChatPayConfig) { PayLocal asyncPayInfo = PaymentContextLocal.get().getPayInfo(); - Map params = MicroPayModel.builder() - .appid(weChatPayConfig.getWxAppId()) - .mch_id(weChatPayConfig.getWxMchId()) - .nonce_str(WxPayKit.generateStr()) - .body(payment.getTitle()) - .auth_code(authCode) - .out_trade_no(String.valueOf(payment.getId())) - .total_fee(amount) - .spbill_create_ip(NetUtil.getLocalhostStr()) - .build() - .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + Map params = BarPayModel.builder() + .appid(weChatPayConfig.getWxAppId()) + .mch_id(weChatPayConfig.getWxMchId()) + .nonce_str(WxPayKit.generateStr()) + .profit_sharing(payOrder.isAllocation()?"Y":"N") + .body(payOrder.getTitle()) + .auth_code(authCode) + .out_trade_no(String.valueOf(payOrder.getId())) + .total_fee(amount) + .spbill_create_ip(NetUtil.getLocalhostStr()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); String xmlResult = WxPayApi.microPay(false, params); Map result = WxPayKit.xmlToMap(xmlResult); @@ -211,7 +212,7 @@ public class WeChatPayService { // 支付中, 发起轮训同步 if (Objects.equals(resultCode, WeChatPayCode.PAY_FAIL) && Objects.equals(errCode, WeChatPayCode.PAY_USERPAYING)) { - SpringUtil.getBean(this.getClass()).rotationSync(payment); + SpringUtil.getBean(this.getClass()).rotationSync(payOrder); asyncPayInfo.setGatewayOrderNo(result.get(WeChatPayCode.TRANSACTION_ID)); return; } @@ -233,18 +234,19 @@ public class WeChatPayService { private UnifiedOrderModelBuilder buildParams(String amount, PayOrder payOrder, WeChatPayConfig weChatPayConfig, String tradeType) { return builder() - .appid(weChatPayConfig.getWxAppId()) - .mch_id(weChatPayConfig.getWxMchId()) - .nonce_str(WxPayKit.generateStr()) - .time_start(LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN)) - // 反正v2版本的超时时间无效 - .time_expire(PayUtil.getWxExpiredTime(payOrder.getExpiredTime())) - .body(payOrder.getTitle()) - .out_trade_no(String.valueOf(payOrder.getId())) - .total_fee(amount) - .spbill_create_ip(NetUtil.getLocalhostStr()) - .notify_url(weChatPayConfig.getNotifyUrl()) - .trade_type(tradeType); + .appid(weChatPayConfig.getWxAppId()) + .mch_id(weChatPayConfig.getWxMchId()) + .nonce_str(WxPayKit.generateStr()) + .time_start(LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN)) + // 反正v2版本的超时时间无效 + .time_expire(PayUtil.getWxExpiredTime(payOrder.getExpiredTime())) + .body(payOrder.getTitle()) + .profit_sharing(payOrder.isAllocation()?"Y":"N") + .out_trade_no(String.valueOf(payOrder.getId())) + .total_fee(amount) + .spbill_create_ip(NetUtil.getLocalhostStr()) + .notify_url(weChatPayConfig.getNotifyUrl()) + .trade_type(tradeType); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java index dcbfe8b8..3ceff7b8 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java @@ -48,6 +48,10 @@ public class PayOrder extends MpBaseEntity implements EntityBaseFunction { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupMapper.java new file mode 100644 index 00000000..3728774f --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupMapper.java @@ -0,0 +1,15 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; + + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/27 + */ +@Mapper +public interface AllocationGroupMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java new file mode 100644 index 00000000..6bdf984a --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiverGroup; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +/** + * + * @author xxm + * @since 2024/3/27 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class AllocationReceiverGroupManager extends BaseManager { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java new file mode 100644 index 00000000..8c369274 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiverGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/27 + */ +@Mapper +public interface AllocationReceiverGroupMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java new file mode 100644 index 00000000..4b2457f3 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +/** + * + * @author xxm + * @since 2024/3/27 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class AllocationReceiverManager extends BaseManager { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java new file mode 100644 index 00000000..e3bd557a --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/3/27 + */ +@Mapper +public interface AllocationReceiverMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java new file mode 100644 index 00000000..5479d292 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java @@ -0,0 +1,30 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbComment; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账组 + * @author xxm + * @since 2024/3/27 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@TableName("pay_allocation_receiver_group") +public class AllocationGroup extends MpBaseEntity { + + @DbComment("名称") + private String name; + + @DbColumn("通道") + private String channel; + + @DbColumn("备注") + private String remark; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java new file mode 100644 index 00000000..09bb90de --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -0,0 +1,50 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.table.modify.annotation.DbColumn; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账接收方 + * @author xxm + * @since 2024/3/27 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AllocationReceiver extends MpBaseEntity { + + @DbColumn(name = "账号别名") + private String name; + + @DbColumn(name = "所属通道") + private String channel; + + /** + * 分账接收方类型 个人/商户 + */ + @DbColumn(name = "分账接收方类型") + private String receiverType; + + + @DbColumn(name = "接收方账号") + private String receiverAccount; + + /** 接收方姓名 */ + @DbColumn(name = "接收方姓名") + private String receiverName; + + /** + * 分账关系类型 + * @see AllocationRelationTypeEnum + */ + @DbColumn(name = "分账关系类型") + private String relationType; + + @DbColumn(name = "关系名称") + private String relationName; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java new file mode 100644 index 00000000..11130808 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java @@ -0,0 +1,24 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpCreateEntity; +import cn.bootx.table.modify.annotation.DbColumn; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账接收组关系 + * @author xxm + * @since 2024/3/27 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AllocationReceiverGroup extends MpCreateEntity { + + @DbColumn("分账ID") + private Long groupId; + + @DbColumn("接收者ID") + private Long receiverId; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java new file mode 100644 index 00000000..28cd08b7 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 分账接收方服务类 + * @author xxm + * @since 2024/3/27 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationReceiverService { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 1f57d35d..31eec4ae 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -93,14 +93,12 @@ public class PayService { * 执行异步通道支付的逻辑与上面异步支付的逻辑一致 * 4. 同步支付一次支付完成,不允许重复发起支付 * 5. 重复支付时,不允许中途将异步支付换为同步支付,也不允许更改出支付通道和支付方式之外的支付参数(请求时间、IP、签名等可以更改) - * + * 6. 如果要进行分账, 请求时就需要将分账标识字段穿true */ public PayResult pay(PayParam payParam){ - // 异步支付方式检查 - PayUtil.validationAsyncPay(payParam); - // 检查支付金额 - PayUtil.validationAmount(payParam.getPayChannels()); + // 支付参数检查 + PayUtil.validation(payParam); // 校验支付限额 payAssistService.validationLimitAmount(payParam); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index e44e1f77..7ca9da6c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -36,6 +36,10 @@ public class PayOrderDto extends BaseDto { @Schema(description = "是否是组合支付") private boolean combinationPay; + /** 是否需要分账 */ + @Schema(description = "是否需要分账") + private boolean allocation; + /** * 异步支付通道 * @see PayChannelEnum#ASYNC_TYPE_CODE diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java new file mode 100644 index 00000000..5321b338 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java @@ -0,0 +1,51 @@ +package cn.bootx.platform.daxpay.service.sdk.wechat; + +import com.ijpay.wxpay.model.MicroPayModel; +import lombok.*; +import lombok.experimental.Accessors; + +/** + * 付款码支付, 增加分账字段 + * @author xxm + * @since 2024/3/27 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class BarPayModel extends MicroPayModel { + /** + * 是否押金支付 + */ + private String deposit; + private String appid; + private String sub_appid; + private String mch_id; + private String sub_mch_id; + private String device_info; + private String nonce_str; + private String sign; + private String sign_type; + private String body; + private String detail; + private String attach; + private String out_trade_no; + private String total_fee; + private String fee_type; + private String spbill_create_ip; + private String goods_tag; + private String limit_pay; + private String time_start; + private String time_expire; + private String auth_code; + private String receipt; + private String scene_info; + private String openid; + /** + * 人脸凭证,用于人脸支付 + */ + private String face_code; + private String profit_sharing; +} -- Gitee From 6334461971a30d2d38459f0016cacf9ec206414e Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 28 Mar 2024 20:10:21 +0800 Subject: [PATCH 19/45] =?UTF-8?q?feat=20=E5=AF=B9=E8=B4=A6=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 5 +- .../AllocationReceiverController.java | 21 +++++++ .../channel/alipay/entity/AliPayConfig.java | 4 ++ .../AliPayAllocationReceiverService.java | 40 +++++++++++++ .../wechat/entity/WeChatPayConfig.java | 4 ++ .../convert/AllocationReceiverConvert.java | 21 +++++++ .../dao/AllocationGroupManager.java | 8 +-- .../dao/AllocationReceiverGroupManager.java | 8 +-- .../dao/AllocationReceiverGroupMapper.java | 8 +-- .../dao/AllocationReceiverManager.java | 8 +-- .../dao/AllocationReceiverMapper.java | 8 +-- .../allocation/entity/AllocationReceiver.java | 44 +++++++++++--- .../service/AllocationReceiverService.java | 47 +++++++++++++++ .../dto/allocation/AllocationReceiverDto.java | 60 +++++++++++++++++++ .../dto/channel/alipay/AliPayConfigDto.java | 3 + .../channel/wechat/WeChatPayConfigDto.java | 3 + .../allocation/AllocationReceiverParam.java | 58 ++++++++++++++++++ .../channel/alipay/AliPayConfigParam.java | 3 + .../channel/wechat/WeChatPayConfigParam.java | 3 + 19 files changed, 327 insertions(+), 29 deletions(-) create mode 100644 daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationReceiverConvert.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java diff --git a/_doc/Task.md b/_doc/Task.md index 819d98a8..709862f1 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,6 +1,9 @@ 2.0.5: - [ ] 资金流水优化 -- [ ] 支持分账 +- [ ] 分账功能开发 + - [ ] 支付通道配置是否支持分账 + - [ ] 分账接收方管理 + - [ ] 分账订单管理 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 统计报表功能 - [x] 修复创建支付订单报错时, 订单保存数据不完整 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java new file mode 100644 index 00000000..9d8fce1e --- /dev/null +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -0,0 +1,21 @@ +package cn.bootx.platform.daxpay.admin.controller.allocation; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationReceiverService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 对账接收方控制器 + * @author xxm + * @since 2024/3/28 + */ +@Tag(name = "对账接收方控制器") +@RestController +@RequestMapping("/allocation/receiver") +@RequiredArgsConstructor +public class AllocationReceiverController { + + private final AllocationReceiverService allocationReceiverService; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java index 6f5b13dd..f1e3eb44 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/entity/AliPayConfig.java @@ -41,6 +41,10 @@ public class AliPayConfig extends MpBaseEntity implements EntityBaseFunction { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java index 4b2457f3..7994062f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java @@ -6,10 +6,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; -/** - * - * @author xxm - * @since 2024/3/27 +/** + * + * @author xxm + * @since 2024/3/27 */ @Slf4j @Repository diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java index e3bd557a..1bf29e63 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverMapper.java @@ -4,10 +4,10 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.Allocatio import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; -/** - * - * @author xxm - * @since 2024/3/27 +/** + * + * @author xxm + * @since 2024/3/27 */ @Mapper public interface AllocationReceiverMapper extends BaseMapper { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java index 09bb90de..e76a09c9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -1,8 +1,14 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; +import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; import cn.bootx.table.modify.annotation.DbColumn; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -15,36 +21,58 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -public class AllocationReceiver extends MpBaseEntity { +public class AllocationReceiver extends MpBaseEntity implements EntityBaseFunction { - @DbColumn(name = "账号别名") + @DbColumn(comment = "账号别名") private String name; - @DbColumn(name = "所属通道") + /** + * @see PayChannelEnum + */ + @DbColumn(comment = "所属通道") + @TableField(updateStrategy = FieldStrategy.NEVER) private String channel; /** * 分账接收方类型 个人/商户 */ - @DbColumn(name = "分账接收方类型") + @DbColumn(comment = "分账接收方类型") + @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverType; - @DbColumn(name = "接收方账号") + @DbColumn(comment = "接收方账号") + @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverAccount; + @DbColumn(comment = "账号类型") + private String accountType; + /** 接收方姓名 */ - @DbColumn(name = "接收方姓名") + @DbColumn(comment = "接收方姓名") + @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverName; /** * 分账关系类型 * @see AllocationRelationTypeEnum */ - @DbColumn(name = "分账关系类型") + @DbColumn(comment = "分账关系类型") + @TableField(updateStrategy = FieldStrategy.NEVER) private String relationType; - @DbColumn(name = "关系名称") + @DbColumn(comment = "关系名称") + @TableField(updateStrategy = FieldStrategy.NEVER) private String relationName; + @DbColumn(comment = "是否已经同步到网关") + private boolean sync; + + /** + * 转换 + */ + @Override + public AllocationReceiverDto toDto() { + return AllocationReceiverConvert.CONVERT.convert(this); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java index 28cd08b7..398af2c1 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -1,5 +1,9 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; +import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationReceiverManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -13,4 +17,47 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class AllocationReceiverService { + + private final AllocationReceiverManager manager; + + /** + * 添加分账接收方 + */ + public void add(AllocationReceiverParam param){ + // 首先添加网关的分账接收方 + AllocationReceiver receiver = AllocationReceiverConvert.CONVERT.convert(param); + receiver.setSync(false); + manager.save(receiver); + } + + /** + * 修改 + */ + public void update(AllocationReceiverParam param){ + + } + + /** + * 删除分账接收方 + */ + public void remove(Long id){ + // 首先删除网关的分账接收方 + + // 然后删除本地数据 + } + + /** + * 同步到三方支付系统中 + */ + public void registerByGateway(Long id){ + + } + + /** + * 从三方支付系统中删除 + */ + public void removeByGateway(Long id){ + + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java new file mode 100644 index 00000000..7828fc1e --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -0,0 +1,60 @@ +package cn.bootx.platform.daxpay.service.dto.allocation; + +import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账接收方参数 + * @author xxm + * @since 2024/3/28 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "分账接收方参数") +public class AllocationReceiverDto extends BaseDto { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "账号别名") + private String name; + + /** + * @see PayChannelEnum + */ + @Schema(description = "所属通道") + private String channel; + + /** + * 分账接收方类型 个人/商户 + */ + @Schema(description = "分账接收方类型") + private String receiverType; + + + @Schema(description = "接收方账号") + private String receiverAccount; + + /** 接收方姓名 */ + @Schema(description = "接收方姓名") + private String receiverName; + + /** + * 分账关系类型 + * @see AllocationRelationTypeEnum + */ + @Schema(description = "分账关系类型") + private String relationType; + + @Schema(description = "关系名称") + private String relationName; + + @Schema(description = "是否已经同步到网关") + private boolean sync; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/alipay/AliPayConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/alipay/AliPayConfigDto.java index 4909a5f9..df1a38d0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/alipay/AliPayConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/alipay/AliPayConfigDto.java @@ -29,6 +29,9 @@ public class AliPayConfigDto extends BaseDto implements Serializable { @Schema(description = "是否启用") private Boolean enable; + @Schema(description = "是否支付分账") + private Boolean allocation; + @Schema(description = "支付限额") private Integer singleLimit; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java index 7d5f148a..35501b48 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayConfigDto.java @@ -31,6 +31,9 @@ public class WeChatPayConfigDto extends BaseDto implements Serializable { @Schema(description = "是否启用") private Boolean enable; + @Schema(description = "是否支付分账") + private Boolean allocation; + @Schema(description = "支付限额") private Integer singleLimit; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java new file mode 100644 index 00000000..d0c01351 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java @@ -0,0 +1,58 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账接收方参数 + * @author xxm + * @since 2024/3/28 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账接收方参数") +public class AllocationReceiverParam { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "账号别名") + private String name; + + /** + * @see PayChannelEnum + */ + @Schema(description = "所属通道") + private String channel; + + /** + * 分账接收方类型 个人/商户 + */ + @Schema(description = "分账接收方类型") + private String receiverType; + + + @Schema(description = "接收方账号") + private String receiverAccount; + + /** 接收方姓名 */ + @Schema(description = "接收方姓名") + private String receiverName; + + /** + * 分账关系类型 + * @see AllocationRelationTypeEnum + */ + @Schema(description = "分账关系类型") + private String relationType; + + @Schema(description = "关系名称") + private String relationName; + + @Schema(description = "是否已经同步到网关") + private boolean sync; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/alipay/AliPayConfigParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/alipay/AliPayConfigParam.java index 210a6eff..c24fd085 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/alipay/AliPayConfigParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/alipay/AliPayConfigParam.java @@ -21,6 +21,9 @@ public class AliPayConfigParam { @Schema(description = "是否启用") private Boolean enable; + @Schema(description = "是否支付分账") + private Boolean allocation; + @Schema(description = "支付限额") private Integer singleLimit; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java index 714d282c..106226e6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/channel/wechat/WeChatPayConfigParam.java @@ -29,6 +29,9 @@ public class WeChatPayConfigParam { @DbColumn(comment = "是否启用") private Boolean enable; + @Schema(description = "是否支付分账") + private Boolean allocation; + @Schema(description = "支付限额") private Integer singleLimit; -- Gitee From 12fb44a2414d28ff6a2aead0d11200ba96c441c6 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 1 Apr 2024 23:27:49 +0800 Subject: [PATCH 20/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 29 ++-- .../AllocationReceiverController.java | 53 +++++- .../code/AllocationReceiverTypeEnum.java | 29 ++++ .../code/AllocationRelationTypeEnum.java | 19 +++ .../daxpay/service/code/WeChatPayCode.java | 6 + .../AliPayAllocationReceiverService.java | 39 ++++- .../WeChatPayAllocationReceiverService.java | 91 ++++++++++ .../convert/AllocationGroupConvert.java | 21 +++ .../AllocationGroupReceiverConvert.java | 21 +++ ...va => AllocationGroupReceiverManager.java} | 13 +- ...ava => AllocationGroupReceiverMapper.java} | 4 +- .../dao/AllocationReceiverManager.java | 18 +- .../allocation/entity/AllocationGroup.java | 23 ++- ...roup.java => AllocationGroupReceiver.java} | 9 +- .../allocation/entity/AllocationReceiver.java | 7 +- .../factory/AllocationReceiverFactory.java | 38 +++++ .../service/AllocationGroupService.java | 161 ++++++++++++++++++ .../service/AllocationReceiverService.java | 68 +++++++- .../allocation/AliPayAllocationStrategy.java | 20 +++ .../WeChatPayAllocationStrategy.java | 20 +++ .../AliPayAllocationReceiverStrategy.java | 84 +++++++++ .../WeChatPayAllocationReceiverStrategy.java | 84 +++++++++ .../dto/allocation/AllocationGroupDto.java | 31 ++++ .../AllocationGroupReceiverDto.java | 19 +++ .../func/AbsAllocationReceiverStrategy.java | 36 ++++ .../allocation/AllocationGroupBindParam.java | 30 ++++ .../allocation/AllocationGroupParam.java | 29 ++++ .../AllocationGroupReceiverParam.java | 28 +++ .../AllocationGroupUnbindParam.java | 28 +++ .../allocation/AllocationReceiverParam.java | 1 + .../allocation/AllocationReceiverQuery.java | 53 ++++++ .../service/sdk/wechat/BarPayModel.java | 4 +- 32 files changed, 1081 insertions(+), 35 deletions(-) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/{AllocationReceiverGroupManager.java => AllocationGroupReceiverManager.java} (52%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/{AllocationReceiverGroupMapper.java => AllocationGroupReceiverMapper.java} (70%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/{AllocationReceiverGroup.java => AllocationGroupReceiver.java} (68%) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationReceiverFactory.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/WeChatPayAllocationReceiverStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java diff --git a/_doc/Task.md b/_doc/Task.md index 709862f1..5260e9a6 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,28 +1,35 @@ 2.0.5: - [ ] 资金流水优化 -- [ ] 分账功能开发 - - [ ] 支付通道配置是否支持分账 - - [ ] 分账接收方管理 - - [ ] 分账订单管理 -- [ ] 增加撤销功能,用于处理线下支付订单的情况 +- [ ] 支付通道配置是否支持分账 +- [ ] 分账接收方管理 +- [ ] 分账组管理 +- [ ] 分账订单管理 - [ ] 统计报表功能 - [x] 修复创建支付订单报错时, 订单保存数据不完整 -- [ ] 针对同步/对账等出现脏数据导致阻塞的问题, 进行优化 - - [ ] 同步接口 - - [ ] 对账接口 +- [ ] DEMI增加获取微信OpenID和支付宝OpenId功能 2.0.x 版本内容 +- [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ - [ ] 微信新增V3版本接口 - - [ ] 付款码支付自动路由到V2接口 + - [ ] 付款码支付自动路由到V2接口 - [ ] 增加各类日志记录,例如钱包的各项操作 - [ ] 增加撤销功能,用于处理线下支付订单的情况 - [ ] 数据库表进行规则, 字段设置长度, 增加索引 - -**任务池** - [ ] 订单超时支持数据表级别触发 +- [ ] 针对同步/对账等出现脏数据导致阻塞的问题, 进行优化 + - [ ] 同步接口 + - [ ] 对账接口 +- [ ] 增加通道开通能力管理,在操作发起前的校验时提前进行拦截 + +**任务池** +- [ ] 对账改造: + - [ ] 分为三级: 原始对账单(三方机构原始凭证)、系统对账单(系统内部订单信息)、差异单, + - [ ] 单据类型: 明细记录, 汇总记录 - [ ] 支持转账操作, 通过支付通道专有参数进行实现, 转账时只能单个通道进行操作 - [ ] 支付成功回调后, 如果订单已超时, 则进入待退款订单中,提示进行退款,或者自动退款 - [ ] 新增支付单预警功能, 处理支付单与网关状态不一致且无法自动修复的情况 +- [ ] 通道费率计算 +- [ ] 每日资金流水计算 - [ ] 微信消息通知相关配置 - [ ] 钉钉消息通知配置 - [ ] 支付宝接口升级为V3接口 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java index 9d8fce1e..072fb62e 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -1,8 +1,18 @@ package cn.bootx.platform.daxpay.admin.controller.allocation; +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.Res; +import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationReceiverService; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,5 +27,46 @@ import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor public class AllocationReceiverController { - private final AllocationReceiverService allocationReceiverService; + private final AllocationReceiverService receiverService; + + @Operation(summary = "分页") + @GetMapping("/page") + public ResResult> page(PageParam pageParam, AllocationReceiverQuery query){ + return Res.ok(receiverService.page(pageParam, query)); + } + + @Operation(summary = "查询详情") + @GetMapping("/findById") + public ResResult findById(Long id){ + return Res.ok(receiverService.findById(id)); + } + + @Operation(summary = "新增") + @PostMapping("") + public ResResult add(AllocationReceiverParam param){ + receiverService.add(param); + return Res.ok(); + } + + @Operation(summary = "修改") + @PostMapping("update") + public ResResult update(AllocationReceiverParam param){ + receiverService.update(param); + return Res.ok(); + } + + @Operation(summary = "同步到三方支付系统中") + @PostMapping("registerByGateway") + public ResResult registerByGateway(Long id){ + receiverService.registerByGateway(id); + return Res.ok(); + } + + @Operation(summary = "从三方支付系统中删除") + @PostMapping("removeByGateway") + public ResResult removeByGateway(Long id){ + receiverService.removeByGateway(id); + return Res.ok(); + } + } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java new file mode 100644 index 00000000..22c7121c --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java @@ -0,0 +1,29 @@ +package cn.bootx.platform.daxpay.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 分账接收方类型枚举 + * @author xxm + * @since 2024/4/1 + */ +@Getter +@AllArgsConstructor +public enum AllocationReceiverTypeEnum { + /** 个人 */ + WX_PERSONAL("PERSONAL_OPENID", "个人"), + /** 商户 */ + WX_MERCHANT("MERCHANT_ID", "商户"), + + /** userId 以2088开头的纯16位数字 */ + ALI_USER_ID("userId", "账号ID"), + /** openId */ + ALI_OPEN_ID("openId", "登录号"), + /** 账号 */ + ALI_LOGIN_NAME("loginName", "openId"); + + private final String code; + private final String name; + +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java index 57ef4c96..998eb8d6 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationRelationTypeEnum.java @@ -1,9 +1,28 @@ package cn.bootx.platform.daxpay.code; +import lombok.AllArgsConstructor; +import lombok.Getter; + /** * 分账关系类型 * @author xxm * @since 2024/3/27 */ +@Getter +@AllArgsConstructor public enum AllocationRelationTypeEnum { + SERVICE_PROVIDER("SERVICE_PROVIDER","服务商"), + STORE("STORE","门店"), + STAFF("STAFF","员工"), + STORE_OWNER("STORE_OWNER","店主"), + PARTNER("PARTNER","合作伙伴"), + HEADQUARTER("HEADQUARTER","总部"), + BRAND("BRAND","品牌方"), + DISTRIBUTOR("DISTRIBUTOR","分销商"), + USER("USER","用户"), + SUPPLIER("SUPPLIER","供应商"), + CUSTOM("CUSTOM","自定义"); + + private final String code; + private final String name; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java index 8529cf90..ae402ac4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java @@ -140,4 +140,10 @@ public interface WeChatPayCode { /** 资金账单 - 基本账户 */ String ACCOUNT_TYPE_BASIC = "Basic"; + /* 分账 */ + /** 商户号 */ + String MERCHANT_ID = "MERCHANT_ID"; + /** 个人openid */ + String PERSONAL_OPENID = "PERSONAL_OPENID"; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java index 34a334b9..31064879 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java @@ -2,15 +2,21 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; import com.alipay.api.domain.AlipayTradeRoyaltyRelationBindModel; +import com.alipay.api.domain.AlipayTradeRoyaltyRelationUnbindModel; import com.alipay.api.domain.RoyaltyEntity; import com.alipay.api.response.AlipayTradeRoyaltyRelationBindResponse; +import com.alipay.api.response.AlipayTradeRoyaltyRelationUnbindResponse; import com.ijpay.alipay.AliPayApi; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.Collections; +import java.util.List; + +import static cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum.*; /** * 支付宝分账 @@ -23,18 +29,49 @@ import java.util.Collections; public class AliPayAllocationReceiverService { /** - * 注册 + * 校验 + */ + public boolean validation(AllocationReceiver allocationReceiver){ + List list = Arrays.asList(ALI_USER_ID.getCode(), ALI_OPEN_ID.getCode(), ALI_LOGIN_NAME.getCode()); + String receiverType = allocationReceiver.getReceiverType(); + return list.contains(receiverType); + } + + /** + * 绑定关系 */ @SneakyThrows public void bind(AllocationReceiver allocationReceiver){ AlipayTradeRoyaltyRelationBindModel model = new AlipayTradeRoyaltyRelationBindModel(); model.setOutRequestNo(String.valueOf(allocationReceiver.getId())); + // 分账接收方方类型。 RoyaltyEntity entity = new RoyaltyEntity(); + entity.setType(allocationReceiver.getReceiverType()); entity.setAccount(allocationReceiver.getReceiverAccount()); entity.setMemo(allocationReceiver.getRelationName()); model.setReceiverList(Collections.singletonList(entity)); AlipayTradeRoyaltyRelationBindResponse response = AliPayApi.tradeRoyaltyRelationBind(model); + + // 如果返回成功或者已经绑定, 关系 + } + + /** + * 解绑关系 + */ + @SneakyThrows + public void unbind(AllocationReceiver allocationReceiver){ + AlipayTradeRoyaltyRelationUnbindModel model = new AlipayTradeRoyaltyRelationUnbindModel(); + model.setOutRequestNo(String.valueOf(allocationReceiver.getId())); + + RoyaltyEntity entity = new RoyaltyEntity(); + entity.setAccount(allocationReceiver.getReceiverAccount()); + entity.setMemo(allocationReceiver.getRelationName()); + + model.setReceiverList(Collections.singletonList(entity)); + AlipayTradeRoyaltyRelationUnbindResponse response = AliPayApi.tradeRoyaltyRelationUnBind(model); } + + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java new file mode 100644 index 00000000..84fcbe3d --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java @@ -0,0 +1,91 @@ +package cn.bootx.platform.daxpay.service.core.channel.wechat.service; + +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.code.WeChatPayCode; +import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.hutool.core.util.StrUtil; +import com.ijpay.core.enums.SignType; +import com.ijpay.core.kit.WxPayKit; +import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.model.ReceiverModel; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import static cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum.WX_MERCHANT; + +/** + * + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class WeChatPayAllocationReceiverService { + + /** + * 校验参数是否合法 + */ + public boolean validation(AllocationReceiver allocationReceiver){ + List list = Arrays.asList(WX_MERCHANT.getCode(), WX_MERCHANT.getCode()); + String receiverType = allocationReceiver.getReceiverType(); + return !list.contains(receiverType); + } + + /** + * 绑定 + */ + public void bind(AllocationReceiver allocationReceiver, WeChatPayConfig weChatPayConfig){ + + Map param = ReceiverModel.builder() + .type(allocationReceiver.getReceiverType()) + .account(allocationReceiver.getReceiverAccount()) + .name(allocationReceiver.getReceiverName()) + .relation_type(allocationReceiver.getRelationType()) + .custom_relation(allocationReceiver.getRelationType()) + .custom_relation(allocationReceiver.getRelationName()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + + String xmlResult = WxPayApi.profitSharingAddReceiver(param); + Map result = WxPayKit.xmlToMap(xmlResult); + this.verifyErrorMsg(result); + } + + /** + * 解除绑定 + */ + public void unbind(AllocationReceiver allocationReceiver, WeChatPayConfig weChatPayConfig){ + Map param = ReceiverModel.builder() + .type(allocationReceiver.getReceiverType()) + .account(allocationReceiver.getReceiverAccount()) + .build() + .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); + + String xmlResult = WxPayApi.profitSharingRemoveReceiver(param); + Map result = WxPayKit.xmlToMap(xmlResult); + this.verifyErrorMsg(result); + } + + /** + * 验证错误信息 + */ + private void verifyErrorMsg(Map result) { + String returnCode = result.get(WeChatPayCode.RETURN_CODE); + String resultCode = result.get(WeChatPayCode.RESULT_CODE); + if (!WxPayKit.codeIsOk(returnCode) || !WxPayKit.codeIsOk(resultCode)) { + String errorMsg = result.get(WeChatPayCode.ERR_CODE_DES); + if (StrUtil.isBlank(errorMsg)) { + errorMsg = result.get(WeChatPayCode.RETURN_MSG); + } + log.error("支付失败 {}", errorMsg); + throw new PayFailureException(errorMsg); + } + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java new file mode 100644 index 00000000..758d4d35 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java @@ -0,0 +1,21 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * + * @author xxm + * @since 2024/4/1 + */ +@Mapper +public interface AllocationGroupConvert { + AllocationGroupConvert CONVERT = Mappers.getMapper(AllocationGroupConvert.class); + + AllocationGroupDto convert(AllocationGroup in); + + AllocationGroup convert(AllocationGroupParam in); +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java new file mode 100644 index 00000000..d5644b8e --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java @@ -0,0 +1,21 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverDto; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * + * @author xxm + * @since 2024/4/1 + */ +@Mapper +public interface AllocationGroupReceiverConvert { + AllocationGroupReceiverConvert CONVERT = Mappers.getMapper(AllocationGroupReceiverConvert.class); + + AllocationGroupReceiverDto convert(AllocationGroupReceiver in); + + AllocationGroupReceiver convert(AllocationGroupReceiverParam in); +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java similarity index 52% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java index 670c4696..6f619395 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java @@ -1,18 +1,25 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; -import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiverGroup; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; /** - * + * 分账组关联接收方 * @author xxm * @since 2024/3/27 */ @Slf4j @Repository @RequiredArgsConstructor -public class AllocationReceiverGroupManager extends BaseManager { +public class AllocationGroupReceiverManager extends BaseManager { + + /** + * 判断接收者是否已经被使用 + */ + public boolean isUsed(Long receiverId){ + return existedByField(AllocationGroupReceiver::getReceiverId, receiverId); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverMapper.java similarity index 70% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverMapper.java index b3919e5c..f20a8998 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverGroupMapper.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverMapper.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; -import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiverGroup; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -10,5 +10,5 @@ import org.apache.ibatis.annotations.Mapper; * @since 2024/3/27 */ @Mapper -public interface AllocationReceiverGroupMapper extends BaseMapper { +public interface AllocationGroupReceiverMapper extends BaseMapper { } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java index 7994062f..f3e68c75 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java @@ -1,13 +1,19 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; +import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; /** - * + * 分账接收方 * @author xxm * @since 2024/3/27 */ @@ -15,4 +21,14 @@ import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor public class AllocationReceiverManager extends BaseManager { + + /** + * 分页 + */ + public Page page(PageParam pageParam, AllocationReceiverQuery param){ + Page mpPage = MpUtil.getMpPage(pageParam, AllocationReceiver.class); + QueryWrapper generator = QueryGenerator.generator(param); + return this.page(mpPage, generator); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java index 5479d292..f62c3d8b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java @@ -1,8 +1,13 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; +import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationGroupConvert; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; import cn.bootx.table.modify.annotation.DbColumn; import cn.bootx.table.modify.annotation.DbComment; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,14 +22,26 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @TableName("pay_allocation_receiver_group") -public class AllocationGroup extends MpBaseEntity { +public class AllocationGroup extends MpBaseEntity implements EntityBaseFunction { @DbComment("名称") private String name; - @DbColumn("通道") + @DbColumn(comment = "通道") + @TableField(updateStrategy = FieldStrategy.NEVER) private String channel; - @DbColumn("备注") + @DbColumn(comment = "总分账比例(万分之多少)") + private Integer totalRate; + + @DbColumn(comment = "备注") private String remark; + + /** + * 转换 + */ + @Override + public AllocationGroupDto toDto() { + return AllocationGroupConvert.CONVERT.convert(this); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java similarity index 68% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java index 11130808..12416d6b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiverGroup.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java @@ -14,11 +14,14 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -public class AllocationReceiverGroup extends MpCreateEntity { +public class AllocationGroupReceiver extends MpCreateEntity { - @DbColumn("分账ID") + @DbColumn(comment = "分账ID") private Long groupId; - @DbColumn("接收者ID") + @DbColumn(comment = "接收者ID") private Long receiverId; + + @DbColumn(comment = "分账比例(万分之多少)") + private Integer rate; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java index e76a09c9..41af87c6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -2,6 +2,7 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; @@ -34,7 +35,8 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti private String channel; /** - * 分账接收方类型 个人/商户 + * 分账接收方类型 + * @see AllocationReceiverTypeEnum */ @DbColumn(comment = "分账接收方类型") @TableField(updateStrategy = FieldStrategy.NEVER) @@ -45,9 +47,6 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverAccount; - @DbColumn(comment = "账号类型") - private String accountType; - /** 接收方姓名 */ @DbColumn(comment = "接收方姓名") @TableField(updateStrategy = FieldStrategy.NEVER) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationReceiverFactory.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationReceiverFactory.java new file mode 100644 index 00000000..5e914e87 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationReceiverFactory.java @@ -0,0 +1,38 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.factory; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayUnsupportedMethodException; +import cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.receiver.AliPayAllocationReceiverStrategy; +import cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.receiver.WeChatPayAllocationReceiverStrategy; +import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; +import cn.hutool.extra.spring.SpringUtil; +import lombok.experimental.UtilityClass; + +/** + * 分账接收方策略工厂 + * @author xxm + * @since 2024/4/1 + */ +@UtilityClass +public class AllocationReceiverFactory { + + /** + * 根据传入的支付通道创建策略 + * @return 支付策略 + */ + public static AbsAllocationReceiverStrategy create(PayChannelEnum channelEnum) { + + AbsAllocationReceiverStrategy strategy; + switch (channelEnum) { + case ALI: + strategy = SpringUtil.getBean(AliPayAllocationReceiverStrategy.class); + break; + case WECHAT: + strategy = SpringUtil.getBean(WeChatPayAllocationReceiverStrategy.class); + break; + default: + throw new PayUnsupportedMethodException(); + } + return strategy; + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java new file mode 100644 index 00000000..0e958155 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -0,0 +1,161 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.service; + +import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationGroupConvert; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupReceiverManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationReceiverManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupBindParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupUnbindParam; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 分账组服务 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationGroupService { + private final AllocationGroupManager groupManager; + private final AllocationGroupReceiverManager groupReceiverManager; + private final AllocationReceiverManager receiverManager; + + /** + * 创建分账组 + */ + public void create(AllocationGroupParam param){ + PayChannelEnum.findByCode(param.getChannel()); + AllocationGroup allocation = AllocationGroupConvert.CONVERT.convert(param); + groupManager.save(allocation); + } + + /** + * 更新分账组 + */ + public void update(AllocationGroupParam param){ + AllocationGroup group = groupManager.findById(param.getId()) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + BeanUtil.copyProperties(param,group, CopyOptions.create().ignoreNullValue()); + group.setTotalRate(0); + groupManager.updateById(group); + } + + /** + * 删除分账组 + */ + public void delete(){ + + } + + /** + * 绑定分账接收方 + */ + @Transactional(rollbackFor = Exception.class) + public void bind(AllocationGroupBindParam param) { + // 分账组 + AllocationGroup group = groupManager.findById(param.getGroupId()) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + // 查询接收方 + List receiverParams = param.getReceivers(); + List receiverIds = receiverParams.stream() + .map(AllocationGroupReceiverParam::getReceiverId) + .collect(Collectors.toList()); + List receivers = receiverManager.findAllByIds(receiverIds); + if (receivers.size() != receiverIds.size()){ + throw new DataNotExistException("传入的分账接收房数量与查询到的不一致"); + } + // 接收方需要已经同步到三方值系统中 + receivers.stream() + .filter(receiver -> !receiver.isSync()) + .findAny() + .ifPresent(receiver -> { + throw new DataNotExistException("接收方未同步到三方值系统中"); + }); + + // 保存分账接收者 + List groupReceivers = receivers.stream() + .map(receiver -> new AllocationGroupReceiver().setGroupId(group.getId()) + .setReceiverId(receiver.getId()) + .setRate(receiverParams.get(receivers.indexOf(receiver)) + .getRate())) + .collect(Collectors.toList()); + groupReceiverManager.saveAll(groupReceivers); + // 计算分账比例 + int sum = receiverParams.stream() + .mapToInt(AllocationGroupReceiverParam::getRate) + .sum(); + group.setTotalRate(group.getTotalRate() + sum); + groupManager.updateById(group); + } + + /** + * 批量删除分账接收方 + */ + @Transactional(rollbackFor = Exception.class) + public void removeReceivers(AllocationGroupUnbindParam param){ + // 分账组 + AllocationGroup group = groupManager.findById(param.getGroupId()) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + // 删除接收方 + List receivers = groupReceiverManager.findAllByIds(param.getReceiverIds()); + if (receivers.size() != param.getReceiverIds().size()){ + throw new DataNotExistException("传入的分账接收房数量与查询到的不一致"); + } + groupReceiverManager.deleteByIds(param.getReceiverIds()); + // 计算分账比例 + int sum = receivers.stream() + .mapToInt(AllocationGroupReceiver::getRate) + .sum(); + group.setTotalRate(group.getTotalRate() - sum); + groupManager.updateById(group); + } + + /** + * 删除单个分账接收方 + */ + @Transactional + public void removeReceiver(Long receiverId){ + AllocationGroupReceiver groupReceiver = groupReceiverManager.findById(receiverId) + .orElseThrow(() -> new DataNotExistException("未找到分账接收方")); + AllocationGroup group = groupManager.findById(groupReceiver.getGroupId()) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + // 更新分账比例 + group.setTotalRate(group.getTotalRate() - groupReceiver.getRate()); + // 更新接收比例 + groupReceiverManager.updateById(groupReceiver); + groupManager.deleteById(group); + } + + /** + * 修改分账比例 + */ + public void updateRate(Long receiverId, Integer rate){ + AllocationGroupReceiver groupReceiver = groupReceiverManager.findById(receiverId) + .orElseThrow(() -> new DataNotExistException("未找到分账接收方")); + AllocationGroup group = groupManager.findById(groupReceiver.getGroupId()) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + // 更新分账比例 + group.setTotalRate(group.getTotalRate() - groupReceiver.getRate() + rate); + // 更新接收比例 + groupReceiver.setRate(rate); + groupReceiverManager.updateById(groupReceiver); + groupManager.updateById(group); + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java index 398af2c1..b03ec003 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -1,9 +1,20 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; +import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupReceiverManager; import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationReceiverManager; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationReceiverFactory; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; +import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -20,20 +31,46 @@ public class AllocationReceiverService { private final AllocationReceiverManager manager; + private final AllocationGroupReceiverManager groupReceiverManager; + + /** + * 分页 + */ + public PageResult page(PageParam pageParam, AllocationReceiverQuery query){ + return MpUtil.convert2DtoPageResult(manager.page(pageParam, query)); + } + + /** + * 查询详情 + */ + public AllocationReceiverDto findById(Long id){ + return manager.findById(id).map(AllocationReceiver::toDto).orElseThrow(() -> new DataNotExistException("分账接收方不存在")); + } + /** * 添加分账接收方 */ public void add(AllocationReceiverParam param){ // 首先添加网关的分账接收方 AllocationReceiver receiver = AllocationReceiverConvert.CONVERT.convert(param); + + // 获取策略 + PayChannelEnum channelEnum = PayChannelEnum.findByCode(param.getChannel()); + AbsAllocationReceiverStrategy receiverStrategy = AllocationReceiverFactory.create(channelEnum); + // 校验 + receiverStrategy.setAllocationReceiver(receiver); + receiverStrategy.validation(); + receiver.setSync(false); manager.save(receiver); } /** - * 修改 + * 修改信息 */ public void update(AllocationReceiverParam param){ + // 未同步状态可以修改 + } @@ -41,15 +78,25 @@ public class AllocationReceiverService { * 删除分账接收方 */ public void remove(Long id){ - // 首先删除网关的分账接收方 - // 然后删除本地数据 } /** * 同步到三方支付系统中 */ public void registerByGateway(Long id){ + AllocationReceiver receiver = manager.findById(id).orElseThrow(() -> new PayFailureException("未找到分账接收方")); + + // 获取策略 + PayChannelEnum channelEnum = PayChannelEnum.findByCode(receiver.getChannel()); + AbsAllocationReceiverStrategy receiverStrategy = AllocationReceiverFactory.create(channelEnum); + // 校验 + receiverStrategy.setAllocationReceiver(receiver); + receiverStrategy.validation(); + receiverStrategy.doBeforeHandler(); + receiverStrategy.bind(); + receiver.setSync(true); + manager.updateById(receiver); } @@ -57,7 +104,20 @@ public class AllocationReceiverService { * 从三方支付系统中删除 */ public void removeByGateway(Long id){ + if (groupReceiverManager.isUsed(id)){ + throw new PayFailureException("该接收方已被使用,无法删除"); + } + AllocationReceiver receiver = manager.findById(id).orElseThrow(() -> new PayFailureException("未找到分账接收方")); + // 获取策略 + PayChannelEnum channelEnum = PayChannelEnum.findByCode(receiver.getChannel()); + AbsAllocationReceiverStrategy receiverStrategy = AllocationReceiverFactory.create(channelEnum); + // 校验 + receiverStrategy.setAllocationReceiver(receiver); + receiverStrategy.validation(); + receiverStrategy.doBeforeHandler(); + receiverStrategy.unbind(); + receiver.setSync(false); + manager.updateById(receiver); } - } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java new file mode 100644 index 00000000..0a2a08db --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java @@ -0,0 +1,20 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.allocation; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 支付宝分账策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@Scope(SCOPE_PROTOTYPE) +@RequiredArgsConstructor +public class AliPayAllocationStrategy { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java new file mode 100644 index 00000000..9dd70873 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java @@ -0,0 +1,20 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.allocation; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 微信支付分账策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@Scope(SCOPE_PROTOTYPE) +@RequiredArgsConstructor +public class WeChatPayAllocationStrategy { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java new file mode 100644 index 00000000..055bb09a --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java @@ -0,0 +1,84 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.receiver; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationReceiverService; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 支付宝分账接收者策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@Scope(SCOPE_PROTOTYPE) +@RequiredArgsConstructor +public class AliPayAllocationReceiverStrategy extends AbsAllocationReceiverStrategy { + + private final AliPayAllocationReceiverService receiverService; + + private final AliPayConfigService payConfigService; + + private AliPayConfig aliPayConfig; + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.WECHAT; + } + + /** + * 校验方法 + */ + @Override + public boolean validation(){ + return receiverService.validation(this.getAllocationReceiver()); + } + + /** + * 分账前处理 + */ + @Override + public void doBeforeHandler() { + this.aliPayConfig = payConfigService.getAndCheckConfig(); + // 判断是否支持分账 + if (Objects.equals(aliPayConfig.getAllocation(),false)){ + throw new PayFailureException("微信支付配置不支持分账"); + } + } + + /** + * 添加到支付系统中 + */ + @Override + public void bind() { + if (!receiverService.validation(this.getAllocationReceiver())){ + throw new PayFailureException("分账接收者参数未通过校验"); + } + receiverService.bind(this.getAllocationReceiver()); + } + + /** + * 从三方支付系统中删除 + */ + @Override + public void unbind() { + if (!receiverService.validation(this.getAllocationReceiver())){ + throw new PayFailureException("分账参数未通过校验"); + } + receiverService.unbind(this.getAllocationReceiver()); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/WeChatPayAllocationReceiverStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/WeChatPayAllocationReceiverStrategy.java new file mode 100644 index 00000000..e38fc72c --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/WeChatPayAllocationReceiverStrategy.java @@ -0,0 +1,84 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.receiver; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayAllocationReceiverService; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 微信分账接收策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Service +@Scope(SCOPE_PROTOTYPE) +@RequiredArgsConstructor +public class WeChatPayAllocationReceiverStrategy extends AbsAllocationReceiverStrategy { + + private final WeChatPayAllocationReceiverService receiverService; + + private final WeChatPayConfigService payConfigService; + + private WeChatPayConfig weChatPayConfig; + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.WECHAT; + } + + /** + * 校验方法 + */ + @Override + public boolean validation(){ + return receiverService.validation(this.getAllocationReceiver()); + } + + /** + * 分账前处理 + */ + @Override + public void doBeforeHandler() { + this.weChatPayConfig = payConfigService.getAndCheckConfig(); + // 判断是否支持分账 + if (Objects.equals(weChatPayConfig.getAllocation(),false)){ + throw new PayFailureException("微信支付配置不支持分账"); + } + } + + /** + * 添加到支付系统中 + */ + @Override + public void bind() { + if (!receiverService.validation(this.getAllocationReceiver())){ + throw new PayFailureException("分账接收者参数未通过校验"); + } + receiverService.bind(this.getAllocationReceiver(),this.weChatPayConfig); + } + + /** + * 从三方支付系统中删除 + */ + @Override + public void unbind() { + if (!receiverService.validation(this.getAllocationReceiver())){ + throw new PayFailureException("分账参数未通过校验"); + } + receiverService.unbind(this.getAllocationReceiver(),this.weChatPayConfig); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java new file mode 100644 index 00000000..b33fce0f --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java @@ -0,0 +1,31 @@ +package cn.bootx.platform.daxpay.service.dto.allocation; + +import cn.bootx.platform.common.core.rest.dto.BaseDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * + * @author xxm + * @since 2024/4/1 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "") +public class AllocationGroupDto extends BaseDto { + + @Schema(description = "名称") + private String name; + + @Schema(description = "通道") + private String channel; + + @Schema(description = "总分账比例(万分之多少)") + private Integer totalRate; + + @Schema(description = "备注") + private String remark; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java new file mode 100644 index 00000000..d0b87505 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java @@ -0,0 +1,19 @@ +package cn.bootx.platform.daxpay.service.dto.allocation; + +import cn.bootx.platform.common.core.rest.dto.BaseDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * + * @author xxm + * @since 2024/4/1 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "") +public class AllocationGroupReceiverDto extends BaseDto { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java new file mode 100644 index 00000000..94ee4260 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java @@ -0,0 +1,36 @@ +package cn.bootx.platform.daxpay.service.func; + +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +/** + * 分账接收方管理抽象策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Getter +@Setter +public abstract class AbsAllocationReceiverStrategy implements PayStrategy{ + + private AllocationReceiver allocationReceiver; + + public abstract boolean validation(); + + /** + * 支付前处理, 校验和初始化支付配置 + */ + public abstract void doBeforeHandler(); + + /** + * 添加到三方支付系统中 + */ + public abstract void bind(); + + /** + * 从三方支付系统中删除 + */ + public abstract void unbind(); +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java new file mode 100644 index 00000000..e4b22407 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java @@ -0,0 +1,30 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 分账组绑定参数 + * @author xxm + * @since 2024/4/1 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账组绑定参数") +public class AllocationGroupBindParam { + + @NotNull(message = "分账组ID不可为空") + @Schema(description = "分账组ID") + private Long groupId; + + @Valid + @NotEmpty(message = "分账接收方不可为空") + @Schema(description = "分账接收方集合") + List receivers; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java new file mode 100644 index 00000000..ff852070 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java @@ -0,0 +1,29 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账组参数 + * @author xxm + * @since 2024/4/1 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账组参数") +public class AllocationGroupParam { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "分组名称") + private String name; + + @Schema(description = "通道") + private String channel; + + @Schema(description = "备注") + private String remark; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java new file mode 100644 index 00000000..01e718dd --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java @@ -0,0 +1,28 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * 分账组接收者参数 + * @author xxm + * @since 2024/4/1 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账组接收者参数") +public class AllocationGroupReceiverParam { + + @NotNull(message = "接收者ID不可为空") + @Schema(description = "接收者ID") + private Long receiverId; + + @Schema(description = "分账比例(万分之多少)") + @NotNull(message = "分账比例不可为空") + @Min(value = 1,message = "分账比例最低为1") + private Integer rate; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java new file mode 100644 index 00000000..c33eb9e0 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java @@ -0,0 +1,28 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 分账组接收者解除绑定 + * @author xxm + * @since 2024/4/1 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账组取消接收者绑定") +public class AllocationGroupUnbindParam { + + @NotNull(message = "分账组ID不可为空") + @Schema(description = "分账组ID") + private Long groupId; + + @NotEmpty(message = "分账接收方不可为空") + @Schema(description = "分账接收方集合") + List receiverIds; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java index d0c01351..41437080 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java @@ -16,6 +16,7 @@ import lombok.experimental.Accessors; @Schema(title = "分账接收方参数") public class AllocationReceiverParam { + @Schema(description = "主键") private Long id; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java new file mode 100644 index 00000000..0859313c --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java @@ -0,0 +1,53 @@ +package cn.bootx.platform.daxpay.service.param.allocation; + +import cn.bootx.platform.common.core.annotation.QueryParam; +import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 分账接收方查询条件 + * @author xxm + * @since 2024/4/1 + */ +@Getter +@Setter +public class AllocationReceiverQuery { + + @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) + @Schema(description = "账号别名") + private String name; + + /** + * @see PayChannelEnum + */ + @Schema(description = "所属通道") + private String channel; + + /** + * 分账接收方类型 个人/商户 + */ + @Schema(description = "分账接收方类型") + private String receiverType; + + @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) + @Schema(description = "接收方账号") + private String receiverAccount; + + /** 接收方姓名 */ + @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) + @Schema(description = "接收方姓名") + private String receiverName; + + /** + * 分账关系类型 + * @see AllocationRelationTypeEnum + */ + @Schema(description = "分账关系类型") + private String relationType; + + @Schema(description = "是否已经同步到网关") + private boolean sync; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java index 5321b338..5a043d81 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/sdk/wechat/BarPayModel.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.service.sdk.wechat; -import com.ijpay.wxpay.model.MicroPayModel; +import com.ijpay.core.model.BaseModel; import lombok.*; import lombok.experimental.Accessors; @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -public class BarPayModel extends MicroPayModel { +public class BarPayModel extends BaseModel { /** * 是否押金支付 */ -- Gitee From 4a00dcb4f68e1fd7a73841b0e5e22380d35ebd12 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 2 Apr 2024 08:52:52 +0800 Subject: [PATCH 21/45] =?UTF-8?q?doc=20=E6=9B=B4=E6=96=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E7=BE=A4=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 98852993..7c0981e4 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ QQ扫码加入QQ交流群 微信扫码加入微信交流群

-微信图片_20240226144703 +微信图片_20240226144703

## 🍻 鸣谢 -- Gitee From e9c50e41c4b7f5cb1c134844895abc26f4916112 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 2 Apr 2024 23:41:02 +0800 Subject: [PATCH 22/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E6=96=B9=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++- _doc/Task.md | 5 +- _doc/images/dax-pay.svg | 31 ++++++ .../allocation/AllocationGroupController.java | 101 ++++++++++++++++++ .../AllocationReceiverController.java | 32 ++++-- .../code/AllocationReceiverTypeEnum.java | 25 +++-- .../platform/daxpay/code/PayChannelEnum.java | 6 -- .../AliPayAllocationReceiverService.java | 2 +- .../WeChatPayAllocationReceiverService.java | 2 +- .../AllocationGroupReceiverConvert.java | 4 +- .../dao/AllocationGroupManager.java | 12 +++ .../dao/AllocationGroupReceiverManager.java | 16 +++ .../allocation/entity/AllocationGroup.java | 2 + .../entity/AllocationGroupReceiver.java | 6 +- .../allocation/entity/AllocationReceiver.java | 7 ++ .../service/AllocationGroupService.java | 71 ++++++++++-- .../service/AllocationReceiverService.java | 54 +++++++++- .../AllocationGroupReceiverDto.java | 19 ---- .../AllocationGroupReceiverResult.java | 52 +++++++++ .../dto/allocation/AllocationReceiverDto.java | 5 + .../allocation/AllocationReceiverParam.java | 5 + 21 files changed, 408 insertions(+), 62 deletions(-) create mode 100644 _doc/images/dax-pay.svg create mode 100644 daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java diff --git a/README.md b/README.md index 7c0981e4..c5c0928b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# Dromara Dax-Pay(开源支付系统) -

+

+ +

+ +

+ star Build Status Build Status @@ -9,6 +13,7 @@

+# Dromara Dax-Pay(开源支付系统) ## ❗使用须知 `DaxPay`是一款基于`Apache License 2.0`协议分发的开源软件,受中华人民共和国相关法律法规的保护和限制,可以在符合[《用户授权使用协议》](用户授权使用协议.txt)和 @@ -24,6 +29,7 @@ - 封装各类支付通道的接口为统一的接口,方便业务系统进行调用,简化对接多种支付方式的复杂度 - 已对接`微信支付`、`支付宝`和云闪付相关的接口,后续版本将支持`V3`版本的接口 - 支持组合支付,满足用户系统需要多种方式同时进行支付的场景。 +- 支持支付、退款、对账、分账等支付相关的能力 - 提供`HTTP`方式接口调用能力,和`Java`版本的`SDK`,方便业务系统进行对接 - 接口请求和响应数据支持启用签名机制,可根据实际需要进行开关,保证交易安全可靠 - 提供管理平台,方便运营人员进行管理和操作,不需要懂IT技术也可以轻松使用 @@ -204,12 +210,9 @@ Apache License Version 2.0 display: flex; flex-wrap: wrap; } - - .member-project a { padding: 10px; } - .member-project a img { height: 40px; } diff --git a/_doc/Task.md b/_doc/Task.md index 5260e9a6..e5a080c2 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,12 +1,12 @@ 2.0.5: - [ ] 资金流水优化 -- [ ] 支付通道配置是否支持分账 +- [x] 支付通道配置是否支持分账 - [ ] 分账接收方管理 - [ ] 分账组管理 - [ ] 分账订单管理 - [ ] 统计报表功能 - [x] 修复创建支付订单报错时, 订单保存数据不完整 -- [ ] DEMI增加获取微信OpenID和支付宝OpenId功能 +- [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 2.0.x 版本内容 - [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ @@ -20,6 +20,7 @@ - [ ] 同步接口 - [ ] 对账接口 - [ ] 增加通道开通能力管理,在操作发起前的校验时提前进行拦截 +- [ ] 支付通道两个独立的配置进行合并为一个 **任务池** - [ ] 对账改造: diff --git a/_doc/images/dax-pay.svg b/_doc/images/dax-pay.svg new file mode 100644 index 00000000..f274be71 --- /dev/null +++ b/_doc/images/dax-pay.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java new file mode 100644 index 00000000..c2aa6d38 --- /dev/null +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java @@ -0,0 +1,101 @@ +package cn.bootx.platform.daxpay.admin.controller.allocation; + +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.Res; +import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.common.core.util.ValidationUtil; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationGroupService; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupBindParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupUnbindParam; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 分账组 + * @author xxm + * @since 2024/4/2 + */ +@Tag(name = "分账组") +@RestController +@RequestMapping("/allocation/group") +@RequiredArgsConstructor +public class AllocationGroupController { + private final AllocationGroupService allocationGroupService; + + @Operation(summary = "分页") + @GetMapping("/page") + public ResResult> page(PageParam pageParam, AllocationGroupParam query){ + return Res.ok(allocationGroupService.page(pageParam,query)); + } + + @Operation(summary = "查询详情") + @GetMapping("/findById") + public ResResult findById(Long id){ + return Res.ok(allocationGroupService.findById(id)); + } + + @Operation(summary = "查询分账接收方信息") + @GetMapping("/findReceiversByGroups") + public ResResult> findReceiversByGroups(Long groupId){ + return Res.ok(allocationGroupService.findReceiversByGroups(groupId)); + } + + @Operation(summary = "创建") + @PostMapping("/create") + public ResResult create(@RequestBody AllocationGroupParam param){ + allocationGroupService.create(param); + return Res.ok(); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public ResResult update(@RequestBody AllocationGroupParam param){ + allocationGroupService.update(param); + return Res.ok(); + } + + @Operation(summary = "删除") + @PostMapping("/delete") + public ResResult delete(Long id){ + allocationGroupService.delete(id); + return Res.ok(); + } + + @Operation(summary = "批量绑定接收者") + @PostMapping("/bindReceivers") + public ResResult bindReceivers(@RequestBody AllocationGroupBindParam param){ + ValidationUtil.validateParam(param); + allocationGroupService.bindReceivers(param); + return Res.ok(); + } + + @Operation(summary = "批量取消绑定接收者") + @PostMapping("/unbindReceivers") + public ResResult unbindReceivers(@RequestBody AllocationGroupUnbindParam param){ + allocationGroupService.unbindReceivers(param); + return Res.ok(); + } + + @Operation(summary = "取消绑定接收者") + @PostMapping("/unbindReceiver") + public ResResult unbindReceiver(Long receiverId){ + allocationGroupService.unbindReceiver(receiverId); + return Res.ok(); + } + + @Operation(summary = "修改分账比例") + @PostMapping("/updateRate") + public ResResult updateRate(Long receiverId, Integer rate){ + allocationGroupService.updateRate(receiverId,rate); + return Res.ok(); + } + +} diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java index 072fb62e..f6418099 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.admin.controller.allocation; import cn.bootx.platform.common.core.rest.PageResult; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationReceiverService; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; @@ -11,10 +12,9 @@ import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 对账接收方控制器 @@ -41,20 +41,38 @@ public class AllocationReceiverController { return Res.ok(receiverService.findById(id)); } + @Operation(summary = "获取可以分账的通道") + @GetMapping("/findChannels") + public ResResult> findChannels(){ + return Res.ok(receiverService.findChannels()); + } + @Operation(summary = "根据通道获取分账接收方类型") + @GetMapping("/findReceiverTypeByChannel") + public ResResult> findReceiverTypeByChannel(String channel){ + return Res.ok(receiverService.findReceiverTypeByChannel(channel)); + } + @Operation(summary = "新增") - @PostMapping("") - public ResResult add(AllocationReceiverParam param){ + @PostMapping("add") + public ResResult add(@RequestBody AllocationReceiverParam param){ receiverService.add(param); return Res.ok(); } @Operation(summary = "修改") @PostMapping("update") - public ResResult update(AllocationReceiverParam param){ + public ResResult update(@RequestBody AllocationReceiverParam param){ receiverService.update(param); return Res.ok(); } + @Operation(summary = "删除") + @PostMapping("delete") + public ResResult delete(Long id){ + receiverService.remove(id); + return Res.ok(); + } + @Operation(summary = "同步到三方支付系统中") @PostMapping("registerByGateway") public ResResult registerByGateway(Long id){ diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java index 22c7121c..9db40376 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java @@ -3,8 +3,12 @@ package cn.bootx.platform.daxpay.code; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + /** - * 分账接收方类型枚举 + * 分账接收方类型 * @author xxm * @since 2024/4/1 */ @@ -12,18 +16,27 @@ import lombok.Getter; @AllArgsConstructor public enum AllocationReceiverTypeEnum { /** 个人 */ - WX_PERSONAL("PERSONAL_OPENID", "个人"), + WX_PERSONAL("wx_personal","PERSONAL_OPENID", "个人"), /** 商户 */ - WX_MERCHANT("MERCHANT_ID", "商户"), + WX_MERCHANT("wx_merchant","MERCHANT_ID", "商户"), /** userId 以2088开头的纯16位数字 */ - ALI_USER_ID("userId", "账号ID"), + ALI_USER_ID("ali_user_id","userId", "用户ID"), /** openId */ - ALI_OPEN_ID("openId", "登录号"), + ALI_OPEN_ID("ali_open_id","openId", "openId"), /** 账号 */ - ALI_LOGIN_NAME("loginName", "openId"); + ALI_LOGIN_NAME("ali_login_name","loginName", "账号"); + /** 编码 */ private final String code; + /** 外部编码, 三方支付系统使用的编码 */ + private final String outCode; + /** 名称 */ private final String name; + /** 微信支持类型 */ + public static final List WECHAT_LIST = Collections.unmodifiableList(Arrays.asList(WX_PERSONAL, WX_MERCHANT)); + /** 支付宝支持类型 */ + public static final List ALI_LIST = Collections.unmodifiableList(Arrays.asList(ALI_OPEN_ID, ALI_USER_ID, ALI_LOGIN_NAME)); + } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java index 13124759..55da288b 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java @@ -45,12 +45,6 @@ public enum PayChannelEnum { .orElseThrow(() -> new PayFailureException("不存在的支付通道")); } - /** 支付宝 UA */ - public static final String UA_ALI_PAY = "Alipay"; - - /** 微信 UA */ - public static final String UA_WECHAT_PAY = "MicroMessenger"; - /** 异步支付通道 */ public static final List ASYNC_TYPE = Collections.unmodifiableList(Arrays.asList(ALI, WECHAT, UNION_PAY)); /** 异步支付通道的编码 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java index 31064879..1402caa9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java @@ -32,7 +32,7 @@ public class AliPayAllocationReceiverService { * 校验 */ public boolean validation(AllocationReceiver allocationReceiver){ - List list = Arrays.asList(ALI_USER_ID.getCode(), ALI_OPEN_ID.getCode(), ALI_LOGIN_NAME.getCode()); + List list = Arrays.asList(ALI_USER_ID.getOutCode(), ALI_OPEN_ID.getOutCode(), ALI_LOGIN_NAME.getOutCode()); String receiverType = allocationReceiver.getReceiverType(); return list.contains(receiverType); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java index 84fcbe3d..fc19a7be 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java @@ -33,7 +33,7 @@ public class WeChatPayAllocationReceiverService { * 校验参数是否合法 */ public boolean validation(AllocationReceiver allocationReceiver){ - List list = Arrays.asList(WX_MERCHANT.getCode(), WX_MERCHANT.getCode()); + List list = Arrays.asList(WX_MERCHANT.getOutCode(), WX_MERCHANT.getOutCode()); String receiverType = allocationReceiver.getReceiverType(); return !list.contains(receiverType); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java index d5644b8e..dbce8cb2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java @@ -1,7 +1,7 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; -import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverDto; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -15,7 +15,7 @@ import org.mapstruct.factory.Mappers; public interface AllocationGroupReceiverConvert { AllocationGroupReceiverConvert CONVERT = Mappers.getMapper(AllocationGroupReceiverConvert.class); - AllocationGroupReceiverDto convert(AllocationGroupReceiver in); + AllocationGroupReceiverResult convert(AllocationGroupReceiver in); AllocationGroupReceiver convert(AllocationGroupReceiverParam in); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java index f684c7a7..ae9a769b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java @@ -1,7 +1,13 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.dao; +import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; @@ -15,4 +21,10 @@ import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor public class AllocationGroupManager extends BaseManager { + + public Page page(PageParam pageParam, AllocationGroupParam query) { + Page mpPage = MpUtil.getMpPage(pageParam, AllocationGroup.class); + QueryWrapper generator = QueryGenerator.generator(query); + return page(mpPage,generator); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java index 6f619395..6aa97a68 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupReceiverManager.java @@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; +import java.util.List; + /** * 分账组关联接收方 * @author xxm @@ -22,4 +24,18 @@ public class AllocationGroupReceiverManager extends BaseManager findByGroupId(Long groupId){ + return findAllByField(AllocationGroupReceiver::getGroupId, groupId); + } + + /** + * 根据分组ID进行批量删除 + */ + public void deleteByGroupId(Long groupId){ + deleteByField(AllocationGroupReceiver::getGroupId, groupId); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java index f62c3d8b..069a6eb9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java @@ -6,6 +6,7 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.Allocati import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; import cn.bootx.table.modify.annotation.DbColumn; import cn.bootx.table.modify.annotation.DbComment; +import cn.bootx.table.modify.annotation.DbTable; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -21,6 +22,7 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) +@DbTable(comment = "分账组") @TableName("pay_allocation_receiver_group") public class AllocationGroup extends MpBaseEntity implements EntityBaseFunction { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java index 12416d6b..c2a531bb 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroupReceiver.java @@ -2,6 +2,8 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; import cn.bootx.platform.common.mybatisplus.base.MpCreateEntity; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbTable; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -14,9 +16,11 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) +@DbTable(comment = "分账接收组关系") +@TableName("pay_allocation_group_receiver") public class AllocationGroupReceiver extends MpCreateEntity { - @DbColumn(comment = "分账ID") + @DbColumn(comment = "分账组ID") private Long groupId; @DbColumn(comment = "接收者ID") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java index 41af87c6..fbcb6dff 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -8,8 +8,10 @@ import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbTable; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -22,6 +24,8 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) +@DbTable(comment = "分账接收方") +@TableName("pay_allocation_receiver") public class AllocationReceiver extends MpBaseEntity implements EntityBaseFunction { @DbColumn(comment = "账号别名") @@ -67,6 +71,9 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti @DbColumn(comment = "是否已经同步到网关") private boolean sync; + @DbColumn(comment = "备注") + private String remark; + /** * 转换 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index 0e958155..aa27a9ae 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -1,6 +1,10 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.common.core.function.CollectorsFunction; +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationGroupConvert; import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupManager; @@ -9,6 +13,8 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationRe import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupBindParam; import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; @@ -21,6 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -36,13 +44,57 @@ public class AllocationGroupService { private final AllocationGroupReceiverManager groupReceiverManager; private final AllocationReceiverManager receiverManager; + /** + * 分页 + */ + public PageResult page(PageParam pageParam, AllocationGroupParam query){ + return MpUtil.convert2DtoPageResult(groupManager.page(pageParam,query)); + } + + /** + * 查询详情 + */ + public AllocationGroupDto findById(Long id){ + return groupManager.findById(id).map(AllocationGroup::toDto).orElseThrow(()->new DataNotExistException("分账组不存在")); + } + + /** + * 查询分账接收方 + */ + public List findReceiversByGroups(Long groupId){ + List groupReceivers = groupReceiverManager.findByGroupId(groupId); + List receiverIds = groupReceivers.stream() + .map(AllocationGroupReceiver::getReceiverId) + .collect(Collectors.toList()); + // 查询关联接收方信息 + Map receiverMap = receiverManager.findAllByIds(receiverIds) + .stream() + .collect(Collectors.toMap(AllocationReceiver::getId, Function.identity(), CollectorsFunction::retainLatest)); + // 组装信息 + return groupReceivers.stream() + .map(o -> { + AllocationReceiver allocationReceiver = receiverMap.get(o.getReceiverId()); + return new AllocationGroupReceiverResult() + .setId(o.getId()) + .setReceiverId(allocationReceiver.getId()) + .setReceiverAccount(allocationReceiver.getReceiverAccount()) + .setReceiverName(allocationReceiver.getReceiverName()) + .setRate(o.getRate()) + .setReceiverType(allocationReceiver.getReceiverType()) + .setRelationName(allocationReceiver.getRelationName()) + .setRelationType(allocationReceiver.getRelationType()); + }) + .collect(Collectors.toList()); + } + /** * 创建分账组 */ public void create(AllocationGroupParam param){ PayChannelEnum.findByCode(param.getChannel()); - AllocationGroup allocation = AllocationGroupConvert.CONVERT.convert(param); - groupManager.save(allocation); + AllocationGroup group = AllocationGroupConvert.CONVERT.convert(param); + group.setTotalRate(0); + groupManager.save(group); } /** @@ -52,22 +104,24 @@ public class AllocationGroupService { AllocationGroup group = groupManager.findById(param.getId()) .orElseThrow(() -> new DataNotExistException("未找到分账组")); BeanUtil.copyProperties(param,group, CopyOptions.create().ignoreNullValue()); - group.setTotalRate(0); + group.setTotalRate(null); groupManager.updateById(group); } /** * 删除分账组 */ - public void delete(){ - + @Transactional(rollbackFor = Exception.class) + public void delete(Long id){ + groupManager.deleteById(id); + groupReceiverManager.deleteByGroupId(id); } /** * 绑定分账接收方 */ @Transactional(rollbackFor = Exception.class) - public void bind(AllocationGroupBindParam param) { + public void bindReceivers(AllocationGroupBindParam param) { // 分账组 AllocationGroup group = groupManager.findById(param.getGroupId()) .orElseThrow(() -> new DataNotExistException("未找到分账组")); @@ -108,7 +162,7 @@ public class AllocationGroupService { * 批量删除分账接收方 */ @Transactional(rollbackFor = Exception.class) - public void removeReceivers(AllocationGroupUnbindParam param){ + public void unbindReceivers(AllocationGroupUnbindParam param){ // 分账组 AllocationGroup group = groupManager.findById(param.getGroupId()) .orElseThrow(() -> new DataNotExistException("未找到分账组")); @@ -130,7 +184,7 @@ public class AllocationGroupService { * 删除单个分账接收方 */ @Transactional - public void removeReceiver(Long receiverId){ + public void unbindReceiver(Long receiverId){ AllocationGroupReceiver groupReceiver = groupReceiverManager.findById(receiverId) .orElseThrow(() -> new DataNotExistException("未找到分账接收方")); AllocationGroup group = groupManager.findById(groupReceiver.getGroupId()) @@ -145,6 +199,7 @@ public class AllocationGroupService { /** * 修改分账比例 */ + @Transactional(rollbackFor = Exception.class) public void updateRate(Long receiverId, Integer rate){ AllocationGroupReceiver groupReceiver = groupReceiverManager.findById(receiverId) .orElseThrow(() -> new DataNotExistException("未找到分账接收方")); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java index b03ec003..fb4866d0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -1,9 +1,12 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; +import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.core.payment.allocation.convert.AllocationReceiverConvert; @@ -19,6 +22,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * 分账接收方服务类 * @author xxm @@ -47,6 +54,34 @@ public class AllocationReceiverService { return manager.findById(id).map(AllocationReceiver::toDto).orElseThrow(() -> new DataNotExistException("分账接收方不存在")); } + /** + * 获取可以分账的通道 + */ + public List findChannels(){ + return Arrays.asList( + new LabelValue(PayChannelEnum.ALI.getName(),PayChannelEnum.ALI.getCode()), + new LabelValue(PayChannelEnum.WECHAT.getName(),PayChannelEnum.WECHAT.getCode()) + ); + } + + /** + * 根据通道获取分账接收方类型 + */ + public List findReceiverTypeByChannel(String channel){ + PayChannelEnum channelEnum = PayChannelEnum.findByCode(channel); + List list; + if (channelEnum == PayChannelEnum.ALI){ + list = AllocationReceiverTypeEnum.ALI_LIST; + } else if (channelEnum == PayChannelEnum.WECHAT){ + list = AllocationReceiverTypeEnum.WECHAT_LIST; + } else { + throw new BizException("非法的分账通道类型"); + } + return list.stream() + .map(item -> new LabelValue(item.getName(),item.getCode())) + .collect(Collectors.toList()); + } + /** * 添加分账接收方 */ @@ -69,16 +104,26 @@ public class AllocationReceiverService { * 修改信息 */ public void update(AllocationReceiverParam param){ - // 未同步状态可以修改 - - + AllocationReceiver receiver = manager.findById(param.getId()).orElseThrow(() -> new PayFailureException("未找到分账接收方")); + receiver.setName(param.getName()) + .setRemark(param.getRemark()); + manager.updateById(receiver); } /** * 删除分账接收方 */ public void remove(Long id){ - + // 未同步可以删除 + AllocationReceiver receiver = manager.findById(id).orElseThrow(() -> new PayFailureException("未找到分账接收方")); + if (receiver.isSync()){ + throw new BizException("该接收方已同步到三方支付系统中,无法删除"); + } + // 判断是否绑定了分账组 + if (groupReceiverManager.isUsed(id)){ + throw new PayFailureException("该接收方已被分账组使用,无法删除"); + } + manager.deleteById(id); } /** @@ -120,4 +165,5 @@ public class AllocationReceiverService { receiver.setSync(false); manager.updateById(receiver); } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java deleted file mode 100644 index d0b87505..00000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverDto.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.bootx.platform.daxpay.service.dto.allocation; - -import cn.bootx.platform.common.core.rest.dto.BaseDto; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * - * @author xxm - * @since 2024/4/1 - */ -@EqualsAndHashCode(callSuper = true) -@Data -@Accessors(chain = true) -@Schema(title = "") -public class AllocationGroupReceiverDto extends BaseDto { -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java new file mode 100644 index 00000000..2da533e8 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java @@ -0,0 +1,52 @@ +package cn.bootx.platform.daxpay.service.dto.allocation; + +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账组接收方信息 + * @author xxm + * @since 2024/4/1 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账组接收方信息") +public class AllocationGroupReceiverResult { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "接收者ID") + private Long receiverId; + + @Schema(description = "分账比例(万分之多少)") + private Integer rate; + + /** + * 分账接收方类型 + * @see AllocationReceiverTypeEnum + */ + @Schema(description = "分账接收方类型") + private String receiverType; + + + @Schema(description = "接收方账号") + private String receiverAccount; + + /** 接收方姓名 */ + @Schema(description = "接收方姓名") + private String receiverName; + + /** + * 分账关系类型 + * @see AllocationRelationTypeEnum + */ + @Schema(description = "分账关系类型") + private String relationType; + + @Schema(description = "关系名称") + private String relationName; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java index 7828fc1e..06ac5f2a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.dto.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import io.swagger.v3.oas.annotations.media.Schema; @@ -33,6 +34,7 @@ public class AllocationReceiverDto extends BaseDto { /** * 分账接收方类型 个人/商户 + * @see AllocationReceiverTypeEnum */ @Schema(description = "分账接收方类型") private String receiverType; @@ -57,4 +59,7 @@ public class AllocationReceiverDto extends BaseDto { @Schema(description = "是否已经同步到网关") private boolean sync; + + @Schema(description = "备注") + private String remark; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java index 41437080..bee954fa 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.service.param.allocation; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import io.swagger.v3.oas.annotations.media.Schema; @@ -31,6 +32,7 @@ public class AllocationReceiverParam { /** * 分账接收方类型 个人/商户 + * @see AllocationReceiverTypeEnum */ @Schema(description = "分账接收方类型") private String receiverType; @@ -56,4 +58,7 @@ public class AllocationReceiverParam { @Schema(description = "是否已经同步到网关") private boolean sync; + @Schema(description = "备注") + private String remark; + } -- Gitee From a4883b9aae6090e67851bfd177bf6f5654294e34 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Wed, 3 Apr 2024 16:01:46 +0800 Subject: [PATCH 23/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++-- _doc/Task.md | 4 ++ .../code/AllocationReceiverTypeEnum.java | 10 +++++ .../daxpay/service/code/AliPayCode.java | 4 ++ .../AliPayAllocationReceiverService.java | 40 ++++++++++++++--- .../WeChatPayAllocationReceiverService.java | 43 ++++++++++++++----- .../allocation/entity/AllocationReceiver.java | 8 +--- .../service/AllocationGroupService.java | 3 +- .../service/AllocationReceiverService.java | 15 +++++-- .../AliPayAllocationReceiverStrategy.java | 1 + .../dto/allocation/AllocationReceiverDto.java | 2 +- .../allocation/AllocationReceiverParam.java | 2 +- .../allocation/AllocationReceiverQuery.java | 2 +- 13 files changed, 107 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index c5c0928b..429962aa 100644 --- a/README.md +++ b/README.md @@ -157,13 +157,13 @@ public class SimplePayOrderTest { ## 🍎 系统截图 ### 收银台演示 -![微信截图_20240326141126](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326141126.es9yupxd3.webp) +![微信截图_20240326141126](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326141126.es9yupxd3.webp) ### 驾驶舱 -![QQ截图20240326141912](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/QQ截图20240326141912.60u0cpvjg5.webp) +![QQ截图20240326141912](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/QQ截图20240326141912.60u0cpvjg5.webp) ### H5收银台演示 -![h5](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/h5.839t0s61xr.webp) +![h5](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/h5.839t0s61xr.webp) ### 支付通道配置 -![微信截图_20240326142208](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326142208.6bgu5vdv60.webp) +![微信截图_20240326142208](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326142208.6bgu5vdv60.webp) ## 🛣️ 路线图 > 当前处于功能开发阶段,部分功能可能会有调整,`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容 diff --git a/_doc/Task.md b/_doc/Task.md index e5a080c2..e1a80ae4 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -2,7 +2,11 @@ - [ ] 资金流水优化 - [x] 支付通道配置是否支持分账 - [ ] 分账接收方管理 + - [ ] 管理 + - [ ] 同步 - [ ] 分账组管理 + - [ ] 管理 + - [ ] 绑定 - [ ] 分账订单管理 - [ ] 统计报表功能 - [x] 修复创建支付订单报错时, 订单保存数据不完整 diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java index 9db40376..8eacea67 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationReceiverTypeEnum.java @@ -34,6 +34,16 @@ public enum AllocationReceiverTypeEnum { /** 名称 */ private final String name; + /** + * 根据编码查找 + */ + public static AllocationReceiverTypeEnum findByCode(String code) { + return Arrays.stream(AllocationReceiverTypeEnum.values()) + .filter(e -> e.getCode().equals(code)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("未找到对应的分账接收方类型")); + } + /** 微信支持类型 */ public static final List WECHAT_LIST = Collections.unmodifiableList(Arrays.asList(WX_PERSONAL, WX_MERCHANT)); /** 支付宝支持类型 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java index 3e537c0a..5af159df 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java @@ -98,4 +98,8 @@ public interface AliPayCode { // 网关返回码 支付进行中 order success pay inprocess String INPROCESS = "10003"; + /* 分账相关 */ + /** 分账接收方不存在 */ + String USER_NOT_EXIST = "USER_NOT_EXIST"; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java index 1402caa9..acf26d28 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java @@ -1,6 +1,11 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.code.AliPayCode; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; +import cn.hutool.core.util.StrUtil; +import com.alipay.api.AlipayResponse; import com.alipay.api.domain.AlipayTradeRoyaltyRelationBindModel; import com.alipay.api.domain.AlipayTradeRoyaltyRelationUnbindModel; import com.alipay.api.domain.RoyaltyEntity; @@ -15,6 +20,7 @@ import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Objects; import static cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum.*; @@ -32,7 +38,7 @@ public class AliPayAllocationReceiverService { * 校验 */ public boolean validation(AllocationReceiver allocationReceiver){ - List list = Arrays.asList(ALI_USER_ID.getOutCode(), ALI_OPEN_ID.getOutCode(), ALI_LOGIN_NAME.getOutCode()); + List list = Arrays.asList(ALI_USER_ID.getCode(), ALI_OPEN_ID.getCode(), ALI_LOGIN_NAME.getCode()); String receiverType = allocationReceiver.getReceiverType(); return list.contains(receiverType); } @@ -45,16 +51,17 @@ public class AliPayAllocationReceiverService { AlipayTradeRoyaltyRelationBindModel model = new AlipayTradeRoyaltyRelationBindModel(); model.setOutRequestNo(String.valueOf(allocationReceiver.getId())); - // 分账接收方方类型。 RoyaltyEntity entity = new RoyaltyEntity(); - entity.setType(allocationReceiver.getReceiverType()); + AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(allocationReceiver.getReceiverType()); + entity.setType(receiverTypeEnum.getOutCode()); entity.setAccount(allocationReceiver.getReceiverAccount()); + entity.setName(allocationReceiver.getReceiverName()); entity.setMemo(allocationReceiver.getRelationName()); + // 不报错视为同步成功 model.setReceiverList(Collections.singletonList(entity)); AlipayTradeRoyaltyRelationBindResponse response = AliPayApi.tradeRoyaltyRelationBind(model); - - // 如果返回成功或者已经绑定, 关系 + this.verifyErrorMsg(response); } /** @@ -66,12 +73,31 @@ public class AliPayAllocationReceiverService { model.setOutRequestNo(String.valueOf(allocationReceiver.getId())); RoyaltyEntity entity = new RoyaltyEntity(); + AllocationReceiverTypeEnum receiverTypeEnum = findByCode(allocationReceiver.getReceiverType()); + entity.setType(receiverTypeEnum.getOutCode()); entity.setAccount(allocationReceiver.getReceiverAccount()); - entity.setMemo(allocationReceiver.getRelationName()); model.setReceiverList(Collections.singletonList(entity)); AlipayTradeRoyaltyRelationUnbindResponse response = AliPayApi.tradeRoyaltyRelationUnBind(model); + System.out.println(response); + // 如果出现分账方不存在也视为成功 + if (Objects.equals(response.getSubCode(), AliPayCode.USER_NOT_EXIST)) { + return; + } + this.verifyErrorMsg(response); } - + /** + * 验证错误信息 + */ + private void verifyErrorMsg(AlipayResponse alipayResponse) { + if (!Objects.equals(alipayResponse.getCode(), AliPayCode.SUCCESS)) { + String errorMsg = alipayResponse.getSubMsg(); + if (StrUtil.isBlank(errorMsg)) { + errorMsg = alipayResponse.getMsg(); + } + log.error("支付失败 {}", errorMsg); + throw new PayFailureException(errorMsg); + } + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java index fc19a7be..2828334b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java @@ -1,13 +1,16 @@ package cn.bootx.platform.daxpay.service.core.channel.wechat.service; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.WeChatPayCode; import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.ijpay.core.enums.SignType; import com.ijpay.core.kit.WxPayKit; import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.model.ProfitSharingModel; import com.ijpay.wxpay.model.ReceiverModel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -33,7 +36,7 @@ public class WeChatPayAllocationReceiverService { * 校验参数是否合法 */ public boolean validation(AllocationReceiver allocationReceiver){ - List list = Arrays.asList(WX_MERCHANT.getOutCode(), WX_MERCHANT.getOutCode()); + List list = Arrays.asList(WX_MERCHANT.getCode(), WX_MERCHANT.getCode()); String receiverType = allocationReceiver.getReceiverType(); return !list.contains(receiverType); } @@ -42,18 +45,25 @@ public class WeChatPayAllocationReceiverService { * 绑定 */ public void bind(AllocationReceiver allocationReceiver, WeChatPayConfig weChatPayConfig){ - - Map param = ReceiverModel.builder() - .type(allocationReceiver.getReceiverType()) + AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(allocationReceiver.getReceiverType()); + // 接收者参数 + ReceiverModel receiver = ReceiverModel.builder() + .type(receiverTypeEnum.getOutCode()) .account(allocationReceiver.getReceiverAccount()) .name(allocationReceiver.getReceiverName()) .relation_type(allocationReceiver.getRelationType()) - .custom_relation(allocationReceiver.getRelationType()) .custom_relation(allocationReceiver.getRelationName()) + .build(); + // 请求参数 + Map params = ProfitSharingModel.builder() + .mch_id(weChatPayConfig.getWxMchId()) + .appid(weChatPayConfig.getWxAppId()) + .nonce_str(WxPayKit.generateStr()) + .receiver(JSONUtil.toJsonStr(receiver)) .build() .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); - String xmlResult = WxPayApi.profitSharingAddReceiver(param); + String xmlResult = WxPayApi.profitSharingAddReceiver(params); Map result = WxPayKit.xmlToMap(xmlResult); this.verifyErrorMsg(result); } @@ -62,13 +72,26 @@ public class WeChatPayAllocationReceiverService { * 解除绑定 */ public void unbind(AllocationReceiver allocationReceiver, WeChatPayConfig weChatPayConfig){ - Map param = ReceiverModel.builder() - .type(allocationReceiver.getReceiverType()) + AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(allocationReceiver.getReceiverType()); + // 原始参数 + ReceiverModel receiver = ReceiverModel.builder() + .type(receiverTypeEnum.getOutCode()) .account(allocationReceiver.getReceiverAccount()) + .name(allocationReceiver.getReceiverName()) + .relation_type(allocationReceiver.getRelationType()) + .custom_relation(allocationReceiver.getRelationName()) + .build(); + + // 原始参数 + Map params = ProfitSharingModel.builder() + .mch_id(weChatPayConfig.getWxMchId()) + .appid(weChatPayConfig.getWxAppId()) + .nonce_str(WxPayKit.generateStr()) + .receiver(JSONUtil.toJsonStr(receiver)) .build() .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); - String xmlResult = WxPayApi.profitSharingRemoveReceiver(param); + String xmlResult = WxPayApi.profitSharingRemoveReceiver(params); Map result = WxPayKit.xmlToMap(xmlResult); this.verifyErrorMsg(result); } @@ -84,7 +107,7 @@ public class WeChatPayAllocationReceiverService { if (StrUtil.isBlank(errorMsg)) { errorMsg = result.get(WeChatPayCode.RETURN_MSG); } - log.error("支付失败 {}", errorMsg); + log.error("分账绑定或解绑失败 {}", errorMsg); throw new PayFailureException(errorMsg); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java index fbcb6dff..56929a92 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -43,17 +43,15 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti * @see AllocationReceiverTypeEnum */ @DbColumn(comment = "分账接收方类型") - @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverType; @DbColumn(comment = "接收方账号") - @TableField(updateStrategy = FieldStrategy.NEVER) private String receiverAccount; /** 接收方姓名 */ @DbColumn(comment = "接收方姓名") - @TableField(updateStrategy = FieldStrategy.NEVER) + @TableField(updateStrategy = FieldStrategy.ALWAYS) private String receiverName; /** @@ -61,15 +59,13 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti * @see AllocationRelationTypeEnum */ @DbColumn(comment = "分账关系类型") - @TableField(updateStrategy = FieldStrategy.NEVER) private String relationType; @DbColumn(comment = "关系名称") - @TableField(updateStrategy = FieldStrategy.NEVER) private String relationName; @DbColumn(comment = "是否已经同步到网关") - private boolean sync; + private Boolean sync; @DbColumn(comment = "备注") private String remark; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index aa27a9ae..d690994b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; @@ -136,7 +137,7 @@ public class AllocationGroupService { } // 接收方需要已经同步到三方值系统中 receivers.stream() - .filter(receiver -> !receiver.isSync()) + .filter(receiver -> Objects.equals(receiver.getSync(), Boolean.FALSE)) .findAny() .ifPresent(receiver -> { throw new DataNotExistException("接收方未同步到三方值系统中"); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java index fb4866d0..b7c4707c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -18,12 +18,14 @@ import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -94,7 +96,9 @@ public class AllocationReceiverService { AbsAllocationReceiverStrategy receiverStrategy = AllocationReceiverFactory.create(channelEnum); // 校验 receiverStrategy.setAllocationReceiver(receiver); - receiverStrategy.validation(); + if (!receiverStrategy.validation()){ + throw new BizException("接收方信息校验失败"); + } receiver.setSync(false); manager.save(receiver); @@ -105,8 +109,11 @@ public class AllocationReceiverService { */ public void update(AllocationReceiverParam param){ AllocationReceiver receiver = manager.findById(param.getId()).orElseThrow(() -> new PayFailureException("未找到分账接收方")); - receiver.setName(param.getName()) - .setRemark(param.getRemark()); + if (Objects.equals(receiver.getSync(),true)){ + throw new BizException("该接收方已同步到三方支付系统中,无法修改"); + } + receiver.setSync(null); + BeanUtil.copyProperties(param,receiver); manager.updateById(receiver); } @@ -116,7 +123,7 @@ public class AllocationReceiverService { public void remove(Long id){ // 未同步可以删除 AllocationReceiver receiver = manager.findById(id).orElseThrow(() -> new PayFailureException("未找到分账接收方")); - if (receiver.isSync()){ + if (Objects.equals(receiver.getSync(),true)){ throw new BizException("该接收方已同步到三方支付系统中,无法删除"); } // 判断是否绑定了分账组 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java index 055bb09a..7018f8e4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/receiver/AliPayAllocationReceiverStrategy.java @@ -58,6 +58,7 @@ public class AliPayAllocationReceiverStrategy extends AbsAllocationReceiverStrat if (Objects.equals(aliPayConfig.getAllocation(),false)){ throw new PayFailureException("微信支付配置不支持分账"); } + payConfigService.initConfig(this.aliPayConfig); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java index 06ac5f2a..45b2c55b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -58,7 +58,7 @@ public class AllocationReceiverDto extends BaseDto { private String relationName; @Schema(description = "是否已经同步到网关") - private boolean sync; + private Boolean sync; @Schema(description = "备注") private String remark; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java index bee954fa..fdff4e17 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java @@ -56,7 +56,7 @@ public class AllocationReceiverParam { private String relationName; @Schema(description = "是否已经同步到网关") - private boolean sync; + private Boolean sync; @Schema(description = "备注") private String remark; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java index 0859313c..c13d81b6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java @@ -49,5 +49,5 @@ public class AllocationReceiverQuery { private String relationType; @Schema(description = "是否已经同步到网关") - private boolean sync; + private Boolean sync; } -- Gitee From ef25935b16237e701c2bfd8ed9ca6dba0fe6f2e9 Mon Sep 17 00:00:00 2001 From: bootx Date: Sat, 6 Apr 2024 01:43:55 +0800 Subject: [PATCH 24/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E7=BB=84?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 4 ++-- .../allocation/entity/AllocationGroup.java | 2 +- .../allocation/entity/AllocationReceiver.java | 2 ++ .../service/AllocationGroupService.java | 22 +++++++++++++++---- .../AllocationGroupReceiverResult.java | 5 ++++- .../dto/allocation/AllocationReceiverDto.java | 2 ++ .../AllocationGroupReceiverParam.java | 4 +++- 7 files changed, 32 insertions(+), 9 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index e1a80ae4..da457f71 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -2,8 +2,8 @@ - [ ] 资金流水优化 - [x] 支付通道配置是否支持分账 - [ ] 分账接收方管理 - - [ ] 管理 - - [ ] 同步 + - [x] 管理 + - [x] 同步 - [ ] 分账组管理 - [ ] 管理 - [ ] 绑定 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java index 069a6eb9..3fa42962 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java @@ -23,7 +23,7 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @DbTable(comment = "分账组") -@TableName("pay_allocation_receiver_group") +@TableName("pay_allocation_group") public class AllocationGroup extends MpBaseEntity implements EntityBaseFunction { @DbComment("名称") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java index 56929a92..c556ee80 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationReceiver.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.entity; +import cn.bootx.platform.common.core.annotation.EncryptionField; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; @@ -47,6 +48,7 @@ public class AllocationReceiver extends MpBaseEntity implements EntityBaseFuncti @DbColumn(comment = "接收方账号") + @EncryptionField private String receiverAccount; /** 接收方姓名 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index d690994b..a453ed88 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; +import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.function.CollectorsFunction; import cn.bootx.platform.common.core.rest.PageResult; @@ -77,6 +78,7 @@ public class AllocationGroupService { AllocationReceiver allocationReceiver = receiverMap.get(o.getReceiverId()); return new AllocationGroupReceiverResult() .setId(o.getId()) + .setName(allocationReceiver.getName()) .setReceiverId(allocationReceiver.getId()) .setReceiverAccount(allocationReceiver.getReceiverAccount()) .setReceiverName(allocationReceiver.getReceiverName()) @@ -135,13 +137,25 @@ public class AllocationGroupService { if (receivers.size() != receiverIds.size()){ throw new DataNotExistException("传入的分账接收房数量与查询到的不一致"); } - // 接收方需要已经同步到三方值系统中 + // 接收方需要已经同步到三方系统中 receivers.stream() .filter(receiver -> Objects.equals(receiver.getSync(), Boolean.FALSE)) .findAny() .ifPresent(receiver -> { - throw new DataNotExistException("接收方未同步到三方值系统中"); + throw new BizException("接收方未同步到三方值系统中"); }); + // 接收方只能为一个支付通道 + long count = receivers.stream() + .map(AllocationReceiver::getChannel) + .distinct() + .count(); + if (count > 1){ + throw new BizException("接收方只能为一个支付通道"); + } + // 检查接收方和传入的通道是否是不一致 + if (!Objects.equals(group.getChannel(), receivers.get(0).getChannel())){ + throw new BizException("接收方和传入的通道不一致"); + } // 保存分账接收者 List groupReceivers = receivers.stream() @@ -193,8 +207,8 @@ public class AllocationGroupService { // 更新分账比例 group.setTotalRate(group.getTotalRate() - groupReceiver.getRate()); // 更新接收比例 - groupReceiverManager.updateById(groupReceiver); - groupManager.deleteById(group); + groupReceiverManager.deleteById(receiverId); + groupManager.updateById(group); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java index 2da533e8..6966f7e4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java @@ -19,9 +19,12 @@ public class AllocationGroupReceiverResult { @Schema(description = "主键") private Long id; - @Schema(description = "接收者ID") + @Schema(description = "接收方ID") private Long receiverId; + @Schema(description = "接收方账号别名") + private String name; + @Schema(description = "分账比例(万分之多少)") private Integer rate; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java index 45b2c55b..543e821f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -4,6 +4,7 @@ import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -41,6 +42,7 @@ public class AllocationReceiverDto extends BaseDto { @Schema(description = "接收方账号") + @SensitiveInfo private String receiverAccount; /** 接收方姓名 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java index 01e718dd..da3feacf 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; +import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; @@ -23,6 +24,7 @@ public class AllocationGroupReceiverParam { @Schema(description = "分账比例(万分之多少)") @NotNull(message = "分账比例不可为空") - @Min(value = 1,message = "分账比例最低为1") + @Min(value = 0,message = "分账比例不可为负数") + @Max(value = 10000,message = "分账比例不可超过100%") private Integer rate; } -- Gitee From e9b62c17f6436b12af51859eb499adda63e4a4b1 Mon Sep 17 00:00:00 2001 From: zhouhailin Date: Fri, 29 Mar 2024 12:56:08 +0000 Subject: [PATCH 25/45] [FIXED] : Dockerfile rename daxpay-start.jar Signed-off-by: zhouhailin --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index beb211be..3a520459 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ WORKDIR / EXPOSE 9000 # 添加执行jar包 -ADD daxpay-single/daxpay-single-start/target/daxpay-start.jar.jar dax-start.jar +ADD daxpay-single/daxpay-single-start/target/daxpay-start.jar dax-start.jar # 执行启动命令 CMD java $JAVA_OPTS -jar dax-start.jar -- Gitee From a92d54dfb7df2b3fb6b1d0f1dd250a785310d72b Mon Sep 17 00:00:00 2001 From: bootx Date: Sat, 6 Apr 2024 23:11:32 +0800 Subject: [PATCH 26/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=92=8C=E5=88=86=E8=B4=A6=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 26 ++++++-- .../daxpay/sdk/param/pay/SimplePayParam.java | 3 + .../daxpay/sdk/payment/PayAllocationTest.java | 55 ++++++++++++++++ .../allocation/AllocationGroupController.java | 6 +- .../AllocationReceiverController.java | 4 +- .../daxpay/param/pay/AllocationParam.java | 32 +++++++++ .../daxpay/param/pay/SimplePayParam.java | 3 + .../bootx/platform/daxpay/util/PayUtil.java | 2 +- .../gateway/controller/TestController.java | 12 ++-- .../service/AliPayAllocationService.java | 66 +++++++++++++++++++ .../allocation/entity/AllocationOrder.java | 38 +++++++++++ .../entity/AllocationOrderDetail.java | 19 ++++++ .../convert/AllocationGroupConvert.java | 2 +- .../AllocationGroupReceiverConvert.java | 2 +- .../convert/AllocationReceiverConvert.java | 2 +- .../dao/AllocationGroupManager.java | 2 +- .../dao/AllocationReceiverManager.java | 2 +- .../service/AllocationGroupService.java | 8 +-- .../service/AllocationReceiverService.java | 6 +- .../allocation/service/AllocationService.java | 55 ++++++++++++++++ .../{ => group}/AllocationGroupBindParam.java | 2 +- .../{ => group}/AllocationGroupParam.java | 2 +- .../AllocationGroupReceiverParam.java | 2 +- .../AllocationGroupUnbindParam.java | 2 +- .../{ => group}/AllocationReceiverParam.java | 2 +- .../{ => group}/AllocationReceiverQuery.java | 2 +- 26 files changed, 323 insertions(+), 34 deletions(-) create mode 100644 daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationGroupBindParam.java (91%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationGroupParam.java (89%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationGroupReceiverParam.java (92%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationGroupUnbindParam.java (91%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationReceiverParam.java (95%) rename daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/{ => group}/AllocationReceiverQuery.java (95%) diff --git a/_doc/Task.md b/_doc/Task.md index da457f71..42649bdd 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,19 +1,33 @@ -2.0.5: +2.0.5: 分账初版 - [ ] 资金流水优化 - [x] 支付通道配置是否支持分账 -- [ ] 分账接收方管理 +- [x] 分账接收方管理 - [x] 管理 - [x] 同步 -- [ ] 分账组管理 - - [ ] 管理 - - [ ] 绑定 +- [x] 分账组管理 + - [x] 管理 + - [x] 绑定 - [ ] 分账订单管理 -- [ ] 统计报表功能 + - [ ] 订单创建 + - [ ] 发起分账 + - [ ] 订单完结 +- [ ] 分账处理 + - [ ] 发起分账 + - [ ] 分账回调处理 + - [ ] 分账情况查询, 分账结果/剩余可分账金额 + - [ ] - [x] 修复创建支付订单报错时, 订单保存数据不完整 + +2.0.6: 分账完善 +- [ ] 支持分账组分账和自己传接收方进行分账 - [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 +- [ ] 分账接收方管理提供接口调用 +- [ ] 分账组管理提供接口调用 +- [ ] 对账回退及退款 2.0.x 版本内容 - [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ +- [ ] 统计报表功能 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 - [ ] 增加各类日志记录,例如钱包的各项操作 diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java index 76ce5798..883f4d66 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java @@ -41,6 +41,9 @@ public class SimplePayParam extends DaxPayRequest { /** 过期时间 */ private Long expiredTime; + /** 是否开启分账 */ + private boolean allocation; + /** 用户付款中途退出返回商户网站的地址(部分支付场景中可用) */ private String quitUrl; diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java new file mode 100644 index 00000000..dc7be18b --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java @@ -0,0 +1,55 @@ +package cn.bootx.platform.daxpay.sdk.payment; + +import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; +import cn.bootx.platform.daxpay.sdk.code.PayWayEnum; +import cn.bootx.platform.daxpay.sdk.code.SignTypeEnum; +import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; +import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.pay.SimplePayParam; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import cn.hutool.core.util.RandomUtil; +import org.junit.Before; +import org.junit.Test; + +/** + * 支付分账测试 + * @author xxm + * @since 2024/4/6 + */ +public class PayAllocationTest { + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .signType(SignTypeEnum.HMAC_SHA256) + .build(); + DaxPayKit.initConfig(config); + } + + /** + * 异步通道测试 + */ + @Test + public void simplePay() { + // 简单支付参数 + SimplePayParam param = new SimplePayParam(); + param.setBusinessNo("P"+ RandomUtil.randomNumbers(5)); + param.setAmount(10); + param.setTitle("测试分账支付"); + param.setChannel(PayChannelEnum.ALI.getCode()); + param.setPayWay(PayWayEnum.QRCODE.getCode()); + param.setClientIp("127.0.0.1"); + param.setNotNotify(true); + param.setAllocation(true); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + PayOrderModel data = execute.getData(); + System.out.println(data); + } + +} diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java index c2aa6d38..30c05e8f 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java @@ -8,9 +8,9 @@ import cn.bootx.platform.common.core.util.ValidationUtil; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationGroupService; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupBindParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupUnbindParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupBindParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupUnbindParam; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java index f6418099..787124b8 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -7,8 +7,8 @@ import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationReceiverService; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverQuery; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java new file mode 100644 index 00000000..a0c40cc4 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java @@ -0,0 +1,32 @@ +package cn.bootx.platform.daxpay.param.pay; + +import cn.bootx.platform.daxpay.param.PaymentCommonParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; + +/** + * 分账请求参数 + * @author xxm + * @since 2024/4/6 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "分账请求参数") +public class AllocationParam extends PaymentCommonParam { + + @Schema(description = "支付单ID") + private Long paymentId; + + @Schema(description = "业务号") + private String businessNo; + + @Schema(description = "分账组ID") + @NotNull(message = "分账组ID不可为空") + private Long allocationGroupId; + +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/SimplePayParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/SimplePayParam.java index 43df0057..8fed27f2 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/SimplePayParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/SimplePayParam.java @@ -40,6 +40,9 @@ public class SimplePayParam extends PaymentCommonParam { @Schema(description = "支付描述") private String description; + @Schema(description = "是否开启分账") + private boolean allocation; + @Schema(description = "过期时间") @JsonDeserialize(using = TimestampToLocalDateTimeDeserializer.class) private LocalDateTime expiredTime; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java index 743ccfe8..2ae9b148 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/PayUtil.java @@ -42,7 +42,7 @@ public class PayUtil { return; } // 只有异步支付方式支持分账 - if (!isNotSync(payParam.getPayChannels())) { + if (isNotSync(payParam.getPayChannels())) { throw new PayFailureException("分账只支持包含异步支付通道的订单"); } } diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java index 579e3a5b..32210169 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java @@ -4,6 +4,7 @@ import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationService; import cn.hutool.core.thread.ThreadUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; @@ -27,6 +28,7 @@ import java.util.Objects; @RequiredArgsConstructor public class TestController { private final LockTemplate lockTemplate; + private final AliPayAllocationService allocationService; @Operation(summary = "锁测试1") @GetMapping("/lock1") @@ -50,11 +52,13 @@ public class TestController { return Res.ok(name); } + @IgnoreAuth - @Operation(summary = "微信回调测试") - @GetMapping(value = {"/wxcs/","wxcs"}) - public String wxcs(){ - return "ok"; + @Operation(summary = "支付宝分账") + @GetMapping("/ali") + public ResResult ali(){ + allocationService.allocation(null,null); + return Res.ok(); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java new file mode 100644 index 00000000..c67f84f3 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -0,0 +1,66 @@ +package cn.bootx.platform.daxpay.service.core.channel.alipay.service; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.hutool.core.util.IdUtil; +import com.alipay.api.domain.AlipayTradeOrderSettleModel; +import com.alipay.api.domain.OpenApiRoyaltyDetailInfoPojo; +import com.alipay.api.response.AlipayTradeOrderSettleResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * 支付宝分账服务 + * @author xxm + * @since 2024/4/6 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AliPayAllocationService { + + private final AliPayConfigService aliPayConfigService; + + /** + * 发起分账 + */ + @SneakyThrows + public void allocation(AllocationOrder allocationOrder, List orderDetails){ + + + aliPayConfigService.initConfig(aliPayConfigService.getConfig()); + + AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); + +// model.setOutRequestNo(String.valueOf(allocationOrder.getId())); +// model.setTradeNo(allocationOrder.getGatewayOrderNo()); + + model.setOutRequestNo(IdUtil.getSnowflakeNextIdStr()); + model.setTradeNo(""); +// model.setRoyaltyMode("async"); + OpenApiRoyaltyDetailInfoPojo detailInfoPojo = new OpenApiRoyaltyDetailInfoPojo(); + detailInfoPojo.setTransIn(""); + detailInfoPojo.setAmount("0.01"); + + + List royaltyParameters = Collections.singletonList(detailInfoPojo); + + model.setRoyaltyParameters(royaltyParameters); + + AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); + System.out.println(response); + } + + /** + * 分账完结 + */ + public void x2(){ + + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java new file mode 100644 index 00000000..970da991 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -0,0 +1,38 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.table.modify.annotation.DbColumn; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账订单 + * @author xxm + * @since 2024/4/6 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AllocationOrder extends MpBaseEntity { + + /** + * 支付订单ID + */ + @DbColumn(comment = "支付订单ID") + private Long paymentId; + + /** + * 网关订单号 + */ + @DbColumn(comment = "网关订单号") + private String gatewayOrderNo; + + + /** + * 总分账金额 + */ + @DbColumn(comment = "总分账金额") + private Integer amount; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java new file mode 100644 index 00000000..1a0846a8 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -0,0 +1,19 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.entity; + +import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账订单明细 + * @author xxm + * @since 2024/4/6 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AllocationOrderDetail extends MpBaseEntity { + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java index 758d4d35..4be3350b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupConvert.java @@ -2,7 +2,7 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupParam; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java index dbce8cb2..159353d5 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationGroupReceiverConvert.java @@ -2,7 +2,7 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroupReceiver; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupReceiverParam; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationReceiverConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationReceiverConvert.java index cd227e5e..84672c73 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationReceiverConvert.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/convert/AllocationReceiverConvert.java @@ -2,7 +2,7 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.convert; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverParam; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java index ae9a769b..0a57fb3c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java @@ -5,7 +5,7 @@ import cn.bootx.platform.common.mybatisplus.impl.BaseManager; import cn.bootx.platform.common.mybatisplus.util.MpUtil; import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupParam; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java index f3e68c75..eff2a75e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationReceiverManager.java @@ -5,7 +5,7 @@ import cn.bootx.platform.common.mybatisplus.impl.BaseManager; import cn.bootx.platform.common.mybatisplus.util.MpUtil; import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverQuery; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index a453ed88..b7f3ae02 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -16,10 +16,10 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.Allocatio import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationReceiver; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupDto; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupBindParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupReceiverParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationGroupUnbindParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupBindParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationGroupUnbindParam; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import lombok.RequiredArgsConstructor; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java index b7c4707c..8a4ba08d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationReceiverService.java @@ -16,8 +16,8 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.Allocatio import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationReceiverFactory; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationReceiverDto; import cn.bootx.platform.daxpay.service.func.AbsAllocationReceiverStrategy; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverParam; -import cn.bootx.platform.daxpay.service.param.allocation.AllocationReceiverQuery; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverParam; +import cn.bootx.platform.daxpay.service.param.allocation.group.AllocationReceiverQuery; import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -157,7 +157,7 @@ public class AllocationReceiverService { */ public void removeByGateway(Long id){ if (groupReceiverManager.isUsed(id)){ - throw new PayFailureException("该接收方已被使用,无法删除"); + throw new PayFailureException("该接收方已被使用,无法从第三方支付平台中删除"); } AllocationReceiver receiver = manager.findById(id).orElseThrow(() -> new PayFailureException("未找到分账接收方")); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java new file mode 100644 index 00000000..a5c769a2 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -0,0 +1,55 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.service; + +import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.daxpay.param.pay.AllocationParam; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderManager; +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; +import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupManager; +import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Objects; + +/** + * 分账服务 + * @author xxm + * @since 2024/4/6 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationService { + + private final PayOrderManager payOrderManager; + + private final AllocationGroupManager groupManager; + + private final AllocationGroupService allocationGroupService; + + /** + * 开启分账 + */ + @Transactional(rollbackFor = Exception.class) + public void allocation(AllocationParam param) { + // 查询支付单 + PayOrder payOrder = null; + if (Objects.nonNull(param.getPaymentId())){ + payOrder = payOrderManager.findById(param.getPaymentId()) + .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); + } + if (Objects.isNull(payOrder)){ + payOrder = payOrderManager.findByBusinessNo(param.getBusinessNo()) + .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); + } + AllocationGroup allocationGroup = groupManager.findById(param.getAllocationGroupId()) + .orElseThrow(() -> new DataNotExistException("未查询到分账组")); + List receiversByGroups = allocationGroupService.findReceiversByGroups(param.getAllocationGroupId()); + + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupBindParam.java similarity index 91% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupBindParam.java index e4b22407..07487b64 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupBindParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupBindParam.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupParam.java similarity index 89% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupParam.java index ff852070..1d399efe 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupParam.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupReceiverParam.java similarity index 92% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupReceiverParam.java index da3feacf..5826c08b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupReceiverParam.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupUnbindParam.java similarity index 91% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupUnbindParam.java index c33eb9e0..05cca016 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationGroupUnbindParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationGroupUnbindParam.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverParam.java similarity index 95% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverParam.java index fdff4e17..7af3c7ae 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverParam.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverQuery.java similarity index 95% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java rename to daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverQuery.java index c13d81b6..b9b2ce67 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/AllocationReceiverQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/allocation/group/AllocationReceiverQuery.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.param.allocation; +package cn.bootx.platform.daxpay.service.param.allocation.group; import cn.bootx.platform.common.core.annotation.QueryParam; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; -- Gitee From 6825ce4cfe5cf2cb0467b374a1a65c609d3252b7 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Sun, 7 Apr 2024 19:04:13 +0800 Subject: [PATCH 27/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 5 +- .../platform/daxpay/code/PaymentApiCode.java | 4 + .../pay/allocation/AllocationFinishParam.java | 23 ++++ .../AllocationStartParam.java} | 22 ++-- .../allocation/QueryAllocationOrderParam.java | 23 ++++ .../result/allocation/AllocationResult.java | 28 +++++ .../daxpay/result/pay/RefundSyncResult.java | 7 +- .../gateway/controller/TestController.java | 13 --- .../gateway/controller/UniPayController.java | 26 ++++- .../service/code/AllocationStatusEnum.java | 29 +++++ .../service/AliPayAllocationService.java | 50 ++++---- .../service/WeChatPayAllocationService.java | 106 +++++++++++++++++ .../allocation/convert/AllocationConvert.java | 24 ++++ .../dao/AllocationOrderDetailManager.java | 18 +++ .../dao/AllocationOrderDetailMapper.java | 14 +++ .../dao/AllocationOrderManager.java | 27 +++++ .../allocation/dao/AllocationOrderMapper.java | 14 +++ .../allocation/entity/AllocationOrder.java | 74 +++++++++++- .../entity/AllocationOrderDetail.java | 50 +++++++- .../allocation/entity/OrderAndDetail.java | 21 ++++ .../service/AllocationOrderService.java | 96 ++++++++++++++++ .../dao/AllocationGroupManager.java | 19 +++ .../allocation/entity/AllocationGroup.java | 3 + .../allocation/factory/AllocationFactory.java | 37 ++++++ .../service/AllocationGroupService.java | 13 +++ .../service/AllocationOrderSyncService.java | 16 +++ .../allocation/service/AllocationService.java | 108 ++++++++++++++++-- .../allocation/AliPayAllocationStrategy.java | 55 ++++++++- .../WeChatPayAllocationStrategy.java | 53 ++++++++- .../dto/allocation/AllocationGroupDto.java | 4 + .../allocation/AllocationOrderDetailDto.java | 19 +++ .../order/allocation/AllocationOrderDto.java | 21 ++++ .../func/AbsAllocationReceiverStrategy.java | 7 +- .../service/func/AbsAllocationStrategy.java | 47 ++++++++ .../service/func/AbsRefundRepairStrategy.java | 2 +- .../service/func/AbsRefundStrategy.java | 2 +- .../param/order/AllocationOrderQuery.java | 18 +++ 37 files changed, 1028 insertions(+), 70 deletions(-) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationFinishParam.java rename daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/{AllocationParam.java => allocation/AllocationStartParam.java} (52%) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/QueryAllocationOrderParam.java create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/convert/AllocationConvert.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderMapper.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/OrderAndDetail.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationFactory.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationOrderSyncService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java diff --git a/_doc/Task.md b/_doc/Task.md index 42649bdd..b0c09be3 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -8,14 +8,13 @@ - [x] 管理 - [x] 绑定 - [ ] 分账订单管理 - - [ ] 订单创建 + - [x] 订单创建 - [ ] 发起分账 - - [ ] 订单完结 + - [ ] 分账完结 - [ ] 分账处理 - [ ] 发起分账 - [ ] 分账回调处理 - [ ] 分账情况查询, 分账结果/剩余可分账金额 - - [ ] - [x] 修复创建支付订单报错时, 订单保存数据不完整 2.0.6: 分账完善 diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PaymentApiCode.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PaymentApiCode.java index d4d090e5..dea8bf02 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PaymentApiCode.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PaymentApiCode.java @@ -17,6 +17,10 @@ public interface PaymentApiCode { String CLOSE = "close"; + String ALLOCATION = "allocation"; + + String ALLOCATION_FINISH = "allocationFinish"; + String SYNC_PAY = "syncPay"; String SYNC_REFUND = "syncRefund"; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationFinishParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationFinishParam.java new file mode 100644 index 00000000..c6c224bb --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationFinishParam.java @@ -0,0 +1,23 @@ +package cn.bootx.platform.daxpay.param.pay.allocation; + +import cn.bootx.platform.daxpay.param.PaymentCommonParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分账完结参数 + * @author xxm + * @since 2024/4/7 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(title = "分账请求参数") +public class AllocationFinishParam extends PaymentCommonParam { + + @Schema(description = "分账订单ID") + private Long orderId; + + @Schema(description = "分账单号") + private String allocationNo; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationStartParam.java similarity index 52% rename from daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java rename to daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationStartParam.java index a0c40cc4..61397a18 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationStartParam.java @@ -1,23 +1,19 @@ -package cn.bootx.platform.daxpay.param.pay; +package cn.bootx.platform.daxpay.param.pay.allocation; import cn.bootx.platform.daxpay.param.PaymentCommonParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import javax.validation.constraints.NotNull; /** - * 分账请求参数 + * 开始分账请求参数 * @author xxm * @since 2024/4/6 */ @EqualsAndHashCode(callSuper = true) @Data -@Accessors(chain = true) -@Schema(title = "分账请求参数") -public class AllocationParam extends PaymentCommonParam { +@Schema(title = "开始分账请求参数") +public class AllocationStartParam extends PaymentCommonParam { @Schema(description = "支付单ID") private Long paymentId; @@ -25,8 +21,16 @@ public class AllocationParam extends PaymentCommonParam { @Schema(description = "业务号") private String businessNo; + @Schema(description = "分账单号(保证唯一)") + private String allocationNo; + + @Schema(description = "分账描述") + private String description; + + /** + * 不传输分账组使用默认分账组进行分账 + */ @Schema(description = "分账组ID") - @NotNull(message = "分账组ID不可为空") private Long allocationGroupId; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/QueryAllocationOrderParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/QueryAllocationOrderParam.java new file mode 100644 index 00000000..911dc63c --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/QueryAllocationOrderParam.java @@ -0,0 +1,23 @@ +package cn.bootx.platform.daxpay.param.pay.allocation; + +import cn.bootx.platform.daxpay.param.PaymentCommonParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分账订单查询参数 + * @author xxm + * @since 2024/4/7 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(title = "支付订单查询参数") +public class QueryAllocationOrderParam extends PaymentCommonParam { + + @Schema(description = "分账订单ID") + private Long orderId; + + @Schema(description = "分账单号") + private String allocationNo; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java new file mode 100644 index 00000000..beeb11d0 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java @@ -0,0 +1,28 @@ +package cn.bootx.platform.daxpay.result.allocation; + +import cn.bootx.platform.daxpay.result.CommonResult; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账请求结果 + * @author xxm + * @since 2024/4/7 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "分账请求结果") +public class AllocationResult extends CommonResult { + + @Schema(description = "分账订单ID") + private Long orderId; + + @Schema(description = "分账订单号, 如果请求时未传, 则默认使用分账订单ID") + private String allocationNo; + + @Schema(description = "分账状态") + private String status; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java index 47d89cc0..dbafb5c8 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java @@ -1,7 +1,9 @@ package cn.bootx.platform.daxpay.result.pay; +import cn.bootx.platform.daxpay.result.CommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** @@ -9,12 +11,11 @@ import lombok.experimental.Accessors; * @author xxm * @since 2024/1/29 */ +@EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) @Schema(title = "退款同步结果") -public class RefundSyncResult { - - +public class RefundSyncResult extends CommonResult { @Schema(description = "是否进行了修复") private boolean repair; diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java index 32210169..1dab3f8d 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/TestController.java @@ -1,10 +1,8 @@ package cn.bootx.platform.daxpay.gateway.controller; -import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; -import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationService; import cn.hutool.core.thread.ThreadUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; @@ -28,7 +26,6 @@ import java.util.Objects; @RequiredArgsConstructor public class TestController { private final LockTemplate lockTemplate; - private final AliPayAllocationService allocationService; @Operation(summary = "锁测试1") @GetMapping("/lock1") @@ -52,14 +49,4 @@ public class TestController { return Res.ok(name); } - - @IgnoreAuth - @Operation(summary = "支付宝分账") - @GetMapping("/ali") - public ResResult ali(){ - allocationService.allocation(null,null); - return Res.ok(); - } - - } diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java index ae076ae6..a6ecb9df 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java @@ -4,16 +4,20 @@ import cn.bootx.platform.common.core.annotation.CountTime; import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.daxpay.code.PaymentApiCode; import cn.bootx.platform.daxpay.param.pay.*; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.result.DaxResult; +import cn.bootx.platform.daxpay.result.allocation.AllocationResult; import cn.bootx.platform.daxpay.result.pay.PayResult; import cn.bootx.platform.daxpay.result.pay.RefundResult; import cn.bootx.platform.daxpay.result.pay.SyncResult; import cn.bootx.platform.daxpay.service.annotation.PaymentApi; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; import cn.bootx.platform.daxpay.service.core.payment.close.service.PayCloseService; import cn.bootx.platform.daxpay.service.core.payment.pay.service.PayService; import cn.bootx.platform.daxpay.service.core.payment.refund.service.RefundService; -import cn.bootx.platform.daxpay.service.core.payment.sync.service.RefundSyncService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; +import cn.bootx.platform.daxpay.service.core.payment.sync.service.RefundSyncService; import cn.bootx.platform.daxpay.util.DaxRes; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -39,6 +43,7 @@ public class UniPayController { private final PaySyncService paySyncService; private final PayCloseService payCloseService; private final RefundSyncService refundSyncService; + private final AllocationService allocationService; @CountTime @@ -98,4 +103,23 @@ public class UniPayController { return DaxRes.ok(refundSyncService.sync(param)); } + @CountTime + @PaymentApi(PaymentApiCode.ALLOCATION) + @Operation(summary = "开启分账接口") + @PostMapping("/allocation") + public DaxResult allocation(@RequestBody AllocationStartParam param){ + return DaxRes.ok(allocationService.allocation(param)); + } + + @CountTime + @PaymentApi(PaymentApiCode.ALLOCATION_FINISH) + @Operation(summary = "分账完结接口") + @PostMapping("/allocationFinish") + public DaxResult allocationFinish(@RequestBody AllocationFinishParam param){ + allocationService.finish(param); + return DaxRes.ok(); + } + + + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java new file mode 100644 index 00000000..d35d0053 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java @@ -0,0 +1,29 @@ +package cn.bootx.platform.daxpay.service.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 分账状态枚举 + * @author xxm + * @since 2024/4/7 + */ +@Getter +@AllArgsConstructor +public enum AllocationStatusEnum { + + // 待分账 + WAITING("waiting", "待分账"), + PARTIAL_PROCESSING("partial_processing", "分账处理中"), + PARTIAL_SUCCESS("partial_success", "部分分账完成"), + FINISH_PROCESSING("finish_processing", "分账完结处理中"), + FINISH_SUCCESS("finish_success", "分账完成"), + PARTIAL_FAILED("partial_failed", "部分分账完成"), + FINISH_FAILED("finish_failed", "分账失败"), + CLOSED("closed", "分账关闭"), + UNKNOWN("unknown", "分账状态未知"); + + final String code; + final String name; + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index c67f84f3..2786895f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -2,9 +2,9 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; -import cn.hutool.core.util.IdUtil; import com.alipay.api.domain.AlipayTradeOrderSettleModel; import com.alipay.api.domain.OpenApiRoyaltyDetailInfoPojo; +import com.alipay.api.domain.SettleExtendParams; import com.alipay.api.response.AlipayTradeOrderSettleResponse; import com.ijpay.alipay.AliPayApi; import lombok.RequiredArgsConstructor; @@ -12,8 +12,8 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * 支付宝分账服务 @@ -25,32 +25,27 @@ import java.util.List; @RequiredArgsConstructor public class AliPayAllocationService { - private final AliPayConfigService aliPayConfigService; - /** * 发起分账 */ @SneakyThrows public void allocation(AllocationOrder allocationOrder, List orderDetails){ - - aliPayConfigService.initConfig(aliPayConfigService.getConfig()); - + // 分账主体参数 AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); - -// model.setOutRequestNo(String.valueOf(allocationOrder.getId())); -// model.setTradeNo(allocationOrder.getGatewayOrderNo()); - - model.setOutRequestNo(IdUtil.getSnowflakeNextIdStr()); - model.setTradeNo(""); -// model.setRoyaltyMode("async"); - OpenApiRoyaltyDetailInfoPojo detailInfoPojo = new OpenApiRoyaltyDetailInfoPojo(); - detailInfoPojo.setTransIn(""); - detailInfoPojo.setAmount("0.01"); - - - List royaltyParameters = Collections.singletonList(detailInfoPojo); - + model.setOutRequestNo(String.valueOf(allocationOrder.getOutReqNo())); + model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); + model.setRoyaltyMode("async"); + + // 分账子参数 + List royaltyParameters = orderDetails.stream() + .map(o -> { + OpenApiRoyaltyDetailInfoPojo infoPojo = new OpenApiRoyaltyDetailInfoPojo(); + infoPojo.setAmount(String.valueOf(o.getAmount() / 100.0)); + infoPojo.setTransIn(o.getReceiverAccount()); + return infoPojo; + }) + .collect(Collectors.toList()); model.setRoyaltyParameters(royaltyParameters); AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); @@ -60,7 +55,18 @@ public class AliPayAllocationService { /** * 分账完结 */ - public void x2(){ + @SneakyThrows + public void finish(AllocationOrder allocationOrder){ + // 分账主体参数 + AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); + model.setOutRequestNo(String.valueOf(allocationOrder.getOutReqNo())); + model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); + // 分账完结参数 + SettleExtendParams extendParams = new SettleExtendParams(); + extendParams.setRoyaltyFinish("true"); + model.setExtendParams(extendParams); + AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); + System.out.println(response); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java new file mode 100644 index 00000000..1e70b762 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -0,0 +1,106 @@ +package cn.bootx.platform.daxpay.service.core.channel.wechat.service; + +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.code.WeChatPayCode; +import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.ijpay.core.enums.SignType; +import com.ijpay.core.kit.WxPayKit; +import com.ijpay.wxpay.WxPayApi; +import com.ijpay.wxpay.model.ProfitSharingModel; +import com.ijpay.wxpay.model.ReceiverModel; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.io.ByteArrayInputStream; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 微信分账服务 + * @author xxm + * @since 2024/4/7 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class WeChatPayAllocationService { + + /** + * 发起分账 + */ + @SneakyThrows + public void allocation(AllocationOrder allocationOrder, List orderDetails, WeChatPayConfig config){ + + List list = orderDetails.stream().map(o->{ + AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(o.getReceiverType()); + return ReceiverModel.builder() + .type(receiverTypeEnum.getOutCode()) + .account(o.getReceiverAccount()) + .amount(o.getAmount()) + .description(allocationOrder.getDescription()) + .build(); + }).collect(Collectors.toList()); + + Map params = ProfitSharingModel.builder() + .mch_id(config.getWxMchId()) + .appid(config.getWxAppId()) + .nonce_str(WxPayKit.generateStr()) + .transaction_id(allocationOrder.getGatewayPayOrderNo()) + .out_order_no(WxPayKit.generateStr()) + .receivers(JSON.toJSONString(list)) + .build() + .createSign(config.getApiKeyV2(), SignType.HMACSHA256); + + byte[] fileBytes = Base64.decode(config.getP12()); + ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes); + String xmlResult = WxPayApi.multiProfitSharing(params, inputStream, config.getWxMchId()); + Map result = WxPayKit.xmlToMap(xmlResult); + this.verifyErrorMsg(result); + } + + /** + * 完成分账 + */ + public void finish(AllocationOrder allocationOrder, WeChatPayConfig config){ + Map params = ProfitSharingModel.builder() + .mch_id(config.getWxMchId()) + .appid(config.getWxAppId()) + .nonce_str(WxPayKit.generateStr()) + .transaction_id(allocationOrder.getGatewayPayOrderNo()) + .out_order_no(allocationOrder.getOutReqNo()) + .description("分账完成") + .build() + .createSign(config.getApiKeyV2(), SignType.HMACSHA256); + + byte[] fileBytes = Base64.decode(config.getP12()); + ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes); + String xmlResult = WxPayApi.profitSharingFinish(params, inputStream, config.getWxMchId()); + Map result = WxPayKit.xmlToMap(xmlResult); + this.verifyErrorMsg(result); + } + + /** + * 验证错误信息 + */ + private void verifyErrorMsg(Map result) { + String returnCode = result.get(WeChatPayCode.RETURN_CODE); + String resultCode = result.get(WeChatPayCode.RESULT_CODE); + if (!WxPayKit.codeIsOk(returnCode) || !WxPayKit.codeIsOk(resultCode)) { + String errorMsg = result.get(WeChatPayCode.ERR_CODE_DES); + if (StrUtil.isBlank(errorMsg)) { + errorMsg = result.get(WeChatPayCode.RETURN_MSG); + } + log.error("分账操作失败 {}", errorMsg); + throw new PayFailureException(errorMsg); + } + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/convert/AllocationConvert.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/convert/AllocationConvert.java new file mode 100644 index 00000000..2f6fc309 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/convert/AllocationConvert.java @@ -0,0 +1,24 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.convert; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 分账实体类转换 + * @author xxm + * @since 2024/4/7 + */ +@Mapper +public interface AllocationConvert { + AllocationConvert CONVERT = Mappers.getMapper(AllocationConvert.class); + + + AllocationOrderDto convert(AllocationOrder in); + + AllocationOrderDetailDto convert(AllocationOrderDetail in); + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java new file mode 100644 index 00000000..63526d05 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +/** + * + * @author xxm + * @since 2024/4/7 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class AllocationOrderDetailManager extends BaseManager { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailMapper.java new file mode 100644 index 00000000..cd4525a9 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.dao; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/4/7 + */ +@Mapper +public interface AllocationOrderDetailMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java new file mode 100644 index 00000000..30a064af --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java @@ -0,0 +1,27 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.dao; + +import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +/** + * + * @author xxm + * @since 2024/4/7 + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class AllocationOrderManager extends BaseManager { + + /** + * 根据分账单号查询 + */ + public Optional findByAllocationNo(String allocationNo){ + return findByField(AllocationOrder::getAllocationNo, allocationNo); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderMapper.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderMapper.java new file mode 100644 index 00000000..7fe32d94 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderMapper.java @@ -0,0 +1,14 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.dao; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * @author xxm + * @since 2024/4/7 + */ +@Mapper +public interface AllocationOrderMapper extends BaseMapper { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index 970da991..ddce8062 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -1,11 +1,20 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; +import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex; +import cn.bootx.table.modify.mysql.constants.MySqlIndexType; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + /** * 分账订单 * @author xxm @@ -14,7 +23,7 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -public class AllocationOrder extends MpBaseEntity { +public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction { /** * 支付订单ID @@ -23,16 +32,73 @@ public class AllocationOrder extends MpBaseEntity { private Long paymentId; /** - * 网关订单号 + * 网关支付订单号 + */ + @DbColumn(comment = "网关支付订单号") + private String gatewayPayOrderNo; + + /** + * 网关分账单号 + */ + @DbColumn(comment = "网关分账单号") + private String gatewayAllocationNo; + + /** + * 分账单号 */ - @DbColumn(comment = "网关订单号") - private String gatewayOrderNo; + @DbMySqlIndex(comment = "分账单号索引", type = MySqlIndexType.UNIQUE) + @DbColumn(comment = "分账单号") + private String allocationNo; + /** + * 外部请求号 + */ + @DbColumn(comment = "外部请求号") + private String outReqNo; + + /** + * 所属通道 + */ + @DbColumn(comment = "所属通道") + private String channel; + /** * 总分账金额 */ @DbColumn(comment = "总分账金额") private Integer amount; + /** + * 分账描述 + */ + @DbColumn(comment = "分账描述") + private String description; + + /** + * 状态 + */ + @DbColumn(comment = "状态") + private String status; + + /** + * 错误原因 + */ + @DbColumn(comment = "错误原因") + @TableField(updateStrategy = FieldStrategy.ALWAYS) + private String errorMsg; + + /** + * 完成时间 + */ + @DbColumn(comment = "完成时间") + private LocalDateTime finishTime; + + /** + * 转换 + */ + @Override + public AllocationOrderDto toDto() { + return AllocationConvert.CONVERT.convert(this); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java index 1a0846a8..6be22cc8 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -1,6 +1,12 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; +import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; +import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; +import cn.bootx.table.modify.annotation.DbColumn; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -13,7 +19,49 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -public class AllocationOrderDetail extends MpBaseEntity { +public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFunction { + /** 分账订单ID */ + @DbColumn(comment = "分账订单ID") + private Long orderId; + /** 接收者ID */ + @DbColumn(comment = "接收者ID") + private Long receiverId; + + /** 分账比例 */ + @DbColumn(comment = "分账比例(万分之多少)") + private Integer rate; + + /** 分账金额 */ + @DbColumn(comment = "分账金额") + private Integer amount; + + /** + * 分账接收方类型 + * @see AllocationReceiverTypeEnum + */ + @DbColumn(comment = "分账接收方类型") + private String receiverType; + + /** 接收方账号 */ + @DbColumn(comment = "接收方账号") + @SensitiveInfo + private String receiverAccount; + + /** 接收方姓名 */ + @DbColumn(comment = "接收方姓名") + private String receiverName; + + /** 状态 */ + @DbColumn(comment = "状态") + private String status; + + /** + * 转换 + */ + @Override + public AllocationOrderDetailDto toDto() { + return AllocationConvert.CONVERT.convert(this); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/OrderAndDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/OrderAndDetail.java new file mode 100644 index 00000000..bb401c35 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/OrderAndDetail.java @@ -0,0 +1,21 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 分账订单和明细 + * @author xxm + * @since 2024/4/7 + */ +@Data +@Accessors(chain = true) +public class OrderAndDetail { + + /** 分账订单 */ + private AllocationOrder order; + /** 分账订单明细 */ + private List details; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java new file mode 100644 index 00000000..b7f6fc3f --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java @@ -0,0 +1,96 @@ +package cn.bootx.platform.daxpay.service.core.order.allocation.service; + +import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.OrderAndDetail; +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; +import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; +import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 分账订单服务 + * @author xxm + * @since 2024/4/7 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationOrderService { + private final AllocationOrderManager allocationOrderManager; + private final AllocationOrderDetailManager allocationOrderDetailManager; + + /** + * 分页查询分账订单 + */ + public void page(PageParam pageParam, AllocationOrderQuery param){ + + } + + /** + * 生成分账订单 + */ + @Transactional(rollbackFor = Exception.class) + public OrderAndDetail create(AllocationStartParam param, PayOrder payOrder, int orderAmount, List receiversByGroups){ + long orderId = IdUtil.getSnowflakeNextId(); + + // 请求号不存在使用订单ID + String allocationNo = param.getAllocationNo(); + if (StrUtil.isBlank(allocationNo)){ + allocationNo = String.valueOf(orderId); + } + + // 订单明细 + List details = receiversByGroups.stream() + .map(o -> { + // 计算分账金额, 小数不分直接舍弃, 防止分账金额超过上限 + Integer rate = o.getRate(); + Integer amount = orderAmount * rate / 10000; + AllocationOrderDetail detail = new AllocationOrderDetail(); + detail.setOrderId(orderId) + .setReceiverId(o.getId()) + .setStatus(AllocationStatusEnum.WAITING.getCode()) + .setAmount(amount) + .setRate(rate) + .setReceiverType(o.getReceiverType()) + .setReceiverName(o.getReceiverName()) + .setReceiverAccount(o.getReceiverAccount()); + return detail; + }) + .collect(Collectors.toList()); + // 求分账的总额 + Integer sumAmount = details.stream() + .map(AllocationOrderDetail::getAmount) + .reduce(0, Integer::sum); + // 分账订单 + AllocationOrder allocationOrder = new AllocationOrder() + .setPaymentId(payOrder.getId()) + .setAllocationNo(allocationNo) + .setChannel(payOrder.getAsyncChannel()) + .setGatewayPayOrderNo(payOrder.getGatewayOrderNo()) + .setOutReqNo(String.valueOf(orderId)) + .setDescription(param.getDescription()) + .setStatus(AllocationStatusEnum.WAITING.getCode()) + .setAmount(sumAmount); + allocationOrder.setId(orderId); + // 保存 + allocationOrderDetailManager.saveAll(details); + allocationOrderManager.save(allocationOrder); + + return new OrderAndDetail().setOrder(allocationOrder).setDetails(details); + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java index 0a57fb3c..62e401d4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/dao/AllocationGroupManager.java @@ -12,6 +12,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; +import java.util.Optional; + /** * * @author xxm @@ -27,4 +29,21 @@ public class AllocationGroupManager extends BaseManager generator = QueryGenerator.generator(query); return page(mpPage,generator); } + + /** + * 清除默认分账组 + */ + public void clearDefault(String channel) { + lambdaUpdate() + .set(AllocationGroup::isDefaultGroup,false) + .eq(AllocationGroup::getChannel,channel) + .update(); + } + + /** + * 获取默认分账组 + */ + public Optional findDefaultGroup(String asyncChannel) { + return findByField(AllocationGroup::getChannel,asyncChannel); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java index 3fa42962..8bf28163 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/entity/AllocationGroup.java @@ -33,6 +33,9 @@ public class AllocationGroup extends MpBaseEntity implements EntityBaseFunction< @TableField(updateStrategy = FieldStrategy.NEVER) private String channel; + @DbColumn(comment = "默认分账组") + private boolean defaultGroup; + @DbColumn(comment = "总分账比例(万分之多少)") private Integer totalRate; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationFactory.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationFactory.java new file mode 100644 index 00000000..b487cf46 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationFactory.java @@ -0,0 +1,37 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.factory; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayUnsupportedMethodException; +import cn.bootx.platform.daxpay.service.func.AbsAllocationStrategy; +import cn.hutool.extra.spring.SpringUtil; +import lombok.experimental.UtilityClass; + +/** + * 分账策略工厂 + * @author xxm + * @since 2024/4/7 + */ +@UtilityClass +public class AllocationFactory { + + /** + * 根据传入的支付通道创建策略 + * @return 支付策略 + */ + public static AbsAllocationStrategy create(String channel) { + PayChannelEnum channelEnum = PayChannelEnum.findByCode(channel); + + AbsAllocationStrategy strategy; + switch (channelEnum) { + case ALI: + strategy = SpringUtil.getBean(AbsAllocationStrategy.class); + break; + case WECHAT: + strategy = SpringUtil.getBean(AbsAllocationStrategy.class); + break; + default: + throw new PayUnsupportedMethodException(); + } + return strategy; + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index b7f3ae02..b36f1c90 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -100,6 +100,19 @@ public class AllocationGroupService { groupManager.save(group); } + /** + * 设置默认分账组 + */ + @Transactional(rollbackFor = Exception.class) + public void setDefault(Long id){ + // 分账组 + AllocationGroup group = groupManager.findById(id) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + groupManager.clearDefault(group.getChannel()); + group.setDefaultGroup(true); + groupManager.updateById(group); + } + /** * 更新分账组 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationOrderSyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationOrderSyncService.java new file mode 100644 index 00000000..941f2b17 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationOrderSyncService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 分账订单同步服务 + * @author xxm + * @since 2024/4/7 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationOrderSyncService { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java index a5c769a2..adb66b9e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -1,16 +1,28 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; import cn.bootx.platform.common.core.exception.DataNotExistException; -import cn.bootx.platform.daxpay.param.pay.AllocationParam; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; +import cn.bootx.platform.daxpay.result.allocation.AllocationResult; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.OrderAndDetail; +import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayChannelOrderManager; import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderManager; +import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayChannelOrder; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.payment.allocation.dao.AllocationGroupManager; import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.AllocationGroup; +import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationFactory; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; +import cn.bootx.platform.daxpay.service.func.AbsAllocationStrategy; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; @@ -27,15 +39,21 @@ public class AllocationService { private final PayOrderManager payOrderManager; + private final PayChannelOrderManager payChannelOrderManager; + private final AllocationGroupManager groupManager; + private final AllocationOrderManager allocationOrderManager; + private final AllocationGroupService allocationGroupService; + private final AllocationOrderService allocationOrderService; + + /** - * 开启分账 + * 开启分账, 使用分账组进行分账 */ - @Transactional(rollbackFor = Exception.class) - public void allocation(AllocationParam param) { + public AllocationResult allocation(AllocationStartParam param) { // 查询支付单 PayOrder payOrder = null; if (Objects.nonNull(param.getPaymentId())){ @@ -46,10 +64,84 @@ public class AllocationService { payOrder = payOrderManager.findByBusinessNo(param.getBusinessNo()) .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); } - AllocationGroup allocationGroup = groupManager.findById(param.getAllocationGroupId()) - .orElseThrow(() -> new DataNotExistException("未查询到分账组")); - List receiversByGroups = allocationGroupService.findReceiversByGroups(param.getAllocationGroupId()); + // 判断订单是否可以分账 + if (!payOrder.isAllocation()){ + throw new PayFailureException("该订单不允许分账"); + } + + // 查询待分账的通道支付订单 + PayChannelOrder channelOrder = payChannelOrderManager.findByAsyncChannel(payOrder.getId()) + .orElseThrow(() -> new DataNotExistException("未查询到支付通道订单")); + + // 查询分账组 未传输使用默认该通道默认分账组 + AllocationGroup allocationGroup; + if (Objects.nonNull(param.getAllocationGroupId())) { + allocationGroup = groupManager.findById(param.getAllocationGroupId()).orElseThrow(() -> new DataNotExistException("未查询到分账组")); + } else { + allocationGroup = groupManager.findDefaultGroup(payOrder.getAsyncChannel()).orElseThrow(() -> new DataNotExistException("未查询到默认分账组")); + } + List receiversByGroups = allocationGroupService.findReceiversByGroups(allocationGroup.getId()); + + // 创建分账单和明细并保存, 使用事务 + OrderAndDetail orderAndDetail = allocationOrderService.create(param ,payOrder, channelOrder.getAmount(), receiversByGroups); + + // 创建分账策略并初始化 + AbsAllocationStrategy allocationStrategy = AllocationFactory.create(payOrder.getAsyncChannel()); + AllocationOrder order = orderAndDetail.getOrder(); + List details = orderAndDetail.getDetails(); + allocationStrategy.initParam(order, details); + + // 分账预处理 + allocationStrategy.doBeforeHandler(); + try { + // 分账处理 + allocationStrategy.allocation(); + // 执行中 + order.setStatus(AllocationStatusEnum.PARTIAL_PROCESSING.getCode()) + .setErrorMsg(null); + } catch (Exception e) { + // 失败 + order.setStatus(AllocationStatusEnum.PARTIAL_FAILED.getCode()) + .setErrorMsg(e.getMessage()); + } + allocationOrderManager.updateById(order); + return new AllocationResult().setOrderId(order.getId()) + .setAllocationNo(order.getAllocationNo()) + .setStatus(order.getStatus()); } + /** + * 分账完结 + */ + public void finish(AllocationFinishParam param) { + AllocationOrder allocationOrder; + if (Objects.nonNull(param.getOrderId())){ + allocationOrder = allocationOrderManager.findById(param.getOrderId()) + .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); + } else { + allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) + .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); + } + + // 创建分账策略并初始化 + AbsAllocationStrategy allocationStrategy = AllocationFactory.create(allocationOrder.getChannel()); + allocationStrategy.initParam(allocationOrder, null); + + // 分账完结预处理 + allocationStrategy.doBeforeHandler(); + try { + // 分账处理 + allocationStrategy.allocation(); + // 执行中 + allocationOrder.setStatus(AllocationStatusEnum.FINISH_PROCESSING.getCode()) + .setErrorMsg(null); + } catch (Exception e) { + // 失败 + allocationOrder.setStatus(AllocationStatusEnum.FINISH_FAILED.getCode()) + .setErrorMsg(e.getMessage()); + } + + allocationOrderManager.updateById(allocationOrder); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java index 0a2a08db..16859021 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java @@ -1,10 +1,18 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.allocation; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationService; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationStrategy; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import java.util.Objects; + import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; /** @@ -16,5 +24,50 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROT @Service @Scope(SCOPE_PROTOTYPE) @RequiredArgsConstructor -public class AliPayAllocationStrategy { +public class AliPayAllocationStrategy extends AbsAllocationStrategy { + + private final AliPayAllocationService aliPayAllocationService; + + private final AliPayConfigService aliPayConfigService; + + private AliPayConfig aliPayConfig;; + + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.ALI; + } + + /** + * 操作前处理, 校验和初始化支付配置 + */ + @Override + public void doBeforeHandler() { + this.aliPayConfig = aliPayConfigService.getConfig(); + // 判断是否支持分账 + if (Objects.equals(aliPayConfig.getAllocation(),false)){ + throw new PayFailureException("微信支付配置不支持分账"); + } + aliPayConfigService.initConfig(this.aliPayConfig); + } + + /** + * 分账操作 + */ + @Override + public void allocation() { + aliPayAllocationService.allocation(this.getAllocationOrder(), this.getAllocationOrderDetails()); + } + + /** + * 分账完结 + */ + @Override + public void finish() { + aliPayAllocationService.finish(this.getAllocationOrder()); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java index 9dd70873..64584330 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java @@ -1,10 +1,18 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.strategy.allocation; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayAllocationService; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationStrategy; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import java.util.Objects; + import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; /** @@ -16,5 +24,48 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROT @Service @Scope(SCOPE_PROTOTYPE) @RequiredArgsConstructor -public class WeChatPayAllocationStrategy { +public class WeChatPayAllocationStrategy extends AbsAllocationStrategy { + + private final WeChatPayAllocationService weChatPayAllocationService; + + private final WeChatPayConfigService weChatPayConfigService; + + private WeChatPayConfig weChatPayConfig; + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.WECHAT; + } + + /** + * 操作前处理, 校验和初始化支付配置 + */ + @Override + public void doBeforeHandler() { + weChatPayConfig = weChatPayConfigService.getAndCheckConfig(); + // 判断是否支持分账 + if (Objects.equals(weChatPayConfig.getAllocation(),false)){ + throw new PayFailureException("微信支付配置不支持分账"); + } + } + + /** + * 分账操作 + */ + @Override + public void allocation() { + weChatPayAllocationService.allocation(getAllocationOrder(), getAllocationOrderDetails(), weChatPayConfig); + } + + /** + * 分账完结 + */ + @Override + public void finish() { + weChatPayAllocationService.finish(getAllocationOrder(), weChatPayConfig); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java index b33fce0f..42276455 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.dto.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.table.modify.annotation.DbColumn; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -23,6 +24,9 @@ public class AllocationGroupDto extends BaseDto { @Schema(description = "通道") private String channel; + @DbColumn(comment = "默认分账组") + private Boolean defaultGroup; + @Schema(description = "总分账比例(万分之多少)") private Integer totalRate; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java new file mode 100644 index 00000000..1574ab73 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java @@ -0,0 +1,19 @@ +package cn.bootx.platform.daxpay.service.dto.order.allocation; + +import cn.bootx.platform.common.core.rest.dto.BaseDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账订单详情 + * @author xxm + * @since 2024/4/7 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "") +public class AllocationOrderDetailDto extends BaseDto { +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java new file mode 100644 index 00000000..fdde5681 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java @@ -0,0 +1,21 @@ +package cn.bootx.platform.daxpay.service.dto.order.allocation; + +import cn.bootx.platform.common.core.rest.dto.BaseDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 分账订单 + * @author xxm + * @since 2024/4/7 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@Schema(title = "分账订单") +public class AllocationOrderDto extends BaseDto { + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java index 94ee4260..463f51a3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationReceiverStrategy.java @@ -6,7 +6,7 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; /** - * 分账接收方管理抽象策略 + * 分账抽象策略 * @author xxm * @since 2024/4/1 */ @@ -17,10 +17,13 @@ public abstract class AbsAllocationReceiverStrategy implements PayStrategy{ private AllocationReceiver allocationReceiver; + /** + * 操作前校验 + */ public abstract boolean validation(); /** - * 支付前处理, 校验和初始化支付配置 + * 操作前处理, 校验和初始化支付配置 */ public abstract void doBeforeHandler(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java new file mode 100644 index 00000000..911e459d --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java @@ -0,0 +1,47 @@ +package cn.bootx.platform.daxpay.service.func; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 分账接收方管理抽象策略 + * @author xxm + * @since 2024/4/1 + */ +@Slf4j +@Getter +@Setter +public abstract class AbsAllocationStrategy implements PayStrategy{ + + private AllocationOrder allocationOrder; + + private List allocationOrderDetails; + + /** + * 初始化参数 + */ + public void initParam(AllocationOrder allocationOrder, List allocationOrderDetails) { + this.allocationOrder = allocationOrder; + this.allocationOrderDetails = allocationOrderDetails; + } + + /** + * 操作前处理, 校验和初始化支付配置 + */ + public abstract void doBeforeHandler(); + + /** + * 分账操作 + */ + public abstract void allocation(); + + /** + * 分账完结 + */ + public abstract void finish(); +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundRepairStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundRepairStrategy.java index bfddf279..4e02ee53 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundRepairStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundRepairStrategy.java @@ -11,7 +11,7 @@ import lombok.Getter; import java.util.Objects; /** - * 支付退款修复策略, 只要异步支付订单的退款才会有修复选项 + * 支付退款修复策略, 只有异步支付订单的退款才有修复选项 * @author xxm * @since 2024/1/25 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundStrategy.java index d2592be7..210d357b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsRefundStrategy.java @@ -14,7 +14,7 @@ import lombok.Setter; import java.time.LocalDateTime; /** - * 抽象支付退款策略基类 + * 抽象支付退款策略 * * @author xxm * @since 2020/12/11 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java new file mode 100644 index 00000000..60dfd8d3 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java @@ -0,0 +1,18 @@ +package cn.bootx.platform.daxpay.service.param.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账订单查询参数 + * @author xxm + * @since 2024/4/7 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账订单查询参数") +public class AllocationOrderQuery { + + +} -- Gitee From d1010c25720e4b9633730ad19ef79b4e57f8be50 Mon Sep 17 00:00:00 2001 From: bootx Date: Sun, 7 Apr 2024 23:14:35 +0800 Subject: [PATCH 28/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3=E5=92=8C=E5=AD=97=E6=AE=B5=E5=BE=AE?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 24 ++++-- .../allocation/AllocationOrderController.java | 79 +++++++++++++++++++ .../AllocationReceiverController.java | 1 + .../service/WeChatPayAllocationService.java | 8 +- .../dao/AllocationOrderDetailManager.java | 9 +++ .../dao/AllocationOrderManager.java | 15 ++++ .../allocation/entity/AllocationOrder.java | 15 ++++ .../entity/AllocationOrderDetail.java | 8 +- .../service/AllocationOrderService.java | 48 ++++++++++- .../allocation/service/AllocationService.java | 41 ++++++---- .../allocation/AllocationOrderDetailDto.java | 41 +++++++++- .../order/allocation/AllocationOrderDto.java | 77 ++++++++++++++++++ 12 files changed, 339 insertions(+), 27 deletions(-) create mode 100644 daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java diff --git a/_doc/Task.md b/_doc/Task.md index b0c09be3..9a562ce7 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,5 +1,5 @@ +## 单商户 2.0.5: 分账初版 -- [ ] 资金流水优化 - [x] 支付通道配置是否支持分账 - [x] 分账接收方管理 - [x] 管理 @@ -7,25 +7,28 @@ - [x] 分账组管理 - [x] 管理 - [x] 绑定 + - [ ] 默认分账组 - [ ] 分账订单管理 - [x] 订单创建 - [ ] 发起分账 - [ ] 分账完结 - [ ] 分账处理 - - [ ] 发起分账 - - [ ] 分账回调处理 + - [x] 发起分账 - [ ] 分账情况查询, 分账结果/剩余可分账金额 - [x] 修复创建支付订单报错时, 订单保存数据不完整 -2.0.6: 分账完善 +2.0.6: 分账完善和功能优化 +- [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ +- [ ] 资金流水优化 - [ ] 支持分账组分账和自己传接收方进行分账 - [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 - [ ] 分账接收方管理提供接口调用 +- [ ] 分账回调处理 - [ ] 分账组管理提供接口调用 - [ ] 对账回退及退款 +- [ ] 分账通知 2.0.x 版本内容 -- [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ - [ ] 统计报表功能 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 @@ -54,3 +57,14 @@ - [ ] 增加验签调试等功能的页面 - [ ] 请求IP参数增加正则校验 - [ ] 增加账户金额表, 记录每天每个通道的账户金额, 并且提供查询接口 + +## 多商户多应用版本 +2.1.0: +- [ ] 商户管理 +- [ ] 应用管理 +- [ ] 支付配置适配 +- [ ] 支付能力适配 +- + +**任务池** + diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java new file mode 100644 index 00000000..83d374a7 --- /dev/null +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -0,0 +1,79 @@ +package cn.bootx.platform.daxpay.admin.controller.allocation; + +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.Res; +import cn.bootx.platform.common.core.rest.ResResult; +import cn.bootx.platform.common.core.rest.dto.LabelValue; +import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; +import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; +import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 对账订单控制器 + * @author xxm + * @since 2024/4/7 + */ +@Tag(name = "对账订单控制器") +@RestController +@RequestMapping("/allocation/order") +@RequiredArgsConstructor +public class AllocationOrderController { + + private final AllocationOrderService allocationOrderService; + + private final AllocationService allocationService; + + @Operation(summary = "分页") + @GetMapping("/page") + public ResResult> page(PageParam pageParam, AllocationOrderQuery param){ + return Res.ok(allocationOrderService.page(pageParam,param)); + } + + @Operation(summary = "分账明细列表") + @GetMapping("/detail/findAll") + public ResResult> findDetailsByOrderId(Long orderId){ + return Res.ok(allocationOrderService.findDetailsByOrderId(orderId)); + } + + @Operation(summary = "查询详情") + @GetMapping("/findById") + public ResResult findById(Long id){ + return Res.ok(allocationOrderService.findById(id)); + } + + + @Operation(summary = "查询明细详情") + @GetMapping("/detail/findById") + public ResResult findDetailById(Long id){ + return Res.ok(allocationOrderService.findDetailById(id)); + } + + @Operation(summary = "获取可以分账的通道") + @GetMapping("/findChannels") + public ResResult> findChannels(){ + return Res.ok(allocationOrderService.findChannels()); + } + + @Operation(summary = "发起分账") + @PostMapping("/start") + public ResResult start(Long paymentId){ + AllocationStartParam param = new AllocationStartParam(); + param.setPaymentId(paymentId); + allocationService.allocation(param); + return Res.ok(); + } + +} diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java index 787124b8..282ed6a5 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -46,6 +46,7 @@ public class AllocationReceiverController { public ResResult> findChannels(){ return Res.ok(receiverService.findChannels()); } + @Operation(summary = "根据通道获取分账接收方类型") @GetMapping("/findReceiverTypeByChannel") public ResResult> findReceiverTypeByChannel(String channel){ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 1e70b762..89d55509 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -39,14 +39,18 @@ public class WeChatPayAllocationService { */ @SneakyThrows public void allocation(AllocationOrder allocationOrder, List orderDetails, WeChatPayConfig config){ - + String description = allocationOrder.getDescription(); + if (StrUtil.isBlank(description)){ + description = "分账"; + } + String finalDescription = description; List list = orderDetails.stream().map(o->{ AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(o.getReceiverType()); return ReceiverModel.builder() .type(receiverTypeEnum.getOutCode()) .account(o.getReceiverAccount()) .amount(o.getAmount()) - .description(allocationOrder.getDescription()) + .description(finalDescription) .build(); }).collect(Collectors.toList()); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java index 63526d05..27d435a0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java @@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; +import java.util.List; + /** * * @author xxm @@ -15,4 +17,11 @@ import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor public class AllocationOrderDetailManager extends BaseManager { + + /** + * 根据订单ID查询 + */ + public List findAllByOrderId(Long orderId) { + return findAllByField(AllocationOrderDetail::getOrderId, orderId); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java index 30a064af..a60ad997 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderManager.java @@ -1,7 +1,13 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.dao; +import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; @@ -24,4 +30,13 @@ public class AllocationOrderManager extends BaseManager findByAllocationNo(String allocationNo){ return findByField(AllocationOrder::getAllocationNo, allocationNo); } + + /** + * 分页 + */ + public Page page(PageParam pageParam, AllocationOrderQuery param){ + Page mpPage = MpUtil.getMpPage(pageParam, AllocationOrder.class); + QueryWrapper generator = QueryGenerator.generator(param); + return this.page(mpPage, generator); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index ddce8062..3d0845db 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -2,13 +2,18 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbTable; import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex; import cn.bootx.table.modify.mysql.constants.MySqlIndexType; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -23,6 +28,8 @@ import java.time.LocalDateTime; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) +@DbTable(comment = "分账订单") +@TableName("pay_allocation_order") public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction { /** @@ -31,6 +38,12 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< @DbColumn(comment = "支付订单ID") private Long paymentId; + /** + * 支付订单标题 + */ + @Schema(description = "支付订单标题") + private String title; + /** * 网关支付订单号 */ @@ -59,6 +72,7 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< /** * 所属通道 + * @see PayChannelEnum */ @DbColumn(comment = "所属通道") private String channel; @@ -77,6 +91,7 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< /** * 状态 + * @see AllocationStatusEnum */ @DbColumn(comment = "状态") private String status; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java index 6be22cc8..01f3b1fc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -1,12 +1,14 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; +import cn.bootx.platform.common.core.annotation.EncryptionField; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; -import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; import cn.bootx.table.modify.annotation.DbColumn; +import cn.bootx.table.modify.annotation.DbTable; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -19,6 +21,8 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) +@DbTable(comment = "分账订单明细") +@TableName("pay_allocation_order_detail") public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFunction { /** 分账订单ID */ @@ -46,7 +50,7 @@ public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFun /** 接收方账号 */ @DbColumn(comment = "接收方账号") - @SensitiveInfo + @EncryptionField private String receiverAccount; /** 接收方姓名 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java index b7f6fc3f..77fc973a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java @@ -1,6 +1,12 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.service; +import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.common.core.rest.PageResult; +import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.common.core.util.ResultConvertUtil; +import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; @@ -10,6 +16,8 @@ import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationO import cn.bootx.platform.daxpay.service.core.order.allocation.entity.OrderAndDetail; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; +import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; @@ -18,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -33,13 +42,47 @@ public class AllocationOrderService { private final AllocationOrderManager allocationOrderManager; private final AllocationOrderDetailManager allocationOrderDetailManager; + + /** + * 获取可以分账的通道 + */ + public List findChannels(){ + return Arrays.asList( + new LabelValue(PayChannelEnum.ALI.getName(),PayChannelEnum.ALI.getCode()), + new LabelValue(PayChannelEnum.WECHAT.getName(),PayChannelEnum.WECHAT.getCode()) + ); + } + + /** + * 分页查询 + */ + public PageResult page(PageParam pageParam, AllocationOrderQuery param){ + return MpUtil.convert2DtoPageResult(allocationOrderManager.page(pageParam, param)); + } + + /** - * 分页查询分账订单 + * 查询详情 */ - public void page(PageParam pageParam, AllocationOrderQuery param){ + public AllocationOrderDto findById(Long id) { + return allocationOrderManager.findById(id).map(AllocationOrder::toDto).orElseThrow(() -> new DataNotExistException("分账订单不存在")); + } + /** + * 查询订单明细列表 + */ + public List findDetailsByOrderId(Long orderId){ + return ResultConvertUtil.dtoListConvert(allocationOrderDetailManager.findAllByOrderId(orderId)); } + /** + * 查询订单明细详情 + */ + public AllocationOrderDetailDto findDetailById(Long id){ + return allocationOrderDetailManager.findById(id).map(AllocationOrderDetail::toDto).orElseThrow(() -> new DataNotExistException("分账订单明细不存在")); + } + + /** * 生成分账订单 */ @@ -78,6 +121,7 @@ public class AllocationOrderService { // 分账订单 AllocationOrder allocationOrder = new AllocationOrder() .setPaymentId(payOrder.getId()) + .setTitle(payOrder.getTitle()) .setAllocationNo(allocationNo) .setChannel(payOrder.getAsyncChannel()) .setGatewayPayOrderNo(payOrder.getGatewayOrderNo()) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java index adb66b9e..bcff01a2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -20,6 +20,7 @@ import cn.bootx.platform.daxpay.service.core.payment.allocation.entity.Allocatio import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationFactory; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; import cn.bootx.platform.daxpay.service.func.AbsAllocationStrategy; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -49,25 +50,12 @@ public class AllocationService { private final AllocationOrderService allocationOrderService; - /** * 开启分账, 使用分账组进行分账 */ public AllocationResult allocation(AllocationStartParam param) { - // 查询支付单 - PayOrder payOrder = null; - if (Objects.nonNull(param.getPaymentId())){ - payOrder = payOrderManager.findById(param.getPaymentId()) - .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); - } - if (Objects.isNull(payOrder)){ - payOrder = payOrderManager.findByBusinessNo(param.getBusinessNo()) - .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); - } - // 判断订单是否可以分账 - if (!payOrder.isAllocation()){ - throw new PayFailureException("该订单不允许分账"); - } + + PayOrder payOrder = this.getAndCheckPayOrder(param); // 查询待分账的通道支付订单 PayChannelOrder channelOrder = payChannelOrderManager.findByAsyncChannel(payOrder.getId()) @@ -144,4 +132,27 @@ public class AllocationService { allocationOrderManager.updateById(allocationOrder); } + + /** + * 获取并检查支付订单 + */ + private PayOrder getAndCheckPayOrder(AllocationStartParam param) { + // 查询支付单 + PayOrder payOrder = null; + if (Objects.nonNull(param.getPaymentId())){ + payOrder = payOrderManager.findById(param.getPaymentId()) + .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); + } + if (StrUtil.isNotBlank(param.getBusinessNo())){ + payOrder = payOrderManager.findByBusinessNo(param.getBusinessNo()) + .orElseThrow(() -> new DataNotExistException("未查询到支付订单")); + } + // 判断订单是否可以分账 + if (!payOrder.isAllocation()){ + throw new PayFailureException("该订单不允许分账"); + } + return payOrder; + } + + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java index 1574ab73..a6484937 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java @@ -1,6 +1,8 @@ package cn.bootx.platform.daxpay.service.dto.order.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -14,6 +16,43 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -@Schema(title = "") +@Schema(title = "分账订单详情") public class AllocationOrderDetailDto extends BaseDto { + + + /** 分账订单ID */ + @Schema(description = "分账订单ID") + private Long orderId; + + /** 接收者ID */ + @Schema(description = "接收者ID") + private Long receiverId; + + /** 分账比例 */ + @Schema(description = "分账比例(万分之多少)") + private Integer rate; + + /** 分账金额 */ + @Schema(description = "分账金额") + private Integer amount; + + /** + * 分账接收方类型 + * @see AllocationReceiverTypeEnum + */ + @Schema(description = "分账接收方类型") + private String receiverType; + + /** 接收方账号 */ + @Schema(description = "接收方账号") + @SensitiveInfo + private String receiverAccount; + + /** 接收方姓名 */ + @Schema(description = "接收方姓名") + private String receiverName; + + /** 状态 */ + @Schema(description = "状态") + private String status; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java index fdde5681..d0d08caf 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java @@ -1,11 +1,15 @@ package cn.bootx.platform.daxpay.service.dto.order.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + /** * 分账订单 * @author xxm @@ -16,6 +20,79 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @Schema(title = "分账订单") public class AllocationOrderDto extends BaseDto { + /** + * 支付订单ID + */ + @Schema(description = "支付订单ID") + private Long paymentId; + + /** + * 支付订单标题 + */ + @Schema(description = "支付订单标题") + private String title; + + /** + * 网关支付订单号 + */ + @Schema(description = "网关支付订单号") + private String gatewayPayOrderNo; + + /** + * 网关分账单号 + */ + @Schema(description = "网关分账单号") + private String gatewayAllocationNo; + + /** + * 分账单号 + */ + @Schema(description = "分账单号") + private String allocationNo; + + + /** + * 外部请求号 + */ + @Schema(description = "外部请求号") + private String outReqNo; + + /** + * 所属通道 + */ + @Schema(description = "所属通道") + private String channel; + + /** + * 总分账金额 + */ + @Schema(description = "总分账金额") + private Integer amount; + + /** + * 分账描述 + */ + @Schema(description = "分账描述") + private String description; + + /** + * 状态 + * @see cn.bootx.platform.daxpay.service.code.AllocationStatusEnum + */ + @Schema(description = "状态") + private String status; + + /** + * 错误原因 + */ + @Schema(description = "错误原因") + @TableField(updateStrategy = FieldStrategy.ALWAYS) + private String errorMsg; + /** + * 完成时间 + */ + @Schema(description = "完成时间") + private LocalDateTime finishTime; } -- Gitee From ccbc09cb84e4e24340f8265bf885c7f2f8320c0d Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 8 Apr 2024 10:21:15 +0800 Subject: [PATCH 29/45] =?UTF-8?q?feat=20=E9=BB=98=E8=AE=A4=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E7=BB=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 2 +- .../allocation/AllocationGroupController.java | 14 ++++++++++++++ .../allocation/service/AllocationGroupService.java | 13 ++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 9a562ce7..8bf5e492 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -7,7 +7,7 @@ - [x] 分账组管理 - [x] 管理 - [x] 绑定 - - [ ] 默认分账组 + - [x] 默认分账组 - [ ] 分账订单管理 - [x] 订单创建 - [ ] 发起分账 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java index 30c05e8f..cba937c5 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationGroupController.java @@ -98,4 +98,18 @@ public class AllocationGroupController { return Res.ok(); } + @Operation(summary = "设置默认分账组") + @PostMapping("/setDefault") + public ResResult setDefault(Long id){ + allocationGroupService.setUpDefault(id); + return Res.ok(); + } + + @Operation(summary = "清除默认分账组") + @PostMapping("/clearDefault") + public ResResult clearDefault(Long id){ + allocationGroupService.clearDefault(id); + return Res.ok(); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java index b36f1c90..03d9b688 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationGroupService.java @@ -104,7 +104,7 @@ public class AllocationGroupService { * 设置默认分账组 */ @Transactional(rollbackFor = Exception.class) - public void setDefault(Long id){ + public void setUpDefault(Long id){ // 分账组 AllocationGroup group = groupManager.findById(id) .orElseThrow(() -> new DataNotExistException("未找到分账组")); @@ -113,6 +113,17 @@ public class AllocationGroupService { groupManager.updateById(group); } + /** + * 清除默认分账组 + */ + @Transactional(rollbackFor = Exception.class) + public void clearDefault(Long id){ + AllocationGroup group = groupManager.findById(id) + .orElseThrow(() -> new DataNotExistException("未找到分账组")); + group.setDefaultGroup(false); + groupManager.updateById(group); + } + /** * 更新分账组 */ -- Gitee From 979b94e3de85a85cf82510abcfebb29f8782b11d Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 8 Apr 2024 17:33:40 +0800 Subject: [PATCH 30/45] =?UTF-8?q?feat=20=E8=AE=A2=E5=8D=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E8=B4=A6=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\205\263\347\263\273\350\241\250.puml" | 58 +++++++++++++++++++ ...\347\212\266\346\200\201\345\233\276.puml" | 19 ++++++ ...\345\205\263\347\263\273\350\241\250.puml" | 45 ++++++++++++++ ...\347\212\266\346\200\201\345\233\276.puml" | 13 +++++ ...\346\227\266\345\272\217\345\233\276.puml" | 0 ...\350\265\267\346\224\257\344\273\230.puml" | 0 ...\346\254\241\346\224\257\344\273\230.puml" | 0 ...\346\265\201\347\250\213\345\233\276.puml" | 11 ++++ ...\346\224\257\344\273\230\345\256\235.puml" | 0 ...\351\203\250\351\200\200\346\254\276.puml" | 0 .../daxpay/sdk/payment/PayAllocationTest.java | 2 +- .../allocation/AllocationOrderController.java | 13 +---- .../controller/order/PayOrderController.java | 12 ++++ .../service/AliPayAllocationService.java | 4 +- .../service/WeChatPayAllocationService.java | 2 +- .../dao/AllocationOrderDetailManager.java | 2 +- .../allocation/entity/AllocationOrder.java | 12 ++-- .../entity/AllocationOrderDetail.java | 2 +- .../service/AllocationOrderService.java | 18 ++++-- .../core/order/pay/builder/PayBuilder.java | 1 + .../core/order/pay/entity/PayOrder.java | 8 +++ .../allocation/factory/AllocationFactory.java | 6 +- .../allocation/service/AllocationService.java | 10 +++- .../core/payment/pay/service/PayService.java | 9 +++ .../dto/allocation/AllocationGroupDto.java | 4 +- .../dto/allocation/AllocationReceiverDto.java | 4 +- .../allocation/AllocationOrderDetailDto.java | 2 +- .../order/allocation/AllocationOrderDto.java | 14 ++--- .../service/dto/order/pay/PayOrderDto.java | 8 +++ 29 files changed, 233 insertions(+), 46 deletions(-) create mode 100644 "_doc/plantUML/order/\345\220\204\347\261\273\350\256\242\345\215\225\345\205\263\347\263\273\350\241\250.puml" create mode 100644 "_doc/plantUML/order/\346\224\257\344\273\230\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" create mode 100644 "_doc/plantUML/order/\346\224\257\344\273\230\350\256\260\345\275\225\345\205\263\347\263\273\350\241\250.puml" create mode 100644 "_doc/plantUML/order/\351\200\200\346\254\276\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" rename "_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" => "_doc/plantUML/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" (100%) rename "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" => "_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" (100%) rename "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" => "_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" (100%) create mode 100644 "_doc/plantUML/pay/\346\224\257\344\273\230\346\246\202\350\247\210\346\265\201\347\250\213\345\233\276.puml" rename "_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" => "_doc/plantUML/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" (100%) rename "_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" => "_doc/plantUML/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" (100%) diff --git "a/_doc/plantUML/order/\345\220\204\347\261\273\350\256\242\345\215\225\345\205\263\347\263\273\350\241\250.puml" "b/_doc/plantUML/order/\345\220\204\347\261\273\350\256\242\345\215\225\345\205\263\347\263\273\350\241\250.puml" new file mode 100644 index 00000000..d58eae8a --- /dev/null +++ "b/_doc/plantUML/order/\345\220\204\347\261\273\350\256\242\345\215\225\345\205\263\347\263\273\350\241\250.puml" @@ -0,0 +1,58 @@ +@startuml + +map PayOrder { + 名称 => 支付订单 + id => 主键 +} +map PayChannelOrder { + 名称 => 通道支付订单 + paymentId => 支付id +} +map PayOrderExtra { + 名称 => 支付订单扩展 + id => 主键 +} + +map RefundOrder { + 名称 => 退款订单 + id => 主键 + paymentId => 支付id +} + +map RefundOrderExtra { + 名称 => 退款订单扩展 + id => 主键 +} + +map RefundChannelOrder { + 名称 => 通道退款订单 + refundId => 退款id + payChannelId => 通道支付订单id +} + +map AllocationOrder { + 名称 => 分账订单 + paymentId => 支付id +} + +map AllocationOrderDetail { + 名称 => 分账订单明细 + allocationId => 分账id +} + +'支付订单关联 +PayOrder::id <-- PayOrderExtra::id: 一对一关联 +PayOrder::id <-- PayChannelOrder::paymentId: 多对一关联 + +'退款订单 +RefundOrder::id <-- RefundOrderExtra::id: 一对一关联 +RefundOrder::id <-- RefundChannelOrder::refundId: 多对一关联 +RefundOrder::paymentId <-- PayOrder::id: 多对一关联 +RefundChannelOrder::payChannelId --> PayChannelOrder::id: 多对一关联 + +'分账订单 +AllocationOrder::paymentId --> PayOrder::id: 多对一关联 +AllocationOrder::id --> AllocationOrderDetail::allocationId: 多对一关联 + + +@enduml diff --git "a/_doc/plantUML/order/\346\224\257\344\273\230\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" "b/_doc/plantUML/order/\346\224\257\344\273\230\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" new file mode 100644 index 00000000..d49ffb71 --- /dev/null +++ "b/_doc/plantUML/order/\346\224\257\344\273\230\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" @@ -0,0 +1,19 @@ +@startuml + +progress : 支付中 +success : 成功 +close : 支付关闭 +refunding : 退款中 +partial_refund : 部分退款 +refunded : 全部退款 +fail : 失败 + +[*] --> progress +progress --> success +progress --> close +progress --> fail +success --> refunding +refunding --> partial_refund +refunding --> refunded + +@enduml diff --git "a/_doc/plantUML/order/\346\224\257\344\273\230\350\256\260\345\275\225\345\205\263\347\263\273\350\241\250.puml" "b/_doc/plantUML/order/\346\224\257\344\273\230\350\256\260\345\275\225\345\205\263\347\263\273\350\241\250.puml" new file mode 100644 index 00000000..d8942ff4 --- /dev/null +++ "b/_doc/plantUML/order/\346\224\257\344\273\230\350\256\260\345\275\225\345\205\263\347\263\273\350\241\250.puml" @@ -0,0 +1,45 @@ +@startuml + +object PayOrder +object RefundOrder + +map CallbackRecord{ + 名称 => 回调记录 + orderId => 订单Id +} + +map CloseRecord{ + 名称 => 支付订单关闭记录 + paymentId => 支付id +} + +map RepairRecord{ + 名称 => 修复记录 + orderId => 订单Id(支付/退款) + repairNo => 修复号(不唯一) +} + +map SyncRecord{ + 名称 => 同步记录 + orderId => 订单Id(支付/退款) + repairOrderNo => 修复号 +} + + +'回调记录 +CallbackRecord::orderId --> PayOrder::id: 多对一关联 +CallbackRecord::orderId --> RefundOrder::id: 多对一关联 + +'支付订单关闭记录 +CloseRecord::paymentId --> PayOrder::id: 一对一关联 + +'修复记录 +RepairRecord::orderId --> PayOrder::id: 多对一关联 +RepairRecord::orderId --> RefundOrder::id: 多对一关联 + +'同步记录 +SyncRecord::orderId --> PayOrder::id: 多对一关联 +SyncRecord::orderId --> RefundOrder::id: 多对一关联 +SyncRecord::repairNo --> RepairRecord::repairNo: 一对一关联 + +@enduml diff --git "a/_doc/plantUML/order/\351\200\200\346\254\276\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" "b/_doc/plantUML/order/\351\200\200\346\254\276\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" new file mode 100644 index 00000000..78c11bb4 --- /dev/null +++ "b/_doc/plantUML/order/\351\200\200\346\254\276\350\256\242\345\215\225\347\212\266\346\200\201\345\233\276.puml" @@ -0,0 +1,13 @@ +@startuml + +progress : 退款中 +success : 成功 +close : 关闭 +fail : 失败 + +[*] --> progress +progress --> success +progress --> close +progress --> fail + +@enduml diff --git "a/_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" "b/_doc/plantUML/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" similarity index 100% rename from "_doc/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" rename to "_doc/plantUML/pay/\346\224\257\344\273\230\344\270\232\345\212\241\346\227\266\345\272\217\345\233\276.puml" diff --git "a/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" "b/_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" similarity index 100% rename from "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" rename to "_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\207\215\345\244\215\350\260\203\350\265\267\346\224\257\344\273\230.puml" diff --git "a/_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" "b/_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" similarity index 100% rename from "_doc/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" rename to "_doc/plantUML/pay/\346\224\257\344\273\230\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\351\246\226\346\254\241\346\224\257\344\273\230.puml" diff --git "a/_doc/plantUML/pay/\346\224\257\344\273\230\346\246\202\350\247\210\346\265\201\347\250\213\345\233\276.puml" "b/_doc/plantUML/pay/\346\224\257\344\273\230\346\246\202\350\247\210\346\265\201\347\250\213\345\233\276.puml" new file mode 100644 index 00000000..d315d7a2 --- /dev/null +++ "b/_doc/plantUML/pay/\346\224\257\344\273\230\346\246\202\350\247\210\346\265\201\347\250\213\345\233\276.puml" @@ -0,0 +1,11 @@ +@startuml +'https://plantuml.com/activity-diagram-beta + +start +:发起支付; +:基础参数校验; +switch (订单类型?) + +stop + +@enduml diff --git "a/_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" "b/_doc/plantUML/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" similarity index 100% rename from "_doc/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" rename to "_doc/plantUML/reconcile/\345\257\271\350\264\246\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\346\224\257\344\273\230\345\256\235.puml" diff --git "a/_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" "b/_doc/plantUML/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" similarity index 100% rename from "_doc/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" rename to "_doc/plantUML/refund/\351\200\200\346\254\276\344\273\243\347\240\201\346\227\266\345\272\217\345\233\276-\345\205\250\351\203\250\351\200\200\346\254\276.puml" diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java index dc7be18b..52cedd14 100644 --- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java @@ -40,7 +40,7 @@ public class PayAllocationTest { param.setBusinessNo("P"+ RandomUtil.randomNumbers(5)); param.setAmount(10); param.setTitle("测试分账支付"); - param.setChannel(PayChannelEnum.ALI.getCode()); + param.setChannel(PayChannelEnum.WECHAT.getCode()); param.setPayWay(PayWayEnum.QRCODE.getCode()); param.setClientIp("127.0.0.1"); param.setNotNotify(true); diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index 83d374a7..b6653251 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -5,7 +5,6 @@ import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; -import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; @@ -15,7 +14,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -28,7 +26,7 @@ import java.util.List; */ @Tag(name = "对账订单控制器") @RestController -@RequestMapping("/allocation/order") +@RequestMapping("/order/allocation") @RequiredArgsConstructor public class AllocationOrderController { @@ -67,13 +65,4 @@ public class AllocationOrderController { return Res.ok(allocationOrderService.findChannels()); } - @Operation(summary = "发起分账") - @PostMapping("/start") - public ResResult start(Long paymentId){ - AllocationStartParam param = new AllocationStartParam(); - param.setPaymentId(paymentId); - allocationService.allocation(param); - return Res.ok(); - } - } diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java index 60fa1997..dc2c9071 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java @@ -7,11 +7,13 @@ import cn.bootx.platform.common.core.rest.ResResult; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.param.pay.PayCloseParam; import cn.bootx.platform.daxpay.param.pay.PaySyncParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.result.pay.SyncResult; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayChannelOrderService; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderExtraService; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderQueryService; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; import cn.bootx.platform.daxpay.service.core.payment.close.service.PayCloseService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; import cn.bootx.platform.daxpay.service.dto.order.pay.PayChannelOrderDto; @@ -44,6 +46,7 @@ public class PayOrderController { private final PayCloseService PayCloseService; private final PaySyncService paySyncService; + private final AllocationService allocationService; @Operation(summary = "分页查询") @GetMapping("/page") @@ -93,4 +96,13 @@ public class PayOrderController { PayCloseService.close(param); return Res.ok(); } + + @Operation(summary = "发起分账") + @PostMapping("/allocation") + public ResResult allocation(Long id){ + AllocationStartParam param = new AllocationStartParam(); + param.setPaymentId(id); + allocationService.allocation(param); + return Res.ok(); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index 2786895f..588a5ded 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -33,7 +33,7 @@ public class AliPayAllocationService { // 分账主体参数 AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); - model.setOutRequestNo(String.valueOf(allocationOrder.getOutReqNo())); + model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); model.setRoyaltyMode("async"); @@ -59,7 +59,7 @@ public class AliPayAllocationService { public void finish(AllocationOrder allocationOrder){ // 分账主体参数 AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); - model.setOutRequestNo(String.valueOf(allocationOrder.getOutReqNo())); + model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); // 分账完结参数 SettleExtendParams extendParams = new SettleExtendParams(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 89d55509..88b5a21b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -80,7 +80,7 @@ public class WeChatPayAllocationService { .appid(config.getWxAppId()) .nonce_str(WxPayKit.generateStr()) .transaction_id(allocationOrder.getGatewayPayOrderNo()) - .out_order_no(allocationOrder.getOutReqNo()) + .out_order_no(allocationOrder.getOrderNo()) .description("分账完成") .build() .createSign(config.getApiKeyV2(), SignType.HMACSHA256); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java index 27d435a0..2dac1349 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/dao/AllocationOrderDetailManager.java @@ -22,6 +22,6 @@ public class AllocationOrderDetailManager extends BaseManager findAllByOrderId(Long orderId) { - return findAllByField(AllocationOrderDetail::getOrderId, orderId); + return findAllByField(AllocationOrderDetail::getAllocationId, orderId); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index 3d0845db..032d1cad 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -32,6 +32,12 @@ import java.time.LocalDateTime; @TableName("pay_allocation_order") public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction { + /** + * 分账订单号 + */ + @DbColumn(comment = "分账订单号") + private String orderNo; + /** * 支付订单ID */ @@ -64,12 +70,6 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< private String allocationNo; - /** - * 外部请求号 - */ - @DbColumn(comment = "外部请求号") - private String outReqNo; - /** * 所属通道 * @see PayChannelEnum diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java index 01f3b1fc..aa48abc9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -27,7 +27,7 @@ public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFun /** 分账订单ID */ @DbColumn(comment = "分账订单ID") - private Long orderId; + private Long allocationId; /** 接收者ID */ @DbColumn(comment = "接收者ID") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java index 77fc973a..32d1b824 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java @@ -19,6 +19,7 @@ import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverRe import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; @@ -87,7 +88,7 @@ public class AllocationOrderService { * 生成分账订单 */ @Transactional(rollbackFor = Exception.class) - public OrderAndDetail create(AllocationStartParam param, PayOrder payOrder, int orderAmount, List receiversByGroups){ + public OrderAndDetail createAndUpdate(AllocationStartParam param, PayOrder payOrder, int orderAmount, List receiversByGroups){ long orderId = IdUtil.getSnowflakeNextId(); // 请求号不存在使用订单ID @@ -103,7 +104,7 @@ public class AllocationOrderService { Integer rate = o.getRate(); Integer amount = orderAmount * rate / 10000; AllocationOrderDetail detail = new AllocationOrderDetail(); - detail.setOrderId(orderId) + detail.setAllocationId(orderId) .setReceiverId(o.getId()) .setStatus(AllocationStatusEnum.WAITING.getCode()) .setAmount(amount) @@ -125,16 +126,23 @@ public class AllocationOrderService { .setAllocationNo(allocationNo) .setChannel(payOrder.getAsyncChannel()) .setGatewayPayOrderNo(payOrder.getGatewayOrderNo()) - .setOutReqNo(String.valueOf(orderId)) + .setOrderNo(String.valueOf(orderId)) .setDescription(param.getDescription()) .setStatus(AllocationStatusEnum.WAITING.getCode()) .setAmount(sumAmount); allocationOrder.setId(orderId); // 保存 + // 因为加密后字段值会发生变更, 所以在保存前备份一下 + List detailsBack = details.stream() + .map(o -> { + AllocationOrderDetail allocationOrderDetail = new AllocationOrderDetail(); + BeanUtil.copyProperties(o, allocationOrderDetail); + return allocationOrderDetail; + }) + .collect(Collectors.toList()); allocationOrderDetailManager.saveAll(details); allocationOrderManager.save(allocationOrder); - - return new OrderAndDetail().setOrder(allocationOrder).setDetails(details); + return new OrderAndDetail().setOrder(allocationOrder).setDetails(detailsBack); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java index 421ec835..f0c6a29a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java @@ -56,6 +56,7 @@ public class PayBuilder { .setBusinessNo(payParam.getBusinessNo()) .setTitle(payParam.getTitle()) .setStatus(PayStatusEnum.PROGRESS.getCode()) + .setAllocation(payParam.isAllocation()) .setAmount(sumAmount) .setExpiredTime(expiredTime) .setCombinationPay(payParam.getPayChannels().size() > 1) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java index 3ceff7b8..295d61bb 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java @@ -4,6 +4,7 @@ import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.pay.convert.PayOrderConvert; import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderDto; import cn.bootx.table.modify.annotation.DbColumn; @@ -80,6 +81,13 @@ public class PayOrder extends MpBaseEntity implements EntityBaseFunction receiversByGroups = allocationGroupService.findReceiversByGroups(allocationGroup.getId()); - // 创建分账单和明细并保存, 使用事务 - OrderAndDetail orderAndDetail = allocationOrderService.create(param ,payOrder, channelOrder.getAmount(), receiversByGroups); + // 创建分账单和明细并保存, 同时更新支付订单状态 使用事务 + OrderAndDetail orderAndDetail = allocationOrderService.createAndUpdate(param ,payOrder, channelOrder.getAmount(), receiversByGroups); // 创建分账策略并初始化 AbsAllocationStrategy allocationStrategy = AllocationFactory.create(payOrder.getAsyncChannel()); @@ -120,7 +120,7 @@ public class AllocationService { allocationStrategy.doBeforeHandler(); try { // 分账处理 - allocationStrategy.allocation(); + allocationStrategy.finish(); // 执行中 allocationOrder.setStatus(AllocationStatusEnum.FINISH_PROCESSING.getCode()) .setErrorMsg(null); @@ -151,6 +151,10 @@ public class AllocationService { if (!payOrder.isAllocation()){ throw new PayFailureException("该订单不允许分账"); } + // 判断分账状态 + if (Objects.equals(AllocationStatusEnum.FINISH_SUCCESS.getCode(), payOrder.getAllocationStatus())){ + throw new PayFailureException("该订单已分账完成"); + } return payOrder; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 31eec4ae..7a675bf3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -7,6 +7,7 @@ import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; import cn.bootx.platform.daxpay.param.pay.SimplePayParam; import cn.bootx.platform.daxpay.result.pay.PayResult; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; @@ -270,6 +271,10 @@ public class PayService { payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ + // 如果是是允许分账的订单, 设置为待分装 + if (payOrder.isAllocation()){ + payOrder.setAllocationStatus(AllocationStatusEnum.WAITING.getCode()); + } clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); @@ -368,6 +373,10 @@ public class PayService { payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ + // 如果是是允许分账的订单, 设置为待分装 + if (payOrder.isAllocation()){ + payOrder.setAllocationStatus(AllocationStatusEnum.WAITING.getCode()); + } clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java index 42276455..bc798b88 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupDto.java @@ -8,14 +8,14 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * + * 分账组 * @author xxm * @since 2024/4/1 */ @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -@Schema(title = "") +@Schema(title = "分账组") public class AllocationGroupDto extends BaseDto { @Schema(description = "名称") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java index 543e821f..136c6513 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -11,14 +11,14 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * 分账接收方参数 + * 分账接收方 * @author xxm * @since 2024/3/28 */ @EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) -@Schema(title = "分账接收方参数") +@Schema(title = "分账接收方") public class AllocationReceiverDto extends BaseDto { @Schema(description = "主键") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java index a6484937..3b330a8d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java @@ -22,7 +22,7 @@ public class AllocationOrderDetailDto extends BaseDto { /** 分账订单ID */ @Schema(description = "分账订单ID") - private Long orderId; + private Long allocationId; /** 接收者ID */ @Schema(description = "接收者ID") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java index d0d08caf..2e559568 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java @@ -20,6 +20,13 @@ import java.time.LocalDateTime; @Accessors(chain = true) @Schema(title = "分账订单") public class AllocationOrderDto extends BaseDto { + + /** + * 分账订单号 + */ + @Schema(description = "分账订单号") + private String orderNo; + /** * 支付订单ID */ @@ -50,13 +57,6 @@ public class AllocationOrderDto extends BaseDto { @Schema(description = "分账单号") private String allocationNo; - - /** - * 外部请求号 - */ - @Schema(description = "外部请求号") - private String outReqNo; - /** * 所属通道 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index 7ca9da6c..a758a81d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.dto.order.pay; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; +import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -68,6 +69,13 @@ public class PayOrderDto extends BaseDto { @Schema(description = "支付状态") private String status; + /** + * 分账状态 + * @see AllocationStatusEnum + */ + @Schema(description = "分账状态") + private String allocationStatus; + /** 支付时间 */ @Schema(description = "支付时间") private LocalDateTime payTime; -- Gitee From 3b43cf097268bcb8142dd06eb3f43aa8e4347439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E5=91=80?= Date: Tue, 9 Apr 2024 03:38:30 +0000 Subject: [PATCH 31/45] =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=BE=81=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 喵呀 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 429962aa..9f93731a 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ `DaxPay`是一款基于`Apache License 2.0`协议分发的开源软件,受中华人民共和国相关法律法规的保护和限制,可以在符合[《用户授权使用协议》](用户授权使用协议.txt)和 [《Apache License 2.0》](LICENSE)开源协议情况下进行免费使用、学习和交流。**在使用前请阅读上述协议,如果不同意请勿进行使用。** +## ⚠️多商户版本建议征询 +近期将会开启多商户版本的开发,为了更好的听取大家的建议,特建立一个征集需求建议的issues,欢迎提出各种功能需求和建议,填写地址:[功能和建议填写](https://gitee.com/dromara/dax-pay/issues/I9F3EO) ## 🍈项目介绍 -- Gitee From 6e564e71818062ebb595bd3524ea9000be64337d Mon Sep 17 00:00:00 2001 From: bootx Date: Tue, 9 Apr 2024 22:26:49 +0800 Subject: [PATCH 32/45] =?UTF-8?q?feat=20=E4=BB=BB=E5=8A=A1=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 8bf5e492..6f266f22 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -10,14 +10,21 @@ - [x] 默认分账组 - [ ] 分账订单管理 - [x] 订单创建 - - [ ] 发起分账 + - [x] 发起分账 - [ ] 分账完结 - [ ] 分账处理 - [x] 发起分账 - [ ] 分账情况查询, 分账结果/剩余可分账金额 - [x] 修复创建支付订单报错时, 订单保存数据不完整 -2.0.6: 分账完善和功能优化 +2.0.6: 分账完善和去除组合支付 +- [ ] 去除组合支付和场景 + - [ ] 退款场景 + - [ ] 关闭支付订单 + - [ ] 同步操作时 + - [ ] 订单修复 + - [ ] 支付和退款回调 + - [ ] 去除现金支付和储值卡支付方式 - [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ - [ ] 资金流水优化 - [ ] 支持分账组分账和自己传接收方进行分账 -- Gitee From 9cfd3de0a307fed536f4e5eadc04a6d8aedd3481 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Wed, 10 Apr 2024 13:38:57 +0800 Subject: [PATCH 33/45] =?UTF-8?q?doc=20=E6=9B=B4=E6=96=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E7=BE=A4=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f93731a..ba6fca48 100644 --- a/README.md +++ b/README.md @@ -188,9 +188,11 @@ QQ扫码加入QQ交流群 微信扫码加入微信交流群

-微信图片_20240226144703 +微信图片_20240226144703

+ + ## 🍻 鸣谢 感谢 JetBrains 提供的免费开源 License: -- Gitee From fdfca91f5191dedef3ac2d05f66cd31bba7f5e14 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 11 Apr 2024 19:42:05 +0800 Subject: [PATCH 34/45] =?UTF-8?q?feat=20=E5=A2=9E=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=B1=9E=E6=80=A7,=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/order/AllocationOrderQuery.java | 17 +++++++++++++++++ daxpay-single/daxpay-single-start/pom.xml | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java index 60dfd8d3..8612c0f9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/AllocationOrderQuery.java @@ -14,5 +14,22 @@ import lombok.experimental.Accessors; @Schema(title = "分账订单查询参数") public class AllocationOrderQuery { + @Schema(description = "分账订单号") + private String orderNo; + + @Schema(description = "支付订单ID") + private Long paymentId; + + @Schema(description = "支付订单标题") + private String title; + + @Schema(description = "分账业务号") + private String allocationNo; + + @Schema(description = "分账通道") + private String channel; + + + } diff --git a/daxpay-single/daxpay-single-start/pom.xml b/daxpay-single/daxpay-single-start/pom.xml index e38bd3e5..09fc29bd 100644 --- a/daxpay-single/daxpay-single-start/pom.xml +++ b/daxpay-single/daxpay-single-start/pom.xml @@ -34,6 +34,11 @@ cn.bootx.platform common-starter-code-gen + + + cn.bootx.platform + common-starter-monitor + cn.bootx.platform -- Gitee From c130972f83f75b7fefb80257b2a84c5f5a7c7930 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 11 Apr 2024 20:22:35 +0800 Subject: [PATCH 35/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 4 +- .../AliPayAllocationReceiverService.java | 2 +- .../service/AliPayAllocationService.java | 49 +++++++++++++++++-- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index 6f266f22..3f305f44 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -12,9 +12,8 @@ - [x] 订单创建 - [x] 发起分账 - [ ] 分账完结 -- [ ] 分账处理 +- [x] 分账处理 - [x] 发起分账 - - [ ] 分账情况查询, 分账结果/剩余可分账金额 - [x] 修复创建支付订单报错时, 订单保存数据不完整 2.0.6: 分账完善和去除组合支付 @@ -30,6 +29,7 @@ - [ ] 支持分账组分账和自己传接收方进行分账 - [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 - [ ] 分账接收方管理提供接口调用 +- [ ] 分账情况查询, 分账结果/剩余可分账金额 - [ ] 分账回调处理 - [ ] 分账组管理提供接口调用 - [ ] 对账回退及退款 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java index acf26d28..1c090e37 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationReceiverService.java @@ -96,7 +96,7 @@ public class AliPayAllocationReceiverService { if (StrUtil.isBlank(errorMsg)) { errorMsg = alipayResponse.getMsg(); } - log.error("支付失败 {}", errorMsg); + log.error("分账接收方处理失败 {}", errorMsg); throw new PayFailureException(errorMsg); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index 588a5ded..0ac09228 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -1,10 +1,14 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; +import cn.bootx.platform.daxpay.exception.pay.PayFailureException; +import cn.bootx.platform.daxpay.service.code.AliPayCode; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; -import com.alipay.api.domain.AlipayTradeOrderSettleModel; -import com.alipay.api.domain.OpenApiRoyaltyDetailInfoPojo; -import com.alipay.api.domain.SettleExtendParams; +import cn.hutool.core.util.StrUtil; +import com.alipay.api.AlipayResponse; +import com.alipay.api.domain.*; +import com.alipay.api.request.AlipayTradeOrderSettleQueryRequest; +import com.alipay.api.response.AlipayTradeOrderSettleQueryResponse; import com.alipay.api.response.AlipayTradeOrderSettleResponse; import com.ijpay.alipay.AliPayApi; import lombok.RequiredArgsConstructor; @@ -13,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -49,7 +54,10 @@ public class AliPayAllocationService { model.setRoyaltyParameters(royaltyParameters); AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); - System.out.println(response); + // TODO 需要写入到分账订单中 + String settleNo = response.getSettleNo(); + this.verifyErrorMsg(response); + } /** @@ -67,6 +75,37 @@ public class AliPayAllocationService { model.setExtendParams(extendParams); AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); - System.out.println(response); + this.verifyErrorMsg(response); + } + + /** + * 分账状态查询 + */ + @SneakyThrows + public void query(AllocationOrder allocationOrder){ + AlipayTradeOrderSettleQueryModel model = new AlipayTradeOrderSettleQueryModel(); + model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); + model.setOutRequestNo(allocationOrder.getOrderNo()); + AlipayTradeOrderSettleQueryRequest request = new AlipayTradeOrderSettleQueryRequest(); + request.setBizModel(model); + AlipayTradeOrderSettleQueryResponse response = AliPayApi.execute(request); + // 验证 + this.verifyErrorMsg(response); + List royaltyDetailList = response.getRoyaltyDetailList(); + System.out.println(royaltyDetailList); + } + + /** + * 验证错误信息 + */ + private void verifyErrorMsg(AlipayResponse alipayResponse) { + if (!Objects.equals(alipayResponse.getCode(), AliPayCode.SUCCESS)) { + String errorMsg = alipayResponse.getSubMsg(); + if (StrUtil.isBlank(errorMsg)) { + errorMsg = alipayResponse.getMsg(); + } + log.error("分账接收方处理失败 {}", errorMsg); + throw new PayFailureException(errorMsg); + } } } -- Gitee From 9d63acd03d40958b8dbeaa44d3405a8d6f7b7187 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Fri, 12 Apr 2024 14:36:39 +0800 Subject: [PATCH 36/45] =?UTF-8?q?doc=20=E5=A2=9E=E5=8A=A0=E9=92=89?= =?UTF-8?q?=E9=92=89=E7=BE=A4=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 ++++++++++++------- _doc/Task.md | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ba6fca48..75090e2c 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,6 @@ ## 🧭 特色功能 - 封装各类支付通道的接口为统一的接口,方便业务系统进行调用,简化对接多种支付方式的复杂度 - 已对接`微信支付`、`支付宝`和云闪付相关的接口,后续版本将支持`V3`版本的接口 -- 支持组合支付,满足用户系统需要多种方式同时进行支付的场景。 - 支持支付、退款、对账、分账等支付相关的能力 - 提供`HTTP`方式接口调用能力,和`Java`版本的`SDK`,方便业务系统进行对接 - 接口请求和响应数据支持启用签名机制,可根据实际需要进行开关,保证交易安全可靠 @@ -87,7 +86,6 @@ | Redis | 分布式缓存 | 5.x版本及以上 | | MySQL | 数据库 | 基于5.7.X版本开发,基本支持8.x版本 | | Vue | 前端框架 | 3.x | -| IJpay | 支付SDK开发包 | 项目自动管理,不需要额外处理 | ## 🛠️ 业务系统接入 > 业务系统想接入支付网关的话,不需要集成到业务系统里,只需要单独部署一份支付系统,然后业务系统通过接口调用即可拥有对应的支付能力, @@ -159,13 +157,13 @@ public class SimplePayOrderTest { ## 🍎 系统截图 ### 收银台演示 -![微信截图_20240326141126](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326141126.es9yupxd3.webp) +![微信截图_20240326141126](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326141126.es9yupxd3.webp) ### 驾驶舱 -![QQ截图20240326141912](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/QQ截图20240326141912.60u0cpvjg5.webp) +![QQ截图20240326141912](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/QQ截图20240326141912.60u0cpvjg5.webp) ### H5收银台演示 -![h5](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/h5.839t0s61xr.webp) +![h5](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/h5.839t0s61xr.webp) ### 支付通道配置 -![微信截图_20240326142208](https://cdn.jsdelivr.net/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326142208.6bgu5vdv60.webp) +![微信截图_20240326142208](https://jsd.cdn.zzko.cn/gh/xxm1995/picx-images-hosting@master/daxpay/微信截图_20240326142208.6bgu5vdv60.webp) ## 🛣️ 路线图 > 当前处于功能开发阶段,部分功能可能会有调整,`V2.1.0`时将作为正式生产可用版本进行发布,之后会保证系统版本非大版本升级时,API接口和数据接口向前兼容 @@ -181,11 +179,18 @@ public class SimplePayOrderTest { ## 🥪 关于我们 +钉钉扫码加入钉钉交流群(推荐) +

+ +

+ + QQ扫码加入QQ交流群

- +

+ 微信扫码加入微信交流群

微信图片_20240226144703 diff --git a/_doc/Task.md b/_doc/Task.md index 3f305f44..dd85931b 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -17,7 +17,7 @@ - [x] 修复创建支付订单报错时, 订单保存数据不完整 2.0.6: 分账完善和去除组合支付 -- [ ] 去除组合支付和场景 +- [ ] 去除组合支付和场景,降低逻辑的的复杂度 - [ ] 退款场景 - [ ] 关闭支付订单 - [ ] 同步操作时 -- Gitee From eecc228399483ff9861a810edd8378640f1c1fbe Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Fri, 12 Apr 2024 15:32:53 +0800 Subject: [PATCH 37/45] =?UTF-8?q?doc=20=E6=9B=B4=E6=96=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=8A=A0=E7=BE=A4=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 75090e2c..00833f26 100644 --- a/README.md +++ b/README.md @@ -191,9 +191,9 @@ QQ扫码加入QQ交流群

-微信扫码加入微信交流群 +微信扫码加小助手拉群

-微信图片_20240226144703 +微信图片_20240226144703

-- Gitee From 625c5c301af2142f9d2e7d97d8a304327ad2b3b2 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Fri, 12 Apr 2024 18:01:19 +0800 Subject: [PATCH 38/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++ .../allocation/AllocationOrderController.java | 14 +++++- .../daxpay}/code/AllocationStatusEnum.java | 2 +- .../daxpay/param/pay/AllocationSyncParam.java | 20 ++++++++ .../daxpay/result/pay/RefundSyncResult.java | 28 ----------- .../daxpay/result/pay/SyncResult.java | 4 +- .../service/AliPayAllocationService.java | 9 +++- .../service/WeChatPayAllocationService.java | 18 +++++++ .../allocation/entity/AllocationOrder.java | 20 ++++---- .../service/AllocationOrderService.java | 2 +- .../core/order/pay/entity/PayOrder.java | 2 +- .../factory/AllocationSyncFactory.java | 39 +++++++++++++++ .../allocation/service/AllocationService.java | 2 +- .../service/AllocationSyncService.java | 50 +++++++++++++++++++ .../WeChatPayAllocationStrategy.java | 1 + .../core/payment/pay/service/PayService.java | 2 +- .../AliPayAllocationSyncStrategy.java | 44 ++++++++++++++++ .../WechatPayAllocationSyncStrategy.java | 45 +++++++++++++++++ .../order/allocation/AllocationOrderDto.java | 3 +- .../service/dto/order/pay/PayOrderDto.java | 2 +- .../func/AbsAllocationSyncStrategy.java | 33 ++++++++++++ 21 files changed, 294 insertions(+), 49 deletions(-) rename daxpay-single/{daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service => daxpay-single-core/src/main/java/cn/bootx/platform/daxpay}/code/AllocationStatusEnum.java (93%) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationSyncParam.java delete mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationSyncFactory.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java diff --git a/README.md b/README.md index 00833f26..e94c2f58 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,9 @@ QQ扫码加入QQ交流群 微信图片_20240226144703

+## Star History + +[![Stargazers over time](https://starchart.cc/dromara/dax-pay.svg?variant=adaptive)](https://starchart.cc/dromara/dax-pay) ## 🍻 鸣谢 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index b6653251..391f94fe 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -5,8 +5,9 @@ import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.daxpay.param.pay.AllocationSyncParam; import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; -import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationSyncService; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; @@ -14,6 +15,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -32,7 +34,7 @@ public class AllocationOrderController { private final AllocationOrderService allocationOrderService; - private final AllocationService allocationService; + private final AllocationSyncService allocationSyncService; @Operation(summary = "分页") @GetMapping("/page") @@ -65,4 +67,12 @@ public class AllocationOrderController { return Res.ok(allocationOrderService.findChannels()); } + @Operation(summary = "同步分账结果") + @PostMapping("/sync") + public ResResult sync(Long id){ + AllocationSyncParam param = new AllocationSyncParam(); + param.setAllocationId(id); + allocationSyncService.sync(param); + return Res.ok(); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java similarity index 93% rename from daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java rename to daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java index d35d0053..acb85e31 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AllocationStatusEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.service.code; +package cn.bootx.platform.daxpay.code; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationSyncParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationSyncParam.java new file mode 100644 index 00000000..b49314d2 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/AllocationSyncParam.java @@ -0,0 +1,20 @@ +package cn.bootx.platform.daxpay.param.pay; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 分账同步请求参数 + * @author xxm + * @since 2024/4/12 + */ +@Data +@Schema(title = "分账同步请求参数") +public class AllocationSyncParam { + + @Schema(description = "分账单ID") + private Long allocationId; + + @Schema(description = "分账单号") + private String allocationNo; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java deleted file mode 100644 index dbafb5c8..00000000 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundSyncResult.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.bootx.platform.daxpay.result.pay; - -import cn.bootx.platform.daxpay.result.CommonResult; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * 退款同步结果 - * @author xxm - * @since 2024/1/29 - */ -@EqualsAndHashCode(callSuper = true) -@Data -@Accessors(chain = true) -@Schema(title = "退款同步结果") -public class RefundSyncResult extends CommonResult { - - @Schema(description = "是否进行了修复") - private boolean repair; - - @Schema(description = "支付单修复ID") - private Long repairId; - - @Schema(description = "失败原因") - private String errorMsg; -} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java index 115064b1..8dc8a343 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.result.pay; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.code.RefundSyncStatusEnum; import cn.bootx.platform.daxpay.code.PaySyncStatusEnum; import cn.bootx.platform.daxpay.result.CommonResult; @@ -11,7 +12,7 @@ import lombok.experimental.Accessors; import static cn.bootx.platform.daxpay.code.PaySyncStatusEnum.FAIL; /** - * 支付单同步结果 + * 各种单据同步结果 * @author xxm * @since 2023/12/27 */ @@ -25,6 +26,7 @@ public class SyncResult extends CommonResult { * 支付网关同步状态 * @see PaySyncStatusEnum * @see RefundSyncStatusEnum + * @see AllocationStatusEnum */ @Schema(description = "支付网关同步状态") private String gatewayStatus = FAIL.getCode(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index 0ac09228..5c37c056 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -82,7 +82,7 @@ public class AliPayAllocationService { * 分账状态查询 */ @SneakyThrows - public void query(AllocationOrder allocationOrder){ + public void queryStatus(AllocationOrder allocationOrder){ AlipayTradeOrderSettleQueryModel model = new AlipayTradeOrderSettleQueryModel(); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); model.setOutRequestNo(allocationOrder.getOrderNo()); @@ -95,6 +95,13 @@ public class AliPayAllocationService { System.out.println(royaltyDetailList); } + /** + * 分账剩余金额查询 + */ + public void queryAmount(AllocationOrder allocationOrder){ + + } + /** * 验证错误信息 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 88b5a21b..6a63defd 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -92,6 +92,24 @@ public class WeChatPayAllocationService { this.verifyErrorMsg(result); } + /** + * 查询分账状态 + */ + public void queryStatus(AllocationOrder allocationOrder, WeChatPayConfig config){ + Map params = ProfitSharingModel.builder() + .mch_id(config.getWxMchId()) + .appid(config.getWxAppId()) + .nonce_str(WxPayKit.generateStr()) + .transaction_id(allocationOrder.getGatewayPayOrderNo()) + .out_order_no(allocationOrder.getOrderNo()) + .build() + .createSign(config.getApiKeyV2(), SignType.HMACSHA256); + String xmlResult = WxPayApi.profitSharingQuery(params); + Map result = WxPayKit.xmlToMap(xmlResult); + this.verifyErrorMsg(result); + } + + /** * 验证错误信息 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index 032d1cad..abbebefc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -2,8 +2,8 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.table.modify.annotation.DbColumn; @@ -33,11 +33,19 @@ import java.time.LocalDateTime; public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction { /** - * 分账订单号 + * 分账订单号(传输给三方支付系统做关联) */ @DbColumn(comment = "分账订单号") private String orderNo; + /** + * 分账单号 + */ + @DbMySqlIndex(comment = "分账单号索引", type = MySqlIndexType.UNIQUE) + @DbColumn(comment = "分账单号") + private String allocationNo; + + /** * 支付订单ID */ @@ -62,14 +70,6 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< @DbColumn(comment = "网关分账单号") private String gatewayAllocationNo; - /** - * 分账单号 - */ - @DbMySqlIndex(comment = "分账单号索引", type = MySqlIndexType.UNIQUE) - @DbColumn(comment = "分账单号") - private String allocationNo; - - /** * 所属通道 * @see PayChannelEnum diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java index 32d1b824..c4bd59d1 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java @@ -8,7 +8,7 @@ import cn.bootx.platform.common.core.util.ResultConvertUtil; import cn.bootx.platform.common.mybatisplus.util.MpUtil; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java index 295d61bb..658ebfed 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java @@ -4,7 +4,7 @@ import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.pay.convert.PayOrderConvert; import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderDto; import cn.bootx.table.modify.annotation.DbColumn; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationSyncFactory.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationSyncFactory.java new file mode 100644 index 00000000..7280c257 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationSyncFactory.java @@ -0,0 +1,39 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.factory; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.exception.pay.PayUnsupportedMethodException; +import cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation.AliPayAllocationSyncStrategy; +import cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation.WechatPayAllocationSyncStrategy; +import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; +import cn.hutool.extra.spring.SpringUtil; +import lombok.experimental.UtilityClass; + +/** + * 分账同步策略工厂 + * @author xxm + * @since 2024/4/12 + */ +@UtilityClass +public class AllocationSyncFactory { + + /** + * 根据传入的支付通道创建策略 + * @return 支付策略 + */ + public static AbsAllocationSyncStrategy create(String channel) { + PayChannelEnum channelEnum = PayChannelEnum.findByCode(channel); + + AbsAllocationSyncStrategy strategy; + switch (channelEnum) { + case ALI: + strategy = SpringUtil.getBean(AliPayAllocationSyncStrategy.class); + break; + case WECHAT: + strategy = SpringUtil.getBean(WechatPayAllocationSyncStrategy.class); + break; + default: + throw new PayUnsupportedMethodException(); + } + return strategy; + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java index eb8ff716..37503ad2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -5,7 +5,7 @@ import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.result.allocation.AllocationResult; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java new file mode 100644 index 00000000..64c47a85 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java @@ -0,0 +1,50 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.service; + +import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.daxpay.param.pay.AllocationSyncParam; +import cn.bootx.platform.daxpay.result.pay.SyncResult; +import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationSyncFactory; +import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Objects; + +/** + * 分账状态同步 + * @author xxm + * @since 2024/4/12 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class AllocationSyncService { + private final AllocationOrderManager allocationOrderManager; + + /** + * 支付同步, 开启一个新的事务, 不受外部抛出异常的影响 + */ + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public SyncResult sync(AllocationSyncParam param) { + // 获取分账订单 + AllocationOrder allocationOrder = null; + if (Objects.nonNull(param.getAllocationId())){ + allocationOrder = allocationOrderManager.findById(param.getAllocationId()) + .orElseThrow(() -> new DataNotExistException("分账单不存在")); + } + if (Objects.isNull(allocationOrder)){ + allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) + .orElseThrow(() -> new DataNotExistException("分账单不存在")); + } + // 获取分账策略 + AbsAllocationSyncStrategy allocationSyncStrategy = AllocationSyncFactory.create(allocationOrder.getChannel()); + allocationSyncStrategy.initPayParam(allocationOrder); + allocationSyncStrategy.doSyncStatus(); + return new SyncResult(); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java index 64584330..ebd649d7 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java @@ -68,4 +68,5 @@ public class WeChatPayAllocationStrategy extends AbsAllocationStrategy { weChatPayAllocationService.finish(getAllocationOrder(), weChatPayConfig); } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 7a675bf3..36958043 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -7,7 +7,7 @@ import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; import cn.bootx.platform.daxpay.param.pay.SimplePayParam; import cn.bootx.platform.daxpay.result.pay.PayResult; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java new file mode 100644 index 00000000..7c3a5c0e --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java @@ -0,0 +1,44 @@ +package cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationService; +import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 支付宝分账状态同步策略 + * @author xxm + * @since 2024/4/12 + */ +@Scope(SCOPE_PROTOTYPE) +@Component +@RequiredArgsConstructor +public class AliPayAllocationSyncStrategy extends AbsAllocationSyncStrategy { + private final AliPayConfigService aliPayConfigService; + + private final AliPayAllocationService aliPayAllocationService; + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.ALI; + } + + /** + * 同步状态 + */ + @Override + public void doSyncStatus() { + AliPayConfig aliPayConfig = aliPayConfigService.getAndCheckConfig(); + aliPayConfigService.initConfig(aliPayConfig); + aliPayAllocationService.queryStatus(this.getAllocationOrder()); + } + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java new file mode 100644 index 00000000..cd4e8bb7 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java @@ -0,0 +1,45 @@ +package cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation; + +import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayAllocationService; +import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayConfigService; +import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * 微信分账状态同步策略 + * @author xxm + * @since 2024/4/12 + */ +@Scope(SCOPE_PROTOTYPE) +@Component +@RequiredArgsConstructor +public class WechatPayAllocationSyncStrategy extends AbsAllocationSyncStrategy { + + private final WeChatPayAllocationService weChatPayAllocationService; + + private final WeChatPayConfigService weChatPayConfigService; + + + /** + * 同步状态 + */ + @Override + public void doSyncStatus() { + WeChatPayConfig wechatPayConfig = weChatPayConfigService.getAndCheckConfig(); + weChatPayAllocationService.queryStatus(this.getAllocationOrder(),wechatPayConfig); + } + + /** + * 策略标识 + */ + @Override + public PayChannelEnum getChannel() { + return PayChannelEnum.WECHAT; + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java index 2e559568..3d6bfcfc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.dto.order.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; @@ -77,7 +78,7 @@ public class AllocationOrderDto extends BaseDto { /** * 状态 - * @see cn.bootx.platform.daxpay.service.code.AllocationStatusEnum + * @see AllocationStatusEnum */ @Schema(description = "状态") private String status; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index a758a81d..ea497acc 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -3,7 +3,7 @@ package cn.bootx.platform.daxpay.service.dto.order.pay; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.service.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java new file mode 100644 index 00000000..28fdc52a --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java @@ -0,0 +1,33 @@ +package cn.bootx.platform.daxpay.service.func; + +import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + +/** + * 抽象的分账状态同步策略 + * @author xxm + * @since 2024/4/12 + */ +@Slf4j +@Getter +@Setter +public abstract class AbsAllocationSyncStrategy implements PayStrategy{ + + private AllocationOrder allocationOrder; + + /** + * 初始化参数 + */ + public void initPayParam(AllocationOrder allocationOrder) { + this.allocationOrder = allocationOrder; + } + + /** + * 同步状态 + */ + public abstract void doSyncStatus(); + + +} -- Gitee From 1deee49edbb6fb88c73c6dd56deefb4cc93188c3 Mon Sep 17 00:00:00 2001 From: bootx Date: Sun, 14 Apr 2024 12:27:23 +0800 Subject: [PATCH 39/45] =?UTF-8?q?feat=20=E6=BC=94=E7=A4=BA=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=E6=94=AF=E6=8C=81=E5=88=86=E8=B4=A6,=20=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=88=86=E8=B4=A6=E7=AD=BE=E5=90=8D=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/bootx/platform/daxpay/demo/domain/AggregatePayInfo.java | 3 +++ .../platform/daxpay/demo/param/AggregateSimplePayParam.java | 3 +++ .../platform/daxpay/demo/param/CashierSimplePayParam.java | 3 +++ .../bootx/platform/daxpay/demo/service/AggregateService.java | 2 ++ .../cn/bootx/platform/daxpay/demo/service/CashierService.java | 1 + .../channel/wechat/service/WeChatPayAllocationService.java | 2 +- 6 files changed, 13 insertions(+), 1 deletion(-) diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/domain/AggregatePayInfo.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/domain/AggregatePayInfo.java index bd037e25..fa9fdb18 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/domain/AggregatePayInfo.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/domain/AggregatePayInfo.java @@ -21,6 +21,9 @@ public class AggregatePayInfo { @Schema(description = "订单业务号") private String businessNo; + @Schema(description = "是否分账") + private boolean allocation; + /** 支付金额 */ @Schema(description = "支付金额") private Integer amount; diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/AggregateSimplePayParam.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/AggregateSimplePayParam.java index 4192e75f..d18cf3a4 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/AggregateSimplePayParam.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/AggregateSimplePayParam.java @@ -20,6 +20,9 @@ public class AggregateSimplePayParam { @NotNull private String businessNo; + @Schema(description = "是否分账") + private boolean allocation; + @Schema(description = "标题") @NotNull private String title; diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/CashierSimplePayParam.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/CashierSimplePayParam.java index a45b4cd1..cbd554f9 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/CashierSimplePayParam.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/param/CashierSimplePayParam.java @@ -22,6 +22,9 @@ public class CashierSimplePayParam { @NotNull private String businessNo; + @Schema(description = "是否分账") + private boolean allocation; + @Schema(description = "标题") @NotNull private String title; diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java index bc406180..e89d2c1f 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/AggregateService.java @@ -58,6 +58,7 @@ public class AggregateService { AggregatePayInfo aggregatePayInfo = new AggregatePayInfo() .setTitle(param.getTitle()) .setBusinessNo(param.getBusinessNo()) + .setAllocation(param.isAllocation()) .setAmount(amount); String code = IdUtil.getSnowflakeNextIdStr(); String serverUrl = daxPayDemoProperties.getServerUrl(); @@ -218,6 +219,7 @@ public class AggregateService { SimplePayParam simplePayParam = new SimplePayParam(); simplePayParam.setBusinessNo(param.getBusinessNo()); + simplePayParam.setAllocation(param.isAllocation()); simplePayParam.setTitle(param.getTitle()); simplePayParam.setAmount(amount); simplePayParam.setChannel(payChannel.getCode()); diff --git a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/CashierService.java b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/CashierService.java index 7bed544c..9d2e837e 100644 --- a/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/CashierService.java +++ b/daxpay-single-demo/src/main/java/cn/bootx/platform/daxpay/demo/service/CashierService.java @@ -52,6 +52,7 @@ public class CashierService { // 将参数转换为简单支付参数 SimplePayParam simplePayParam = new SimplePayParam(); simplePayParam.setBusinessNo(param.getBusinessNo()); + simplePayParam.setAllocation(param.isAllocation()); int amount = param.getAmount() .multiply(BigDecimal.valueOf(100)) .intValue(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 6a63defd..76fd837d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -96,9 +96,9 @@ public class WeChatPayAllocationService { * 查询分账状态 */ public void queryStatus(AllocationOrder allocationOrder, WeChatPayConfig config){ + // 不要传输AppId参数, 否则会失败 Map params = ProfitSharingModel.builder() .mch_id(config.getWxMchId()) - .appid(config.getWxAppId()) .nonce_str(WxPayKit.generateStr()) .transaction_id(allocationOrder.getGatewayPayOrderNo()) .out_order_no(allocationOrder.getOrderNo()) -- Gitee From e0c495d94b7bc930e887063fce5be10360168a74 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 15 Apr 2024 18:30:38 +0800 Subject: [PATCH 40/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++-- .../allocation/AllocationOrderController.java | 12 ++++++ .../pay/allocation/AllocationResetParam.java | 22 +++++++++++ .../daxpay/service/code/AliPayCode.java | 3 ++ .../common/context/AllocationLocal.java | 17 +++++++++ .../common/context/PaymentContext.java | 3 ++ .../service/AliPayAllocationService.java | 20 ++++++++-- .../service/WeChatPayAllocationService.java | 4 +- .../result/AllocationGatewaySyncResult.java | 17 +++++++++ .../allocation/service/AllocationService.java | 37 ++++++++++++++++++- .../allocation/AliPayAllocationStrategy.java | 2 +- .../WeChatPayAllocationStrategy.java | 4 +- 12 files changed, 139 insertions(+), 14 deletions(-) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationResetParam.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/AllocationLocal.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/result/AllocationGatewaySyncResult.java diff --git a/README.md b/README.md index e94c2f58..0d39c19c 100644 --- a/README.md +++ b/README.md @@ -179,15 +179,21 @@ public class SimplePayOrderTest { ## 🥪 关于我们 -钉钉扫码加入钉钉交流群(推荐) +扫码加入QQ交流群 +

+ +

+ + +扫码加入钉钉交流群

-QQ扫码加入QQ交流群 +扫码加入飞书交流群

- +

diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index 391f94fe..77173adb 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -6,7 +6,9 @@ import cn.bootx.platform.common.core.rest.ResResult; import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.param.pay.AllocationSyncParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; +import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationSyncService; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; @@ -35,6 +37,7 @@ public class AllocationOrderController { private final AllocationOrderService allocationOrderService; private final AllocationSyncService allocationSyncService; + private final AllocationService allocationService; @Operation(summary = "分页") @GetMapping("/page") @@ -75,4 +78,13 @@ public class AllocationOrderController { allocationSyncService.sync(param); return Res.ok(); } + + @Operation(summary = "分账完结") + @PostMapping("/finish") + public ResResult finish(Long id){ + AllocationFinishParam param = new AllocationFinishParam(); + param.setOrderId(id); + allocationService.finish(param); + return Res.ok(); + } } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationResetParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationResetParam.java new file mode 100644 index 00000000..3dbf900c --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/pay/allocation/AllocationResetParam.java @@ -0,0 +1,22 @@ +package cn.bootx.platform.daxpay.param.pay.allocation; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 重新分账参数 + * @author xxm + * @since 2024/4/15 + */ +@Data +@Accessors(chain = true) +@Schema(title = "重新分账参数") +public class AllocationResetParam { + + @Schema(description = "分账订单ID") + private Long orderId; + + @Schema(description = "分账单号") + private String allocationNo; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java index 5af159df..2eddbdee 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java @@ -102,4 +102,7 @@ public interface AliPayCode { /** 分账接收方不存在 */ String USER_NOT_EXIST = "USER_NOT_EXIST"; + /** 分账金额超过最大可分账金额 */ + String ALLOC_AMOUNT_VALIDATE_ERROR = "ACQ.ALLOC_AMOUNT_VALIDATE_ERROR"; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/AllocationLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/AllocationLocal.java new file mode 100644 index 00000000..e043239a --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/AllocationLocal.java @@ -0,0 +1,17 @@ +package cn.bootx.platform.daxpay.service.common.context; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账上下文 + * @author xxm + * @since 2024/4/15 + */ +@Data +@Accessors(chain = true) +public class AllocationLocal { + + /** 网关分账号 */ + private String gatewayNo; +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PaymentContext.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PaymentContext.java index b5110f2e..9b75c9be 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PaymentContext.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/common/context/PaymentContext.java @@ -42,4 +42,7 @@ public class PaymentContext { /** 对账相关信息 */ private final ReconcileLocal reconcileInfo = new ReconcileLocal(); + /** 分账相关信息 */ + private final AllocationLocal allocationInfo = new AllocationLocal(); + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index 5c37c056..b8e4e889 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -2,6 +2,7 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.AliPayCode; +import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; import cn.hutool.core.util.StrUtil; @@ -35,7 +36,6 @@ public class AliPayAllocationService { */ @SneakyThrows public void allocation(AllocationOrder allocationOrder, List orderDetails){ - // 分账主体参数 AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); @@ -54,26 +54,38 @@ public class AliPayAllocationService { model.setRoyaltyParameters(royaltyParameters); AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); - // TODO 需要写入到分账订单中 + // 需要写入到分账订单中 String settleNo = response.getSettleNo(); + PaymentContextLocal.get().getAllocationInfo().setGatewayNo(settleNo); this.verifyErrorMsg(response); - } /** * 分账完结 */ @SneakyThrows - public void finish(AllocationOrder allocationOrder){ + public void finish(AllocationOrder allocationOrder, List orderDetails ){ // 分账主体参数 AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); + model.setRoyaltyMode("async"); // 分账完结参数 SettleExtendParams extendParams = new SettleExtendParams(); extendParams.setRoyaltyFinish("true"); model.setExtendParams(extendParams); + // 分账子参数 + List royaltyParameters = orderDetails.stream() + .map(o -> { + OpenApiRoyaltyDetailInfoPojo infoPojo = new OpenApiRoyaltyDetailInfoPojo(); + infoPojo.setAmount(String.valueOf(o.getAmount() / 100.0)); + infoPojo.setTransIn(o.getReceiverAccount()); + return infoPojo; + }) + .collect(Collectors.toList()); + model.setRoyaltyParameters(royaltyParameters); + AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); this.verifyErrorMsg(response); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 76fd837d..d95fd355 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -59,7 +59,7 @@ public class WeChatPayAllocationService { .appid(config.getWxAppId()) .nonce_str(WxPayKit.generateStr()) .transaction_id(allocationOrder.getGatewayPayOrderNo()) - .out_order_no(WxPayKit.generateStr()) + .out_order_no(allocationOrder.getOrderNo()) .receivers(JSON.toJSONString(list)) .build() .createSign(config.getApiKeyV2(), SignType.HMACSHA256); @@ -74,7 +74,7 @@ public class WeChatPayAllocationService { /** * 完成分账 */ - public void finish(AllocationOrder allocationOrder, WeChatPayConfig config){ + public void finish(AllocationOrder allocationOrder, List allocationOrderDetails, WeChatPayConfig config){ Map params = ProfitSharingModel.builder() .mch_id(config.getWxMchId()) .appid(config.getWxAppId()) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/result/AllocationGatewaySyncResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/result/AllocationGatewaySyncResult.java new file mode 100644 index 00000000..aeaa2ce5 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/result/AllocationGatewaySyncResult.java @@ -0,0 +1,17 @@ +package cn.bootx.platform.daxpay.service.core.payment.allocation.result; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 分账网关同步结果 + * @author xxm + * @since 2024/4/15 + */ +@Data +@Accessors(chain = true) +@Schema(title = "分账网关同步结果") +public class AllocationGatewaySyncResult { + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java index 37503ad2..7f6a8e72 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -1,11 +1,13 @@ package cn.bootx.platform.daxpay.service.core.payment.allocation.service; import cn.bootx.platform.common.core.exception.DataNotExistException; +import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationResetParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.result.allocation.AllocationResult; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; @@ -50,6 +52,8 @@ public class AllocationService { private final AllocationOrderService allocationOrderService; + private final AllocationOrderDetailManager allocationOrderDetailManager; + /** * 开启分账, 使用分账组进行分账 */ @@ -99,6 +103,34 @@ public class AllocationService { .setStatus(order.getStatus()); } + /** + * 重新分账 + */ + public void resetAllocation(AllocationResetParam param){ + AllocationOrder allocationOrder; + if (Objects.nonNull(param.getOrderId())){ + allocationOrder = allocationOrderManager.findById(param.getOrderId()) + .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); + } else { + allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) + .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); + } + List details = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); + + // 创建分账策略并初始化 + AbsAllocationStrategy allocationStrategy = AllocationFactory.create(allocationOrder.getChannel()); + allocationStrategy.initParam(allocationOrder, details); + + // 分账预处理 + allocationStrategy.doBeforeHandler(); + try { + // 重复分账处理 + allocationStrategy.allocation(); + } catch (Exception e) { + // 失败 + } + } + /** * 分账完结 */ @@ -111,10 +143,11 @@ public class AllocationService { allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); } + List details = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); // 创建分账策略并初始化 AbsAllocationStrategy allocationStrategy = AllocationFactory.create(allocationOrder.getChannel()); - allocationStrategy.initParam(allocationOrder, null); + allocationStrategy.initParam(allocationOrder, details); // 分账完结预处理 allocationStrategy.doBeforeHandler(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java index 16859021..e5fe9998 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java @@ -67,7 +67,7 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy { */ @Override public void finish() { - aliPayAllocationService.finish(this.getAllocationOrder()); + aliPayAllocationService.finish(this.getAllocationOrder(), this.getAllocationOrderDetails()); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java index ebd649d7..0a7e40a9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java @@ -57,7 +57,7 @@ public class WeChatPayAllocationStrategy extends AbsAllocationStrategy { */ @Override public void allocation() { - weChatPayAllocationService.allocation(getAllocationOrder(), getAllocationOrderDetails(), weChatPayConfig); + weChatPayAllocationService.allocation(getAllocationOrder(), this.getAllocationOrderDetails(), weChatPayConfig); } /** @@ -65,7 +65,7 @@ public class WeChatPayAllocationStrategy extends AbsAllocationStrategy { */ @Override public void finish() { - weChatPayAllocationService.finish(getAllocationOrder(), weChatPayConfig); + weChatPayAllocationService.finish(getAllocationOrder(), this.getAllocationOrderDetails(), weChatPayConfig); } -- Gitee From 22d1dd5bf30b76e95a7de8f39223680ce48b6012 Mon Sep 17 00:00:00 2001 From: bootx Date: Mon, 15 Apr 2024 23:11:48 +0800 Subject: [PATCH 41/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 5 +++-- .../allocation/AllocationOrderController.java | 10 ++++++++++ .../alipay/service/AliPayAllocationService.java | 10 ++++++++-- .../wechat/service/WeChatPayAllocationService.java | 2 ++ .../order/allocation/entity/AllocationOrderDetail.java | 8 ++++++++ .../payment/allocation/service/AllocationService.java | 8 +++++++- 6 files changed, 38 insertions(+), 5 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index dd85931b..f515fcd7 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -8,12 +8,13 @@ - [x] 管理 - [x] 绑定 - [x] 默认分账组 -- [ ] 分账订单管理 +- [x] 分账订单管理 - [x] 订单创建 - [x] 发起分账 - - [ ] 分账完结 + - [x] 分账完结 - [x] 分账处理 - [x] 发起分账 + - [ ] 分账同步 - [x] 修复创建支付订单报错时, 订单保存数据不完整 2.0.6: 分账完善和去除组合支付 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index 77173adb..07b8d6c1 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -7,6 +7,7 @@ import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.daxpay.param.pay.AllocationSyncParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; +import cn.bootx.platform.daxpay.param.pay.allocation.AllocationResetParam; import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationSyncService; @@ -87,4 +88,13 @@ public class AllocationOrderController { allocationService.finish(param); return Res.ok(); } + + @Operation(summary = "分账重试") + @PostMapping("/retry") + public ResResult retryAllocation(Long id){ + AllocationResetParam param = new AllocationResetParam(); + param.setOrderId(id); + allocationService.retryAllocation(param); + return Res.ok(); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index b8e4e889..bb6f0652 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -85,7 +85,6 @@ public class AliPayAllocationService { }) .collect(Collectors.toList()); model.setRoyaltyParameters(royaltyParameters); - AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model); this.verifyErrorMsg(response); } @@ -104,7 +103,14 @@ public class AliPayAllocationService { // 验证 this.verifyErrorMsg(response); List royaltyDetailList = response.getRoyaltyDetailList(); - System.out.println(royaltyDetailList); + + // 转换成通用的明细详情 + for (RoyaltyDetail royaltyDetail : royaltyDetailList) { + System.out.println(royaltyDetail); + System.out.println(royaltyDetail.getState()); + System.out.println(royaltyDetail.getDetailId()); + + } } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index d95fd355..9b9ffc01 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -8,6 +8,7 @@ import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationO import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.ijpay.core.enums.SignType; import com.ijpay.core.kit.WxPayKit; @@ -107,6 +108,7 @@ public class WeChatPayAllocationService { String xmlResult = WxPayApi.profitSharingQuery(params); Map result = WxPayKit.xmlToMap(xmlResult); this.verifyErrorMsg(result); + JSONUtil.parse(result.get("receivers")); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java index aa48abc9..be85545d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -61,6 +61,14 @@ public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFun @DbColumn(comment = "状态") private String status; + /** 错误代码 */ + @DbColumn(comment = "错误代码") + private String errorCode; + + /** 错误原因 */ + @DbColumn(comment = "错误原因") + private String errorMsg; + /** * 转换 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java index 7f6a8e72..89b8db97 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationService.java @@ -7,6 +7,7 @@ import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationResetParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; import cn.bootx.platform.daxpay.result.allocation.AllocationResult; +import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; @@ -96,6 +97,11 @@ public class AllocationService { order.setStatus(AllocationStatusEnum.PARTIAL_FAILED.getCode()) .setErrorMsg(e.getMessage()); } + // 网关分账号 + String gatewayNo = PaymentContextLocal.get() + .getAllocationInfo() + .getGatewayNo(); + order.setGatewayAllocationNo(gatewayNo); allocationOrderManager.updateById(order); return new AllocationResult().setOrderId(order.getId()) @@ -106,7 +112,7 @@ public class AllocationService { /** * 重新分账 */ - public void resetAllocation(AllocationResetParam param){ + public void retryAllocation(AllocationResetParam param){ AllocationOrder allocationOrder; if (Objects.nonNull(param.getOrderId())){ allocationOrder = allocationOrderManager.findById(param.getOrderId()) -- Gitee From b3594d08fbfb51dcc8fb71c6738cf25ad3b497c4 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Tue, 16 Apr 2024 20:47:24 +0800 Subject: [PATCH 42/45] =?UTF-8?q?feat=20=E5=88=86=E8=B4=A6=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 12 +- .../allocation/AllocationOrderController.java | 4 +- .../code/AllocationDetailResultEnum.java | 22 ++++ .../code/AllocationOrderResultEnum.java | 23 ++++ ...um.java => AllocationOrderStatusEnum.java} | 18 ++- .../code/PayOrderAllocationStatusEnum.java | 20 +++ .../daxpay/result/pay/SyncResult.java | 4 +- .../PayGatewayNoticeController.java | 38 ++++++ .../daxpay/service/code/AliPayCode.java | 11 ++ .../daxpay/service/code/WeChatPayCode.java | 3 + .../service/AliPayAllocationService.java | 67 +++++++--- .../WeChatPayAllocationReceiverService.java | 2 +- .../service/WeChatPayAllocationService.java | 52 +++++++- .../allocation/entity/AllocationOrder.java | 20 +-- .../entity/AllocationOrderDetail.java | 16 ++- .../service/AllocationOrderService.java | 15 ++- .../core/order/pay/builder/PayBuilder.java | 8 +- .../core/order/pay/entity/PayOrder.java | 4 +- .../factory/AllocationSyncFactory.java | 39 ------ .../allocation/service/AllocationService.java | 116 ++++++++++++++++-- .../service/AllocationSyncService.java | 50 -------- .../allocation/AliPayAllocationStrategy.java | 8 ++ .../WeChatPayAllocationStrategy.java | 9 +- .../core/payment/pay/service/PayService.java | 9 -- .../AliPayAllocationSyncStrategy.java | 44 ------- .../WechatPayAllocationSyncStrategy.java | 45 ------- .../AllocationGroupReceiverResult.java | 2 + .../wechat/WeChatPayAllocationReceiver.java | 63 ++++++++++ .../allocation/AllocationOrderDetailDto.java | 25 +++- .../order/allocation/AllocationOrderDto.java | 22 ++-- .../service/dto/order/pay/PayOrderDto.java | 4 +- .../service/func/AbsAllocationStrategy.java | 5 + .../func/AbsAllocationSyncStrategy.java | 33 ----- .../src/main/resources/application-dev.yml | 4 +- 34 files changed, 500 insertions(+), 317 deletions(-) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationDetailResultEnum.java create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderResultEnum.java rename daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/{AllocationStatusEnum.java => AllocationOrderStatusEnum.java} (30%) create mode 100644 daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayOrderAllocationStatusEnum.java create mode 100644 daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/PayGatewayNoticeController.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/factory/AllocationSyncFactory.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayAllocationReceiver.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java diff --git a/_doc/Task.md b/_doc/Task.md index f515fcd7..06474bc1 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -14,10 +14,11 @@ - [x] 分账完结 - [x] 分账处理 - [x] 发起分账 - - [ ] 分账同步 + - [x] 分账同步 - [x] 修复创建支付订单报错时, 订单保存数据不完整 +- [x] 收银台演示支持传输分账标识 -2.0.6: 分账完善和去除组合支付 +2.0.6: 去除组合支付, 一系列代码优化 - [ ] 去除组合支付和场景,降低逻辑的的复杂度 - [ ] 退款场景 - [ ] 关闭支付订单 @@ -26,17 +27,20 @@ - [ ] 支付和退款回调 - [ ] 去除现金支付和储值卡支付方式 - [ ] 三方支付外部订单号规则优化: 支付P、退款R、分账A,根据环境加前缀:DEV_、DEMO_、PRE_ -- [ ] 资金流水优化 +- [ ] 资金流水优化(去除) +- [ ] 金额显示统一使用元 + +2.0.7: 分账完善 - [ ] 支持分账组分账和自己传接收方进行分账 - [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 - [ ] 分账接收方管理提供接口调用 - [ ] 分账情况查询, 分账结果/剩余可分账金额 - [ ] 分账回调处理 - [ ] 分账组管理提供接口调用 -- [ ] 对账回退及退款 - [ ] 分账通知 2.0.x 版本内容 +- [ ] 对账回退及退款 - [ ] 统计报表功能 - [ ] 微信新增V3版本接口 - [ ] 付款码支付自动路由到V2接口 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index 07b8d6c1..fa8f7949 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -10,7 +10,6 @@ import cn.bootx.platform.daxpay.param.pay.allocation.AllocationFinishParam; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationResetParam; import cn.bootx.platform.daxpay.service.core.order.allocation.service.AllocationOrderService; import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationService; -import cn.bootx.platform.daxpay.service.core.payment.allocation.service.AllocationSyncService; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; import cn.bootx.platform.daxpay.service.param.order.AllocationOrderQuery; @@ -37,7 +36,6 @@ public class AllocationOrderController { private final AllocationOrderService allocationOrderService; - private final AllocationSyncService allocationSyncService; private final AllocationService allocationService; @Operation(summary = "分页") @@ -76,7 +74,7 @@ public class AllocationOrderController { public ResResult sync(Long id){ AllocationSyncParam param = new AllocationSyncParam(); param.setAllocationId(id); - allocationSyncService.sync(param); + allocationService.sync(param); return Res.ok(); } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationDetailResultEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationDetailResultEnum.java new file mode 100644 index 00000000..3d1afc2d --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationDetailResultEnum.java @@ -0,0 +1,22 @@ +package cn.bootx.platform.daxpay.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付分账明细处理结果 + * @author xxm + * @since 2024/4/16 + */ +@Getter +@AllArgsConstructor +public enum AllocationDetailResultEnum { + + PENDING("pending", "待分账"), + SUCCESS("success", "分账成功"), + FAIL("fail", "分账失败"), + ; + + private final String code; + private final String name; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderResultEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderResultEnum.java new file mode 100644 index 00000000..3429efa4 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderResultEnum.java @@ -0,0 +1,23 @@ +package cn.bootx.platform.daxpay.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付分账订单处理结果 + * @author xxm + * @since 2024/4/16 + */ +@Getter +@AllArgsConstructor +public enum AllocationOrderResultEnum { + + ALL_PENDING("all_pending", "全部成功"), + ALL_SUCCESS("all_success", "全部成功"), + PART_SUCCESS("part_success", "部分成功"), + ALL_FAILED("all_failed", "全部失败"), + ; + + private final String code; + private final String name; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderStatusEnum.java similarity index 30% rename from daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java rename to daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderStatusEnum.java index acb85e31..4a55531d 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationStatusEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/AllocationOrderStatusEnum.java @@ -10,18 +10,14 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum AllocationStatusEnum { +public enum AllocationOrderStatusEnum { - // 待分账 - WAITING("waiting", "待分账"), - PARTIAL_PROCESSING("partial_processing", "分账处理中"), - PARTIAL_SUCCESS("partial_success", "部分分账完成"), - FINISH_PROCESSING("finish_processing", "分账完结处理中"), - FINISH_SUCCESS("finish_success", "分账完成"), - PARTIAL_FAILED("partial_failed", "部分分账完成"), - FINISH_FAILED("finish_failed", "分账失败"), - CLOSED("closed", "分账关闭"), - UNKNOWN("unknown", "分账状态未知"); + ALLOCATION_PROCESSING("allocation_processing", "分账处理中"), + ALLOCATION_END("allocation_end", "分账完成"), + ALLOCATION_FAILED("allocation_failed", "分账失败"), + FINISH("finish", "完结"), + FINISH_FAILED("finish_failed", "完结失败"), + ; final String code; final String name; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayOrderAllocationStatusEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayOrderAllocationStatusEnum.java new file mode 100644 index 00000000..ddb3bbd4 --- /dev/null +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayOrderAllocationStatusEnum.java @@ -0,0 +1,20 @@ +package cn.bootx.platform.daxpay.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付订单分账状态 + * @author xxm + * @since 2024/4/16 + */ +@Getter +@AllArgsConstructor +public enum PayOrderAllocationStatusEnum { + WAITING("waiting", "待分账"), + ALLOCATION("allocation", "已分账"), + ; + + final String code; + final String name; +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java index 8dc8a343..b79d34d6 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.result.pay; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import cn.bootx.platform.daxpay.code.RefundSyncStatusEnum; import cn.bootx.platform.daxpay.code.PaySyncStatusEnum; import cn.bootx.platform.daxpay.result.CommonResult; @@ -26,7 +26,7 @@ public class SyncResult extends CommonResult { * 支付网关同步状态 * @see PaySyncStatusEnum * @see RefundSyncStatusEnum - * @see AllocationStatusEnum + * @see AllocationOrderStatusEnum */ @Schema(description = "支付网关同步状态") private String gatewayStatus = FAIL.getCode(); diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/PayGatewayNoticeController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/PayGatewayNoticeController.java new file mode 100644 index 00000000..5e594a96 --- /dev/null +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/PayGatewayNoticeController.java @@ -0,0 +1,38 @@ +package cn.bootx.platform.daxpay.gateway.controller; + +import cn.bootx.platform.common.core.annotation.IgnoreAuth; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * 网关消息通知 + * @author xxm + * @since 2024/4/16 + */ +@IgnoreAuth +@Tag(name = "三方支付网关消息通知") +@RestController +@RequestMapping("/gateway/notice") +@RequiredArgsConstructor +public class PayGatewayNoticeController { + + @Operation(summary = "支付宝消息通知") + @PostMapping("/alipay") + public String aliPayNotice() { + return "success"; + } + + @Operation(summary = "微信消息通知") + @PostMapping("/wechat") + public Map wechatPayNotice() { + return new HashMap<>(); + } +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java index 2eddbdee..bb029961 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/AliPayCode.java @@ -105,4 +105,15 @@ public interface AliPayCode { /** 分账金额超过最大可分账金额 */ String ALLOC_AMOUNT_VALIDATE_ERROR = "ACQ.ALLOC_AMOUNT_VALIDATE_ERROR"; + /** 分账 进行中 */ + String ALLOC_PROCESSING = "PROCESSING"; + /** 分账 成功 */ + String ALLOC_SUCCESS = "SUCCESS"; + /** 分账 失败 */ + String ALLOC_FAIL = "FAIL"; + + /** 异步分账 */ + String ALLOC_ASYNC = "ASYNC"; + /** 同步分账 */ + String ALLOC_SYNC = "SYNC"; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java index ae402ac4..5b38fb9f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/code/WeChatPayCode.java @@ -146,4 +146,7 @@ public interface WeChatPayCode { /** 个人openid */ String PERSONAL_OPENID = "PERSONAL_OPENID"; + /** 获取分账订单明细 */ + String ALLOC_RECEIVERS = "receivers"; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java index bb6f0652..4da4390d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPayAllocationService.java @@ -1,10 +1,14 @@ package cn.bootx.platform.daxpay.service.core.channel.alipay.service; +import cn.bootx.platform.common.core.function.CollectorsFunction; +import cn.bootx.platform.common.mybatisplus.base.MpIdEntity; +import cn.bootx.platform.daxpay.code.AllocationDetailResultEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.AliPayCode; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; import com.alipay.api.AlipayResponse; import com.alipay.api.domain.*; @@ -17,8 +21,12 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -40,9 +48,10 @@ public class AliPayAllocationService { AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); - model.setRoyaltyMode("async"); + model.setRoyaltyMode(AliPayCode.ALLOC_ASYNC); - // 分账子参数 + // 分账子参数 根据Id排序 + orderDetails.sort(Comparator.comparing(MpIdEntity::getId)); List royaltyParameters = orderDetails.stream() .map(o -> { OpenApiRoyaltyDetailInfoPojo infoPojo = new OpenApiRoyaltyDetailInfoPojo(); @@ -69,13 +78,14 @@ public class AliPayAllocationService { AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel(); model.setOutRequestNo(String.valueOf(allocationOrder.getOrderNo())); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); - model.setRoyaltyMode("async"); + model.setRoyaltyMode(AliPayCode.ALLOC_ASYNC); // 分账完结参数 SettleExtendParams extendParams = new SettleExtendParams(); extendParams.setRoyaltyFinish("true"); model.setExtendParams(extendParams); - // 分账子参数 + // 分账子参数 根据Id排序 + orderDetails.sort(Comparator.comparing(MpIdEntity::getId)); List royaltyParameters = orderDetails.stream() .map(o -> { OpenApiRoyaltyDetailInfoPojo infoPojo = new OpenApiRoyaltyDetailInfoPojo(); @@ -90,10 +100,10 @@ public class AliPayAllocationService { } /** - * 分账状态查询 + * 分账状态同步 */ @SneakyThrows - public void queryStatus(AllocationOrder allocationOrder){ + public void sync(AllocationOrder allocationOrder, List allocationOrderDetails){ AlipayTradeOrderSettleQueryModel model = new AlipayTradeOrderSettleQueryModel(); model.setTradeNo(allocationOrder.getGatewayPayOrderNo()); model.setOutRequestNo(allocationOrder.getOrderNo()); @@ -102,24 +112,25 @@ public class AliPayAllocationService { AlipayTradeOrderSettleQueryResponse response = AliPayApi.execute(request); // 验证 this.verifyErrorMsg(response); + Map detailMap = allocationOrderDetails.stream() + .collect(Collectors.toMap(AllocationOrderDetail::getReceiverAccount, Function.identity(), CollectorsFunction::retainLatest)); List royaltyDetailList = response.getRoyaltyDetailList(); - // 转换成通用的明细详情 - for (RoyaltyDetail royaltyDetail : royaltyDetailList) { - System.out.println(royaltyDetail); - System.out.println(royaltyDetail.getState()); - System.out.println(royaltyDetail.getDetailId()); - + for (RoyaltyDetail receiver : royaltyDetailList) { + AllocationOrderDetail detail = detailMap.get(receiver.getTransIn()); + if (Objects.nonNull(detail)) { + detail.setResult(this.getDetailResultEnum(receiver.getState()).getCode()); + detail.setErrorCode(receiver.getErrorCode()); + detail.setErrorMsg(receiver.getErrorDesc()); + // 如果是完成, 更新时间 + if (AllocationDetailResultEnum.SUCCESS.getCode().equals(detail.getResult())){ + LocalDateTime finishTime = LocalDateTimeUtil.of(receiver.getExecuteDt()); + detail.setFinishTime(finishTime); + } + } } } - /** - * 分账剩余金额查询 - */ - public void queryAmount(AllocationOrder allocationOrder){ - - } - /** * 验证错误信息 */ @@ -129,8 +140,24 @@ public class AliPayAllocationService { if (StrUtil.isBlank(errorMsg)) { errorMsg = alipayResponse.getMsg(); } - log.error("分账接收方处理失败 {}", errorMsg); + log.error("分账处理失败 {}", errorMsg); throw new PayFailureException(errorMsg); } } + + /** + * 转换支付宝分账类型到系统中统一的 + */ + private AllocationDetailResultEnum getDetailResultEnum (String result){ + // 进行中 + if(Objects.equals(AliPayCode.ALLOC_PROCESSING, result)){ + return AllocationDetailResultEnum.PENDING; + } + // 成功 + if(Objects.equals(AliPayCode.ALLOC_SUCCESS, result)){ + return AllocationDetailResultEnum.SUCCESS; + } + // 失败 + return AllocationDetailResultEnum.FAIL; + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java index 2828334b..11bc91bb 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationReceiverService.java @@ -38,7 +38,7 @@ public class WeChatPayAllocationReceiverService { public boolean validation(AllocationReceiver allocationReceiver){ List list = Arrays.asList(WX_MERCHANT.getCode(), WX_MERCHANT.getCode()); String receiverType = allocationReceiver.getReceiverType(); - return !list.contains(receiverType); + return list.contains(receiverType); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java index 9b9ffc01..97c8dbf9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayAllocationService.java @@ -1,12 +1,19 @@ package cn.bootx.platform.daxpay.service.core.channel.wechat.service; +import cn.bootx.platform.common.core.function.CollectorsFunction; +import cn.bootx.platform.common.mybatisplus.base.MpIdEntity; +import cn.bootx.platform.daxpay.code.AllocationDetailResultEnum; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.WeChatPayCode; import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; +import cn.bootx.platform.daxpay.service.dto.channel.wechat.WeChatPayAllocationReceiver; import cn.hutool.core.codec.Base64; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.lang.TypeReference; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; @@ -21,8 +28,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.io.ByteArrayInputStream; +import java.time.LocalDateTime; +import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -45,6 +56,7 @@ public class WeChatPayAllocationService { description = "分账"; } String finalDescription = description; + orderDetails.sort(Comparator.comparing(MpIdEntity::getId)); List list = orderDetails.stream().map(o->{ AllocationReceiverTypeEnum receiverTypeEnum = AllocationReceiverTypeEnum.findByCode(o.getReceiverType()); return ReceiverModel.builder() @@ -75,7 +87,7 @@ public class WeChatPayAllocationService { /** * 完成分账 */ - public void finish(AllocationOrder allocationOrder, List allocationOrderDetails, WeChatPayConfig config){ + public void finish(AllocationOrder allocationOrder, WeChatPayConfig config){ Map params = ProfitSharingModel.builder() .mch_id(config.getWxMchId()) .appid(config.getWxAppId()) @@ -94,9 +106,9 @@ public class WeChatPayAllocationService { } /** - * 查询分账状态 + * 同步分账状态 */ - public void queryStatus(AllocationOrder allocationOrder, WeChatPayConfig config){ + public void sync(AllocationOrder allocationOrder, List allocationOrderDetails, WeChatPayConfig config){ // 不要传输AppId参数, 否则会失败 Map params = ProfitSharingModel.builder() .mch_id(config.getWxMchId()) @@ -108,7 +120,23 @@ public class WeChatPayAllocationService { String xmlResult = WxPayApi.profitSharingQuery(params); Map result = WxPayKit.xmlToMap(xmlResult); this.verifyErrorMsg(result); - JSONUtil.parse(result.get("receivers")); + String json = result.get(WeChatPayCode.ALLOC_RECEIVERS); + List receivers = JSONUtil.toBean(json, new TypeReference>() {}, false); + Map detailMap = allocationOrderDetails.stream() + .collect(Collectors.toMap(AllocationOrderDetail::getReceiverAccount, Function.identity(), CollectorsFunction::retainLatest)); + // 根据明细更新订单明细内容 + for (WeChatPayAllocationReceiver receiver : receivers) { + AllocationOrderDetail detail = detailMap.get(receiver.getAccount()); + if (Objects.nonNull(detail)){ + detail.setResult(this.getDetailResultEnum(receiver.getResult()).getCode()); + detail.setErrorMsg(receiver.getFailReason()); + // 如果是完成, 更新时间 + if (AllocationDetailResultEnum.SUCCESS.getCode().equals(detail.getResult())){ + LocalDateTime finishTime = LocalDateTimeUtil.parse(receiver.getFinishTime(), DatePattern.PURE_DATETIME_PATTERN); + detail.setFinishTime(finishTime); + } + } + } } @@ -127,4 +155,20 @@ public class WeChatPayAllocationService { throw new PayFailureException(errorMsg); } } + + /** + * 转换微信分账类型到系统中统一的 + */ + private AllocationDetailResultEnum getDetailResultEnum (String result){ + // 进行中 + if(Objects.equals("PENDING", result)){ + return AllocationDetailResultEnum.PENDING; + } + // 成功 + if(Objects.equals("SUCCESS", result)){ + return AllocationDetailResultEnum.SUCCESS; + } + // 失败 + return AllocationDetailResultEnum.FAIL; + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index abbebefc..5e45444b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -2,7 +2,8 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderResultEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDto; @@ -18,8 +19,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.time.LocalDateTime; - /** * 分账订单 * @author xxm @@ -91,11 +90,18 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< /** * 状态 - * @see AllocationStatusEnum + * @see AllocationOrderStatusEnum */ @DbColumn(comment = "状态") private String status; + /** + * 分账处理结果 + * @see AllocationOrderResultEnum + */ + @DbColumn(comment = "分账处理结果") + private String result; + /** * 错误原因 */ @@ -103,12 +109,6 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< @TableField(updateStrategy = FieldStrategy.ALWAYS) private String errorMsg; - /** - * 完成时间 - */ - @DbColumn(comment = "完成时间") - private LocalDateTime finishTime; - /** * 转换 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java index be85545d..71981616 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrderDetail.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.core.order.allocation.entity; import cn.bootx.platform.common.core.annotation.EncryptionField; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.AllocationDetailResultEnum; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.convert.AllocationConvert; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; @@ -13,6 +14,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + /** * 分账订单明细 * @author xxm @@ -57,9 +60,12 @@ public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFun @DbColumn(comment = "接收方姓名") private String receiverName; - /** 状态 */ - @DbColumn(comment = "状态") - private String status; + /** + * 分账结果 + * @see AllocationDetailResultEnum + */ + @DbColumn(comment = "分账结果") + private String result; /** 错误代码 */ @DbColumn(comment = "错误代码") @@ -69,6 +75,10 @@ public class AllocationOrderDetail extends MpBaseEntity implements EntityBaseFun @DbColumn(comment = "错误原因") private String errorMsg; + /** 分账完成时间 */ + @DbColumn(comment = "分账完成时间") + private LocalDateTime finishTime; + /** * 转换 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java index c4bd59d1..1fa37a63 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/service/AllocationOrderService.java @@ -6,14 +6,17 @@ import cn.bootx.platform.common.core.rest.dto.LabelValue; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.core.util.ResultConvertUtil; import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.daxpay.code.AllocationDetailResultEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.code.PayOrderAllocationStatusEnum; import cn.bootx.platform.daxpay.param.pay.allocation.AllocationStartParam; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderDetailManager; import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrderDetail; import cn.bootx.platform.daxpay.service.core.order.allocation.entity.OrderAndDetail; +import cn.bootx.platform.daxpay.service.core.order.pay.dao.PayOrderManager; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; import cn.bootx.platform.daxpay.service.dto.allocation.AllocationGroupReceiverResult; import cn.bootx.platform.daxpay.service.dto.order.allocation.AllocationOrderDetailDto; @@ -43,6 +46,8 @@ public class AllocationOrderService { private final AllocationOrderManager allocationOrderManager; private final AllocationOrderDetailManager allocationOrderDetailManager; + private final PayOrderManager payOrderManager; + /** * 获取可以分账的通道 @@ -106,8 +111,8 @@ public class AllocationOrderService { AllocationOrderDetail detail = new AllocationOrderDetail(); detail.setAllocationId(orderId) .setReceiverId(o.getId()) - .setStatus(AllocationStatusEnum.WAITING.getCode()) .setAmount(amount) + .setResult(AllocationDetailResultEnum.PENDING.getCode()) .setRate(rate) .setReceiverType(o.getReceiverType()) .setReceiverName(o.getReceiverName()) @@ -128,10 +133,12 @@ public class AllocationOrderService { .setGatewayPayOrderNo(payOrder.getGatewayOrderNo()) .setOrderNo(String.valueOf(orderId)) .setDescription(param.getDescription()) - .setStatus(AllocationStatusEnum.WAITING.getCode()) + .setStatus(AllocationOrderStatusEnum.ALLOCATION_PROCESSING.getCode()) .setAmount(sumAmount); allocationOrder.setId(orderId); - // 保存 + // 更新支付订单分账状态 + payOrder.setAllocationStatus(PayOrderAllocationStatusEnum.ALLOCATION.getCode()); + payOrderManager.updateById(payOrder); // 因为加密后字段值会发生变更, 所以在保存前备份一下 List detailsBack = details.stream() .map(o -> { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java index f0c6a29a..6d61b08e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/builder/PayBuilder.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.core.order.pay.builder; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.code.PayOrderAllocationStatusEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; @@ -52,7 +53,7 @@ public class PayBuilder { .filter(PayChannelEnum.ASYNC_TYPE_CODE::contains) .findFirst(); // 构建支付订单对象 - return new PayOrder() + PayOrder payOrder = new PayOrder() .setBusinessNo(payParam.getBusinessNo()) .setTitle(payParam.getTitle()) .setStatus(PayStatusEnum.PROGRESS.getCode()) @@ -62,6 +63,11 @@ public class PayBuilder { .setCombinationPay(payParam.getPayChannels().size() > 1) .setAsyncPay(asyncPay.isPresent()) .setRefundableBalance(sumAmount); + // 设置分账状态 + if (payOrder.isAllocation()) { + payOrder.setAllocationStatus(PayOrderAllocationStatusEnum.WAITING.getCode()); + } + return payOrder; } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java index 658ebfed..9361b98f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java @@ -2,9 +2,9 @@ package cn.bootx.platform.daxpay.service.core.order.pay.entity; import cn.bootx.platform.common.core.function.EntityBaseFunction; import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; +import cn.bootx.platform.daxpay.code.PayOrderAllocationStatusEnum; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.core.order.pay.convert.PayOrderConvert; import cn.bootx.platform.daxpay.service.dto.order.pay.PayOrderDto; import cn.bootx.table.modify.annotation.DbColumn; @@ -83,7 +83,7 @@ public class PayOrder extends MpBaseEntity implements EntityBaseFunction new DataNotExistException("未查询到默认分账组")); } + List receiversByGroups = allocationGroupService.findReceiversByGroups(allocationGroup.getId()); // 创建分账单和明细并保存, 同时更新支付订单状态 使用事务 @@ -90,11 +98,11 @@ public class AllocationService { // 分账处理 allocationStrategy.allocation(); // 执行中 - order.setStatus(AllocationStatusEnum.PARTIAL_PROCESSING.getCode()) + order.setStatus(AllocationOrderStatusEnum.ALLOCATION_PROCESSING.getCode()) .setErrorMsg(null); } catch (Exception e) { // 失败 - order.setStatus(AllocationStatusEnum.PARTIAL_FAILED.getCode()) + order.setStatus(AllocationOrderStatusEnum.ALLOCATION_FAILED.getCode()) .setErrorMsg(e.getMessage()); } // 网关分账号 @@ -121,6 +129,14 @@ public class AllocationService { allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); } + // 需要是分账中分账中或者完成状态才能重新分账 + List list = Arrays.asList(AllocationOrderStatusEnum.ALLOCATION_END.getCode(), + AllocationOrderStatusEnum.ALLOCATION_FAILED.getCode(), + AllocationOrderStatusEnum.ALLOCATION_PROCESSING.getCode()); + if (!list.contains(allocationOrder.getStatus())){ + throw new PayFailureException("分账单状态错误"); + } + List details = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); // 创建分账策略并初始化 @@ -132,9 +148,15 @@ public class AllocationService { try { // 重复分账处理 allocationStrategy.allocation(); + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_PROCESSING.getCode()) + .setErrorMsg(null); + } catch (Exception e) { // 失败 + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_FAILED.getCode()) + .setErrorMsg(e.getMessage()); } + allocationOrderManager.updateById(allocationOrder); } /** @@ -149,8 +171,12 @@ public class AllocationService { allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) .orElseThrow(() -> new DataNotExistException("未查询到分账单信息")); } - List details = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); + // 只有分账结束后才可以完结 + if (!AllocationOrderStatusEnum.ALLOCATION_END.getCode().equals(allocationOrder.getStatus())){ + throw new PayFailureException("分账单状态错误"); + } + List details = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); // 创建分账策略并初始化 AbsAllocationStrategy allocationStrategy = AllocationFactory.create(allocationOrder.getChannel()); allocationStrategy.initParam(allocationOrder, details); @@ -158,20 +184,90 @@ public class AllocationService { // 分账完结预处理 allocationStrategy.doBeforeHandler(); try { - // 分账处理 + // 完结处理 allocationStrategy.finish(); - // 执行中 - allocationOrder.setStatus(AllocationStatusEnum.FINISH_PROCESSING.getCode()) + // 完结状态 + allocationOrder.setStatus(AllocationOrderStatusEnum.FINISH.getCode()) .setErrorMsg(null); } catch (Exception e) { // 失败 - allocationOrder.setStatus(AllocationStatusEnum.FINISH_FAILED.getCode()) + allocationOrder.setStatus(AllocationOrderStatusEnum.FINISH_FAILED.getCode()) .setErrorMsg(e.getMessage()); } + allocationOrderManager.updateById(allocationOrder); + } + + /** + * 分账同步, 开启一个新的事务, 不受外部抛出异常的影响 + */ + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public void sync(AllocationSyncParam param) { + // 获取分账订单 + AllocationOrder allocationOrder = null; + if (Objects.nonNull(param.getAllocationId())){ + allocationOrder = allocationOrderManager.findById(param.getAllocationId()) + .orElseThrow(() -> new DataNotExistException("分账单不存在")); + } + if (Objects.isNull(allocationOrder)){ + allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) + .orElseThrow(() -> new DataNotExistException("分账单不存在")); + } + List detailList = allocationOrderDetailManager.findAllByOrderId(allocationOrder.getId()); + // 获取分账策略 + AbsAllocationStrategy allocationStrategy = AllocationFactory.create(allocationOrder.getChannel()); + allocationStrategy.initParam(allocationOrder, detailList); + // 分账完结预处理 + allocationStrategy.doBeforeHandler(); + allocationStrategy.doSync(); + + // 根据订单明细更新订单的状态和处理结果 + this.updateOrderStatus(allocationOrder, detailList); + allocationOrderDetailManager.updateAllById(detailList); allocationOrderManager.updateById(allocationOrder); } + /** + * 根据订单明细更新订单的状态和处理结果, 如果订单是分账结束或失败, 不更新状态 + */ + private void updateOrderStatus(AllocationOrder allocationOrder, List details){ + // 如果是分账结束或失败, 不更新状态 + String status = allocationOrder.getStatus(); + // 判断明细状态. 获取成功和失败的 + long successCount = details.stream() + .map(AllocationOrderDetail::getResult) + .filter(AllocationDetailResultEnum.SUCCESS.getCode()::equals) + .count(); + long failCount = details.stream() + .map(AllocationOrderDetail::getResult) + .filter(AllocationDetailResultEnum.FAIL.getCode()::equals) + .count(); + + // 成功和失败都为0 进行中 + if (successCount == 0 && failCount == 0){ + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_PROCESSING.getCode()) + .setResult(AllocationOrderResultEnum.ALL_PENDING.getCode()); + } else if (failCount == details.size()){ + // 全部失败 + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_END.getCode()) + .setResult(AllocationOrderResultEnum.ALL_FAILED.getCode()); + } else if (successCount == details.size()){ + // 全部成功 + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_END.getCode()) + .setResult(AllocationOrderResultEnum.ALL_SUCCESS.getCode()); + } else { + // 部分成功 + allocationOrder.setStatus(AllocationOrderStatusEnum.ALLOCATION_END.getCode()) + .setResult(AllocationOrderResultEnum.PART_SUCCESS.getCode()); + } + // 如果是分账结束或失败, 状态复原 + List list = Arrays.asList(AllocationOrderStatusEnum.FINISH.getCode(), AllocationOrderStatusEnum.FINISH_FAILED.getCode()); + if (list.contains(status)){ + allocationOrder.setStatus(AllocationOrderStatusEnum.FINISH.getCode()) + .setResult(AllocationOrderResultEnum.ALL_SUCCESS.getCode()); + } + } + /** * 获取并检查支付订单 */ @@ -191,11 +287,9 @@ public class AllocationService { throw new PayFailureException("该订单不允许分账"); } // 判断分账状态 - if (Objects.equals(AllocationStatusEnum.FINISH_SUCCESS.getCode(), payOrder.getAllocationStatus())){ + if (Objects.equals(PayOrderAllocationStatusEnum.ALLOCATION.getCode(), payOrder.getAllocationStatus())){ throw new PayFailureException("该订单已分账完成"); } return payOrder; } - - } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java deleted file mode 100644 index 64c47a85..00000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/service/AllocationSyncService.java +++ /dev/null @@ -1,50 +0,0 @@ -package cn.bootx.platform.daxpay.service.core.payment.allocation.service; - -import cn.bootx.platform.common.core.exception.DataNotExistException; -import cn.bootx.platform.daxpay.param.pay.AllocationSyncParam; -import cn.bootx.platform.daxpay.result.pay.SyncResult; -import cn.bootx.platform.daxpay.service.core.order.allocation.dao.AllocationOrderManager; -import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; -import cn.bootx.platform.daxpay.service.core.payment.allocation.factory.AllocationSyncFactory; -import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Objects; - -/** - * 分账状态同步 - * @author xxm - * @since 2024/4/12 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class AllocationSyncService { - private final AllocationOrderManager allocationOrderManager; - - /** - * 支付同步, 开启一个新的事务, 不受外部抛出异常的影响 - */ - @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) - public SyncResult sync(AllocationSyncParam param) { - // 获取分账订单 - AllocationOrder allocationOrder = null; - if (Objects.nonNull(param.getAllocationId())){ - allocationOrder = allocationOrderManager.findById(param.getAllocationId()) - .orElseThrow(() -> new DataNotExistException("分账单不存在")); - } - if (Objects.isNull(allocationOrder)){ - allocationOrder = allocationOrderManager.findByAllocationNo(param.getAllocationNo()) - .orElseThrow(() -> new DataNotExistException("分账单不存在")); - } - // 获取分账策略 - AbsAllocationSyncStrategy allocationSyncStrategy = AllocationSyncFactory.create(allocationOrder.getChannel()); - allocationSyncStrategy.initPayParam(allocationOrder); - allocationSyncStrategy.doSyncStatus(); - return new SyncResult(); - } -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java index e5fe9998..a19125c3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/AliPayAllocationStrategy.java @@ -70,4 +70,12 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy { aliPayAllocationService.finish(this.getAllocationOrder(), this.getAllocationOrderDetails()); } + /** + * 同步状态 + */ + @Override + public void doSync() { + aliPayAllocationService.sync(this.getAllocationOrder(), this.getAllocationOrderDetails()); + } + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java index 0a7e40a9..4a704cd3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/allocation/strategy/allocation/WeChatPayAllocationStrategy.java @@ -65,8 +65,15 @@ public class WeChatPayAllocationStrategy extends AbsAllocationStrategy { */ @Override public void finish() { - weChatPayAllocationService.finish(getAllocationOrder(), this.getAllocationOrderDetails(), weChatPayConfig); + weChatPayAllocationService.finish(getAllocationOrder(), weChatPayConfig); } + /** + * 同步状态 + */ + @Override + public void doSync() { + weChatPayAllocationService.sync(this.getAllocationOrder(),this.getAllocationOrderDetails(),weChatPayConfig); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java index 36958043..31eec4ae 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayService.java @@ -7,7 +7,6 @@ import cn.bootx.platform.daxpay.param.pay.PayChannelParam; import cn.bootx.platform.daxpay.param.pay.PayParam; import cn.bootx.platform.daxpay.param.pay.SimplePayParam; import cn.bootx.platform.daxpay.result.pay.PayResult; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; import cn.bootx.platform.daxpay.service.common.context.PayLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.builder.PayBuilder; @@ -271,10 +270,6 @@ public class PayService { payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ - // 如果是是允许分账的订单, 设置为待分装 - if (payOrder.isAllocation()){ - payOrder.setAllocationStatus(AllocationStatusEnum.WAITING.getCode()); - } clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); @@ -373,10 +368,6 @@ public class PayService { payOrderExtraManager.update(payOrderExtra); // 如果支付完成 发送通知 if (Objects.equals(payOrder.getStatus(), SUCCESS.getCode())){ - // 如果是是允许分账的订单, 设置为待分装 - if (payOrder.isAllocation()){ - payOrder.setAllocationStatus(AllocationStatusEnum.WAITING.getCode()); - } clientNoticeService.registerPayNotice(payOrder, payOrderExtra, payInfo.getPayChannelOrders()); } return PayBuilder.buildPayResultByPayOrder(payOrder); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java deleted file mode 100644 index 7c3a5c0e..00000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/AliPayAllocationSyncStrategy.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation; - -import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.service.core.channel.alipay.entity.AliPayConfig; -import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayAllocationService; -import cn.bootx.platform.daxpay.service.core.channel.alipay.service.AliPayConfigService; -import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; - -/** - * 支付宝分账状态同步策略 - * @author xxm - * @since 2024/4/12 - */ -@Scope(SCOPE_PROTOTYPE) -@Component -@RequiredArgsConstructor -public class AliPayAllocationSyncStrategy extends AbsAllocationSyncStrategy { - private final AliPayConfigService aliPayConfigService; - - private final AliPayAllocationService aliPayAllocationService; - /** - * 策略标识 - */ - @Override - public PayChannelEnum getChannel() { - return PayChannelEnum.ALI; - } - - /** - * 同步状态 - */ - @Override - public void doSyncStatus() { - AliPayConfig aliPayConfig = aliPayConfigService.getAndCheckConfig(); - aliPayConfigService.initConfig(aliPayConfig); - aliPayAllocationService.queryStatus(this.getAllocationOrder()); - } - -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java deleted file mode 100644 index cd4e8bb7..00000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/strategy/allocation/WechatPayAllocationSyncStrategy.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.bootx.platform.daxpay.service.core.payment.sync.strategy.allocation; - -import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.service.core.channel.wechat.entity.WeChatPayConfig; -import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayAllocationService; -import cn.bootx.platform.daxpay.service.core.channel.wechat.service.WeChatPayConfigService; -import cn.bootx.platform.daxpay.service.func.AbsAllocationSyncStrategy; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; - -/** - * 微信分账状态同步策略 - * @author xxm - * @since 2024/4/12 - */ -@Scope(SCOPE_PROTOTYPE) -@Component -@RequiredArgsConstructor -public class WechatPayAllocationSyncStrategy extends AbsAllocationSyncStrategy { - - private final WeChatPayAllocationService weChatPayAllocationService; - - private final WeChatPayConfigService weChatPayConfigService; - - - /** - * 同步状态 - */ - @Override - public void doSyncStatus() { - WeChatPayConfig wechatPayConfig = weChatPayConfigService.getAndCheckConfig(); - weChatPayAllocationService.queryStatus(this.getAllocationOrder(),wechatPayConfig); - } - - /** - * 策略标识 - */ - @Override - public PayChannelEnum getChannel() { - return PayChannelEnum.WECHAT; - } -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java index 6966f7e4..70dfc84e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationGroupReceiverResult.java @@ -2,6 +2,7 @@ package cn.bootx.platform.daxpay.service.dto.allocation; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.daxpay.code.AllocationRelationTypeEnum; +import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -37,6 +38,7 @@ public class AllocationGroupReceiverResult { @Schema(description = "接收方账号") + @SensitiveInfo private String receiverAccount; /** 接收方姓名 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayAllocationReceiver.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayAllocationReceiver.java new file mode 100644 index 00000000..ab8b59d9 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/channel/wechat/WeChatPayAllocationReceiver.java @@ -0,0 +1,63 @@ +package cn.bootx.platform.daxpay.service.dto.channel.wechat; + +import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; +import cn.hutool.core.annotation.Alias; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 微信分账单状态 + * @author xxm + * @since 2024/4/16 + */ +@Data +@Accessors(chain = true) +public class WeChatPayAllocationReceiver { + + /** 分账金额 */ + private Integer amount; + + /** 分账描述 */ + private String description; + + /** + * 分账接收方类型 + * @see AllocationReceiverTypeEnum + */ + private String type; + + /** + * 分账接收方账号 + */ + private String account; + + /** + * 分账结果 + */ + private String result; + + /** + * 分账完成时间 yyyyMMddHHmmss + */ + @Alias("finish_time") + @JsonProperty("finish_time") + private String finishTime; + + /** + * 分账失败原因 + */ + @Alias("fail_reason") + @JsonProperty("fail_reason") + private String failReason; + + /** + * 分账明细单号 + */ + @Alias("detail_id") + @JsonProperty("detail_id") + private String detailId; + + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java index 3b330a8d..76f701f6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDetailDto.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.service.dto.order.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; +import cn.bootx.platform.daxpay.code.AllocationDetailResultEnum; import cn.bootx.platform.daxpay.code.AllocationReceiverTypeEnum; import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo; import io.swagger.v3.oas.annotations.media.Schema; @@ -8,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + /** * 分账订单详情 * @author xxm @@ -52,7 +55,23 @@ public class AllocationOrderDetailDto extends BaseDto { @Schema(description = "接收方姓名") private String receiverName; - /** 状态 */ - @Schema(description = "状态") - private String status; + /** + * 分账结果 + * @see AllocationDetailResultEnum + */ + @Schema(description = "分账结果") + private String result; + + /** 错误代码 */ + @Schema(description = "错误代码") + private String errorCode; + + /** 错误原因 */ + @Schema(description = "错误原因") + private String errorMsg; + + /** 分账完成时间 */ + @Schema(description = "分账完成时间") + private LocalDateTime finishTime; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java index 3d6bfcfc..629b9d20 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/allocation/AllocationOrderDto.java @@ -1,16 +1,13 @@ package cn.bootx.platform.daxpay.service.dto.order.allocation; import cn.bootx.platform.common.core.rest.dto.BaseDto; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; +import cn.bootx.platform.daxpay.code.AllocationOrderResultEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.time.LocalDateTime; - /** * 分账订单 * @author xxm @@ -78,22 +75,21 @@ public class AllocationOrderDto extends BaseDto { /** * 状态 - * @see AllocationStatusEnum + * @see AllocationOrderStatusEnum */ @Schema(description = "状态") private String status; + /** + * 分账处理结果 + * @see AllocationOrderResultEnum + */ + @Schema(description = "分账处理结果") + private String result; /** * 错误原因 */ @Schema(description = "错误原因") - @TableField(updateStrategy = FieldStrategy.ALWAYS) private String errorMsg; - /** - * 完成时间 - */ - @Schema(description = "完成时间") - private LocalDateTime finishTime; - } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index ea497acc..69993cc6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -3,7 +3,7 @@ package cn.bootx.platform.daxpay.service.dto.order.pay; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.code.AllocationStatusEnum; +import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -71,7 +71,7 @@ public class PayOrderDto extends BaseDto { /** * 分账状态 - * @see AllocationStatusEnum + * @see AllocationOrderStatusEnum */ @Schema(description = "分账状态") private String allocationStatus; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java index 911e459d..d21ab254 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationStrategy.java @@ -44,4 +44,9 @@ public abstract class AbsAllocationStrategy implements PayStrategy{ * 分账完结 */ public abstract void finish(); + + /** + * 同步状态 + */ + public abstract void doSync(); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java deleted file mode 100644 index 28fdc52a..00000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/func/AbsAllocationSyncStrategy.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.bootx.platform.daxpay.service.func; - -import cn.bootx.platform.daxpay.service.core.order.allocation.entity.AllocationOrder; -import lombok.Getter; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * 抽象的分账状态同步策略 - * @author xxm - * @since 2024/4/12 - */ -@Slf4j -@Getter -@Setter -public abstract class AbsAllocationSyncStrategy implements PayStrategy{ - - private AllocationOrder allocationOrder; - - /** - * 初始化参数 - */ - public void initPayParam(AllocationOrder allocationOrder) { - this.allocationOrder = allocationOrder; - } - - /** - * 同步状态 - */ - public abstract void doSyncStatus(); - - -} diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index 512e3626..6d6d2448 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -159,7 +159,7 @@ dax-pay: # 服务地址 server-url: http://localhost:9000 # 前端h5地址 - front-h5-url: http://localhost:5173/# + front-h5-url: http://pay1.bootx.cn/h5/# # 前端web地址 front-web-url: http://localhost:9000/# # 演示模块 @@ -167,7 +167,7 @@ dax-pay: # 网关地址 server-url: http://localhost:9000 # 前端h5地址 - front-h5-url: http://localhost:5173/# + front-h5-url: http://pay1.bootx.cn/h5/# # 签名秘钥 sign-secret: 123456 # 签名方式 -- Gitee From 9ed4ce17ae44046c8e2f0069255503672dfc4886 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Wed, 17 Apr 2024 18:06:23 +0800 Subject: [PATCH 43/45] =?UTF-8?q?build=20=E6=95=B0=E6=8D=AE=E6=9B=B4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config/sql/2.0.4/2.0.4.dax-pay.backup.sql | 3919 +++++++++++++++++ _config/sql/2.0.5/2.0.5.update.data.sql | 323 ++ _config/sql/2.0.5/2.0.5.update.table.sql | 103 + _doc/Task.md | 11 - .../allocation/AllocationOrderController.java | 6 +- .../AllocationReceiverController.java | 2 +- .../dto/allocation/AllocationReceiverDto.java | 1 + 7 files changed, 4350 insertions(+), 15 deletions(-) create mode 100644 _config/sql/2.0.4/2.0.4.dax-pay.backup.sql create mode 100644 _config/sql/2.0.5/2.0.5.update.data.sql create mode 100644 _config/sql/2.0.5/2.0.5.update.table.sql diff --git a/_config/sql/2.0.4/2.0.4.dax-pay.backup.sql b/_config/sql/2.0.4/2.0.4.dax-pay.backup.sql new file mode 100644 index 00000000..75b00753 --- /dev/null +++ b/_config/sql/2.0.4/2.0.4.dax-pay.backup.sql @@ -0,0 +1,3919 @@ +/* + Navicat Premium Data Transfer + + Source Server Type : MySQL + Source Server Version : 50743 + + Target Server Type : MySQL + Target Server Version : 50743 + File Encoding : 65001 + + Date: 26/03/2024 10:58:01 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for base_area +-- ---------------------------- +DROP TABLE IF EXISTS `base_area`; +CREATE TABLE `base_area` ( + `code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '区域名称', + `city_code` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '城市编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_city_code`(`city_code`) USING BTREE COMMENT '城市' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '县区表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_area +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_china_word +-- ---------------------------- +DROP TABLE IF EXISTS `base_china_word`; +CREATE TABLE `base_china_word` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `white` bit(1) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_china_word +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_city +-- ---------------------------- +DROP TABLE IF EXISTS `base_city`; +CREATE TABLE `base_city` ( + `code` char(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '城市编码', + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '城市名称', + `province_code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '省份编码', + PRIMARY KEY (`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '城市表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_city +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_data_result_sql +-- ---------------------------- +DROP TABLE IF EXISTS `base_data_result_sql`; +CREATE TABLE `base_data_result_sql` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `database_id` bigint(20) NULL DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `is_list` bit(1) NULL DEFAULT NULL, + `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_data_result_sql +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_dict +-- ---------------------------- +DROP TABLE IF EXISTS `base_dict`; +CREATE TABLE `base_dict` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dict +-- ---------------------------- +INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6); +INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4); +INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2); +INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2); +INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2); +INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2); +INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1); +INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3); +INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2); +INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1); +INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0); +INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0); +INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0); +INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据权限类型', b'1', '系统属性', '数据权限类型', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2023-11-28 23:14:24', 0, 4); +INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0); +INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1); +INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1); +INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0); +INSERT INTO `base_dict` VALUES (1744996611615039488, 'AsyncPayChannel', '异步支付通道', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:16:27', 1399985191002447872, '2024-01-10 16:16:27', 0, 0); +INSERT INTO `base_dict` VALUES (1744996845355212800, 'PayChannel', '支付通道', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:17:23', 1399985191002447872, '2024-01-10 16:17:23', 0, 0); +INSERT INTO `base_dict` VALUES (1744996913667842048, 'PayStatus', '支付状态', b'1', '支付', '', 1399985191002447872, '2024-01-10 16:17:39', 1399985191002447872, '2024-01-10 16:17:39', 0, 0); +INSERT INTO `base_dict` VALUES (1745086859116224512, 'PayWay', '支付方式', b'1', '支付', '', 1399985191002447872, '2024-01-10 22:15:04', 1399985191002447872, '2024-01-10 22:15:04', 0, 0); +INSERT INTO `base_dict` VALUES (1745109350333173760, 'PayCallbackStatus', '支付回调处理状态', b'1', '支付', '', 1399985191002447872, '2024-01-10 23:44:26', 1399985191002447872, '2024-01-10 23:44:26', 0, 0); +INSERT INTO `base_dict` VALUES (1745128986382667776, 'PayRepairSource', '支付修复来源', b'1', '支付', '', 1399985191002447872, '2024-01-11 01:02:28', 1399985191002447872, '2024-01-11 01:02:28', 0, 0); +INSERT INTO `base_dict` VALUES (1745134438772346880, 'PayRepairWay', '支付修复方式', b'1', '支付', '', 1399985191002447872, '2024-01-11 01:24:08', 1399985191002447872, '2024-01-11 01:24:08', 0, 0); +INSERT INTO `base_dict` VALUES (1745748188122554368, 'RefundStatus', '退款状态', b'1', '支付', '', 1399985191002447872, '2024-01-12 18:02:57', 1399985191002447872, '2024-02-09 21:22:52', 0, 1); +INSERT INTO `base_dict` VALUES (1746208645341917184, 'PaySyncStatus', '支付同步结果', b'1', '支付', '', 1399985191002447872, '2024-01-14 00:32:39', 1399985191002447872, '2024-01-14 00:32:39', 0, 0); +INSERT INTO `base_dict` VALUES (1749612665392541696, 'ReconcileTrade', '支付对账交易类型', b'1', '支付', '', 1399985191002447872, '2024-01-23 09:59:00', 1399985191002447872, '2024-03-01 23:31:32', 0, 1); +INSERT INTO `base_dict` VALUES (1751603996496453632, 'PaymentType', '支付系统行为类型', b'1', '支付', '支付系统中常见的操作类型, 如支付/退款/转账等', 1399985191002447872, '2024-01-28 21:51:51', 1399985191002447872, '2024-01-28 21:51:51', 0, 0); +INSERT INTO `base_dict` VALUES (1751613032260370432, 'PayCallbackType', '回调类型', b'1', '支付', '', 1399985191002447872, '2024-01-28 22:27:45', 1399985191002447872, '2024-01-28 22:27:45', 0, 0); +INSERT INTO `base_dict` VALUES (1752560153120428032, 'RefundSyncStatus', '退款同步状态', b'1', '支付', '', 1399985191002447872, '2024-01-31 13:11:16', 1399985191002447872, '2024-01-31 13:11:16', 0, 0); +INSERT INTO `base_dict` VALUES (1753047382185091072, 'RefundRepairWay', '退款修复方式', b'1', '支付', '', 1399985191002447872, '2024-02-01 21:27:21', 1399985191002447872, '2024-02-01 21:27:21', 0, 0); +INSERT INTO `base_dict` VALUES (1758881354618220544, 'WalletStatus', '钱包状态', b'1', '支付', '', 1399985191002447872, '2024-02-17 23:49:28', 1399985191002447872, '2024-02-17 23:49:28', 0, 0); +INSERT INTO `base_dict` VALUES (1759189874194481152, 'VoucherStatus', '储值卡状态', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:15:25', 1399985191002447872, '2024-02-18 20:15:25', 0, 0); +INSERT INTO `base_dict` VALUES (1759190066511708160, 'WalletRecordType', '钱包记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:16:11', 1399985191002447872, '2024-02-18 20:16:11', 0, 0); +INSERT INTO `base_dict` VALUES (1759190427897135104, 'VoucherRecordType', '储值卡记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:17:37', 1399985191002447872, '2024-02-18 20:17:37', 0, 0); +INSERT INTO `base_dict` VALUES (1759190780252225536, 'CashRecordType', '现金记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-18 20:19:01', 1399985191002447872, '2024-02-19 22:07:09', 0, 1); +INSERT INTO `base_dict` VALUES (1761434095349624832, 'ClientNoticeType', '客户消息通知类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 00:53:09', 1399985191002447872, '2024-02-25 00:53:09', 0, 0); +INSERT INTO `base_dict` VALUES (1761434264858226688, 'ClientNoticeSendType', '客户消息通知发送类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 00:53:49', 1399985191002447872, '2024-02-25 00:53:49', 0, 0); +INSERT INTO `base_dict` VALUES (1761581634023583744, 'AlipayRecordType', '支付宝流水记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 10:39:25', 1399985191002447872, '2024-02-25 10:39:25', 0, 0); +INSERT INTO `base_dict` VALUES (1761588314480300032, 'WechatPayRecordType', '微信支付流水记录类型', b'1', '支付', '', 1399985191002447872, '2024-02-25 11:05:58', 1399985191002447872, '2024-02-25 11:05:58', 0, 0); +INSERT INTO `base_dict` VALUES (1763588034467713024, 'ReconcileDiffType', '对账差异类型', b'1', '支付', '', 1399985191002447872, '2024-03-01 23:32:08', 1399985191002447872, '2024-03-01 23:32:08', 0, 0); +INSERT INTO `base_dict` VALUES (1766713545981153280, 'UnionPaySignType', '云闪付签名类型', b'1', '支付', '', 1399985191002447872, '2024-03-10 14:31:48', 1399985191002447872, '2024-03-10 14:31:48', 0, 0); +INSERT INTO `base_dict` VALUES (1768206399071809536, 'UnionPayRecordType', '云闪付流水类型', b'1', '支付', '', 1399985191002447872, '2024-03-14 17:23:52', 1399985191002447872, '2024-03-14 17:23:52', 0, 0); + +-- ---------------------------- +-- Table structure for base_dict_item +-- ---------------------------- +DROP TABLE IF EXISTS `base_dict_item`; +CREATE TABLE `base_dict_item` ( + `id` bigint(20) NOT NULL, + `dict_id` bigint(20) NOT NULL COMMENT '字典id', + `dict_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典code', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典项code', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '字典项名称', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `sort_no` double(8, 2) NOT NULL COMMENT '排序', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_dictionary_id`(`dict_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典项' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dict_item +-- ---------------------------- +INSERT INTO `base_dict_item` VALUES (1422931375807242241, 1422929378374828033, 'Sex', '1', '男', b'1', 0.00, '男性', 0, '2021-08-04 22:44:11', 0, '2021-08-04 22:44:11', 0, 2); +INSERT INTO `base_dict_item` VALUES (1425729455402401794, 1422929378374828033, 'Sex', '2', '女', b'1', 0.00, '女性', 0, '2021-08-12 16:02:46', 0, '2021-08-12 16:02:46', 0, 1); +INSERT INTO `base_dict_item` VALUES (1425744258544136194, 1425744045414772737, 'MenuType', '0', '顶级菜单', b'1', 0.00, '顶级菜单', 0, '2021-08-12 17:01:35', 0, '2021-08-12 17:01:35', 0, 0); +INSERT INTO `base_dict_item` VALUES (1425744436592340993, 1425744045414772737, 'MenuType', '1', '子菜单', b'1', 0.00, '子菜单', 0, '2021-08-12 17:02:17', 0, '2021-08-12 17:02:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1425744470582980610, 1425744045414772737, 'MenuType', '2', '按钮权限', b'1', 0.00, '按钮权限', 0, '2021-08-12 17:02:26', 0, '2021-08-12 17:02:26', 0, 0); +INSERT INTO `base_dict_item` VALUES (1430094707250413568, 1422929378374828033, 'Sex', '0', '未知', b'1', 0.00, '不确定性别', 1399985191002447872, '2021-08-24 17:08:43', 1399985191002447872, '2021-08-24 17:08:43', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', 'normal', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2023-11-25 15:32:04', 0, 1); +INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', 'lock', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2023-11-25 15:32:14', 0, 2); +INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', 'ban', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2023-11-25 15:32:20', 0, 1); +INSERT INTO `base_dict_item` VALUES (1435838374749626368, 1435838066191458304, 'LogBusinessType', 'other', '其它', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:00', 1399985191002447872, '2021-09-09 13:32:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838414436130816, 1435838066191458304, 'LogBusinessType', 'insert', '新增', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:09', 1399985191002447872, '2021-09-09 13:32:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838467624099840, 1435838066191458304, 'LogBusinessType', 'update', '修改', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:22', 1399985191002447872, '2021-09-09 13:32:22', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838502755590144, 1435838066191458304, 'LogBusinessType', 'delete', '删除', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:30', 1399985191002447872, '2021-09-09 13:32:30', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838546934194176, 1435838066191458304, 'LogBusinessType', 'grant', '授权', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:41', 1399985191002447872, '2021-09-09 13:32:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838605537009664, 1435838066191458304, 'LogBusinessType', 'export', '导出', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:55', 1399985191002447872, '2021-09-09 13:32:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838705457913856, 1435838066191458304, 'LogBusinessType', 'import', '导入', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:19', 1399985191002447872, '2021-09-09 13:33:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838745861644288, 1435838066191458304, 'LogBusinessType', 'force', '强退', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:28', 1399985191002447872, '2021-09-09 13:33:28', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435838786273763328, 1435838066191458304, 'LogBusinessType', 'clean', '清空数据', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:33:38', 1399985191002447872, '2021-09-09 13:33:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438079113630003200, 1438078864509317120, 'MailSecurityCode', '1', '普通方式', b'1', 0.00, 'SECURITY_TYPE_PLAIN', 1399985191002447872, '2021-09-15 17:55:54', 1399985191002447872, '2021-09-15 17:55:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438080323061755904, 1438078864509317120, 'MailSecurityCode', '2', 'TLS方式', b'1', 0.00, 'SECURITY_TYPE_TLS', 1399985191002447872, '2021-09-15 18:00:42', 1399985191002447872, '2021-09-15 18:00:42', 0, 0); +INSERT INTO `base_dict_item` VALUES (1438080372231581696, 1438078864509317120, 'MailSecurityCode', '3', 'SSL方式', b'1', 0.00, 'SECURITY_TYPE_SSL', 1399985191002447872, '2021-09-15 18:00:54', 1399985191002447872, '2021-09-15 18:00:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439961603914047488, 1439961232651034624, 'MessageTemplateCode', '5', '微信', b'1', -10.00, 'WECHAT', 1399985191002447872, '2021-09-20 22:36:14', 1399985191002447872, '2021-09-20 22:36:14', 0, 1); +INSERT INTO `base_dict_item` VALUES (1439961704321490944, 1439961232651034624, 'MessageTemplateCode', '4', 'Email', b'1', 0.00, 'EMAIL', 1399985191002447872, '2021-09-20 22:36:38', 1399985191002447872, '2021-09-20 22:36:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962132744478720, 1439961232651034624, 'MessageTemplateCode', '3', '短信', b'1', 0.00, 'SMS', 1399985191002447872, '2021-09-20 22:38:20', 1399985191002447872, '2021-09-20 22:38:20', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962205578567680, 1439961232651034624, 'MessageTemplateCode', '2', '钉钉机器人', b'1', 0.00, 'DING_TALK_ROBOT', 1399985191002447872, '2021-09-20 22:38:38', 1399985191002447872, '2021-09-20 22:38:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1439962267511660544, 1439961232651034624, 'MessageTemplateCode', '1', '钉钉', b'1', 0.00, 'DING_TALK', 1399985191002447872, '2021-09-20 22:38:52', 1399985191002447872, '2021-09-20 22:38:52', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452836696873984000, 1452836604783845376, 'SocialType', 'WeChat', '微信', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:17:16', 1399985191002447872, '2021-10-26 11:17:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452837435482529792, 1452836604783845376, 'SocialType', 'QQ', 'QQ', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:20:12', 1399985191002447872, '2021-10-26 11:20:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452837523030237184, 1452836604783845376, 'SocialType', 'DingTalk', '钉钉', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:20:33', 1399985191002447872, '2021-10-26 11:20:33', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452844537911406592, 1452843488735621120, 'ParamType', '1', '系统参数', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:48:25', 1399985191002447872, '2021-10-26 11:48:25', 0, 0); +INSERT INTO `base_dict_item` VALUES (1452844565031776256, 1452843488735621120, 'ParamType', '2', '用户参数', b'1', 0.00, '', 1399985191002447872, '2021-10-26 11:48:32', 1399985191002447872, '2021-10-26 11:48:32', 0, 2); +INSERT INTO `base_dict_item` VALUES (1496026946344005632, 1496024933900169216, 'Political', '1', '中共党员', b'1', 1.00, '', 1399985191002447872, '2022-02-22 15:39:54', 1399985191002447872, '2022-02-22 15:39:54', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027004560945152, 1496024933900169216, 'Political', '2', '中共预备党员', b'1', 2.00, '', 1399985191002447872, '2022-02-22 15:40:07', 1399985191002447872, '2022-02-22 15:40:07', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027039264616448, 1496024933900169216, 'Political', '3', '共青团员', b'1', 3.00, '', 1399985191002447872, '2022-02-22 15:40:16', 1399985191002447872, '2022-02-22 15:40:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027077550223360, 1496024933900169216, 'Political', '4', '民革党员', b'1', 4.00, '', 1399985191002447872, '2022-02-22 15:40:25', 1399985191002447872, '2022-02-22 15:40:25', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027123461074944, 1496024933900169216, 'Political', '5', '民盟盟员', b'1', 5.00, '', 1399985191002447872, '2022-02-22 15:40:36', 1399985191002447872, '2022-02-22 15:40:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027197566038016, 1496024933900169216, 'Political', '6', '民建会员', b'1', 6.00, '', 1399985191002447872, '2022-02-22 15:40:53', 1399985191002447872, '2022-02-22 15:40:53', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027234803068928, 1496024933900169216, 'Political', '7', '民进会员', b'1', 7.00, '', 1399985191002447872, '2022-02-22 15:41:02', 1399985191002447872, '2022-02-22 15:41:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027272941875200, 1496024933900169216, 'Political', '8', '农工党党员', b'1', 8.00, '', 1399985191002447872, '2022-02-22 15:41:11', 1399985191002447872, '2022-02-22 15:41:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027306634719232, 1496024933900169216, 'Political', '9', '致公党党员', b'1', 9.00, '', 1399985191002447872, '2022-02-22 15:41:19', 1399985191002447872, '2022-02-22 15:41:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027369796743168, 1496024933900169216, 'Political', '10', '九三学社社员', b'1', 10.00, '', 1399985191002447872, '2022-02-22 15:41:34', 1399985191002447872, '2022-02-22 15:41:35', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027408141070336, 1496024933900169216, 'Political', '11', '台盟盟员', b'1', 11.00, '', 1399985191002447872, '2022-02-22 15:41:44', 1399985191002447872, '2022-02-22 15:41:44', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027456849522688, 1496024933900169216, 'Political', '12', '无党派人士', b'1', 12.00, '', 1399985191002447872, '2022-02-22 15:41:55', 1399985191002447872, '2022-02-22 15:41:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1496027516639326208, 1496024933900169216, 'Political', '13', '群众', b'1', 13.00, '', 1399985191002447872, '2022-02-22 15:42:09', 1399985191002447872, '2022-02-22 15:42:10', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003368762032128, 1561003021674987520, 'SiteMessageReceive', 'user', '指定用户', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:00', 1399985191002447872, '2022-08-20 22:53:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003399778910208, 1561003021674987520, 'SiteMessageReceive', 'all', '全部用户', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:07', 1399985191002447872, '2022-08-20 22:53:24', 0, 1); +INSERT INTO `base_dict_item` VALUES (1561003539772194816, 1561003189111603200, 'SiteMessageState', 'sent', '已发送', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:41', 1399985191002447872, '2022-08-20 22:53:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561003575608328192, 1561003189111603200, 'SiteMessageState', 'cancel', '撤销', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:49', 1399985191002447872, '2022-08-20 22:53:49', 0, 0); +INSERT INTO `base_dict_item` VALUES (1561245469535080448, 1561003189111603200, 'SiteMessageState', 'draft', '草稿', b'1', 0.00, '', 1399985191002447872, '2022-08-21 14:55:01', 1399985191002447872, '2022-08-21 14:55:01', 0, 0); +INSERT INTO `base_dict_item` VALUES (1573665422392098816, 1439961232651034624, 'MessageTemplateCode', '0', '站内信', b'1', -11.00, 'SITE', 1399985191002447872, '2022-09-24 21:27:29', 1399985191002447872, '2022-09-24 21:27:39', 0, 1); +INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', 'self_dept_sub', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1399985191002447872, '2023-11-28 23:16:02', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', 'self_dept', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1399985191002447872, '2023-11-28 23:15:52', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', 'all', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1399985191002447872, '2023-11-25 22:51:28', 0, 1); +INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', 'dept_and_user', '自定义部门和用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1399985191002447872, '2023-11-29 15:25:01', 0, 3); +INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', 'dept', '自定义部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1399985191002447872, '2023-11-29 15:24:47', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', 'user', '指定用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1399985191002447872, '2023-11-29 15:25:16', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', 'self', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1399985191002447872, '2023-11-25 22:50:41', 0, 1); +INSERT INTO `base_dict_item` VALUES (1633403429028536320, 1633393287952257024, 'DatabaseType', 'mysql', 'MySQL', b'1', 1.00, '', 1414143554414059520, '2023-03-08 17:44:59', 1414143554414059520, '2023-03-08 17:44:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1633403459470794752, 1633393287952257024, 'DatabaseType', 'oracle', 'Oracle', b'1', 2.00, '', 1414143554414059520, '2023-03-08 17:45:07', 1414143554414059520, '2023-03-08 17:45:07', 0, 0); +INSERT INTO `base_dict_item` VALUES (1633403498695925760, 1633393287952257024, 'DatabaseType', 'mssql', 'SQLServer', b'1', 3.00, '', 1414143554414059520, '2023-03-08 17:45:16', 1414143554414059520, '2023-03-08 17:45:16', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742732891111424, 1688742690398617600, 'SmsChannel', 'alibaba', '阿里云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:38', 1414143554414059520, '2023-08-08 10:43:38', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742768479780864, 1688742690398617600, 'SmsChannel', 'huawei', '华为云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:46', 1414143554414059520, '2023-08-08 10:43:46', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742808027873280, 1688742690398617600, 'SmsChannel', 'yunpian', '云片', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:43:55', 1414143554414059520, '2023-08-08 10:43:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742840626003968, 1688742690398617600, 'SmsChannel', 'tencent', '腾讯云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:03', 1414143554414059520, '2023-08-08 10:44:03', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742872506908672, 1688742690398617600, 'SmsChannel', 'uni_sms', '合一短信', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:11', 1414143554414059520, '2023-08-08 10:44:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742905553829888, 1688742690398617600, 'SmsChannel', 'jd_cloud', '京东云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:19', 1414143554414059520, '2023-08-08 10:44:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742954715267072, 1688742690398617600, 'SmsChannel', 'cloopen', '容联云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:30', 1414143554414059520, '2023-08-08 10:44:30', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688742990446542848, 1688742690398617600, 'SmsChannel', 'emay', '亿美软通', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:39', 1414143554414059520, '2023-08-08 10:44:39', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688743032297308160, 1688742690398617600, 'SmsChannel', 'ctyun', '天翼云', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:49', 1414143554414059520, '2023-08-08 10:44:49', 0, 0); +INSERT INTO `base_dict_item` VALUES (1688743065205817344, 1688742690398617600, 'SmsChannel', 'netease', '网易云信', b'1', 0.00, '', 1414143554414059520, '2023-08-08 10:44:57', 1414143554414059520, '2023-08-08 10:44:57', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338619024437248, 1690338321769918464, 'GeneralTemplateUseType', 'import', '导入', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:06', 1414143554414059520, '2023-08-12 20:25:06', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338653442895872, 1690338321769918464, 'GeneralTemplateUseType', 'export', '导出', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:15', 1414143554414059520, '2023-08-12 20:25:15', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338707129987072, 1690338545284378624, 'GeneralTemplateState', 'enable', '启用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:27', 1414143554414059520, '2023-08-12 20:25:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1690338748032839680, 1690338545284378624, 'GeneralTemplateState', 'disable', '停用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:37', 1414143554414059520, '2023-08-12 20:25:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1729519341702086656, 1589527951317389312, 'DataScopePerm', 'dept_sub', '指定部门及下级部门', b'1', 0.00, '', 1399985191002447872, '2023-11-28 23:15:19', 1399985191002447872, '2023-11-28 23:15:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997130102317056, 1744996845355212800, 'PayChannel', 'ali_pay', '支付宝', b'1', 1.00, '', 1399985191002447872, '2024-01-10 16:18:31', 1399985191002447872, '2024-01-10 16:18:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997169239367680, 1744996845355212800, 'PayChannel', 'wechat_pay', '微信支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 16:18:40', 1399985191002447872, '2024-01-10 16:18:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997213623492608, 1744996845355212800, 'PayChannel', 'union_pay', '云闪付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 16:18:51', 1399985191002447872, '2024-01-10 16:18:51', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997258951335936, 1744996845355212800, 'PayChannel', 'cash_pay', '现金支付', b'1', 4.00, '', 1399985191002447872, '2024-01-10 16:19:02', 1399985191002447872, '2024-01-10 16:19:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997315557662720, 1744996845355212800, 'PayChannel', 'wallet_pay', '钱包支付', b'1', 5.00, '', 1399985191002447872, '2024-01-10 16:19:15', 1399985191002447872, '2024-01-10 16:19:15', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997364404527104, 1744996845355212800, 'PayChannel', 'voucher_pay', '储值卡支付', b'1', 6.00, '', 1399985191002447872, '2024-01-10 16:19:27', 1399985191002447872, '2024-01-10 16:19:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997501033979904, 1744996913667842048, 'PayStatus', 'progress', '支付中', b'1', 1.00, '', 1399985191002447872, '2024-01-10 16:19:59', 1399985191002447872, '2024-01-10 16:19:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997541811003392, 1744996913667842048, 'PayStatus', 'success', '成功', b'1', 2.00, '', 1399985191002447872, '2024-01-10 16:20:09', 1399985191002447872, '2024-01-10 16:20:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997578863484928, 1744996913667842048, 'PayStatus', 'close', '支付关闭', b'1', 3.00, '', 1399985191002447872, '2024-01-10 16:20:18', 1399985191002447872, '2024-01-10 16:20:18', 0, 0); +INSERT INTO `base_dict_item` VALUES (1744997619665674240, 1744996913667842048, 'PayStatus', 'fail', '失败', b'1', 7.00, '', 1399985191002447872, '2024-01-10 16:20:28', 1399985191002447872, '2024-01-27 00:52:05', 0, 1); +INSERT INTO `base_dict_item` VALUES (1744997658735616000, 1744996913667842048, 'PayStatus', 'partial_refund', '部分退款', b'1', 5.00, '', 1399985191002447872, '2024-01-10 16:20:37', 1399985191002447872, '2024-01-10 16:20:44', 0, 1); +INSERT INTO `base_dict_item` VALUES (1744997746321072128, 1744996913667842048, 'PayStatus', 'refunded', '全部退款', b'1', 6.00, '', 1399985191002447872, '2024-01-10 16:20:58', 1399985191002447872, '2024-01-10 16:20:58', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745085949967278080, 1744996611615039488, 'AsyncPayChannel', 'ali_pay', '支付宝', b'1', 1.00, '', 1399985191002447872, '2024-01-10 22:11:27', 1399985191002447872, '2024-01-10 22:11:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745085991767711744, 1744996611615039488, 'AsyncPayChannel', 'wechat_pay', '微信支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 22:11:37', 1399985191002447872, '2024-01-10 22:11:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745086048852189184, 1744996611615039488, 'AsyncPayChannel', 'union_pay', '云闪付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 22:11:51', 1399985191002447872, '2024-01-11 00:13:03', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745086902929924096, 1745086859116224512, 'PayWay', 'normal', '常规支付', b'1', 1.00, '', 1399985191002447872, '2024-01-10 22:15:14', 1399985191002447872, '2024-01-10 22:15:26', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745086940036931584, 1745086859116224512, 'PayWay', 'wap', 'wap支付', b'1', 2.00, '', 1399985191002447872, '2024-01-10 22:15:23', 1399985191002447872, '2024-01-10 22:15:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087004062982144, 1745086859116224512, 'PayWay', 'app', '应用支付', b'1', 3.00, '', 1399985191002447872, '2024-01-10 22:15:39', 1399985191002447872, '2024-01-10 22:15:39', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087058194669568, 1745086859116224512, 'PayWay', 'web', 'web支付', b'1', 4.00, '', 1399985191002447872, '2024-01-10 22:15:51', 1399985191002447872, '2024-01-10 22:15:51', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087104050995200, 1745086859116224512, 'PayWay', 'qrcode', '扫码支付', b'1', 5.00, '', 1399985191002447872, '2024-01-10 22:16:02', 1399985191002447872, '2024-01-10 22:16:02', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087163324899328, 1745086859116224512, 'PayWay', 'barcode', '付款码', b'1', 6.00, '', 1399985191002447872, '2024-01-10 22:16:17', 1399985191002447872, '2024-01-10 22:16:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745087221629919232, 1745086859116224512, 'PayWay', 'jsapi', '公众号/小程序支付', b'1', 7.00, '', 1399985191002447872, '2024-01-10 22:16:30', 1399985191002447872, '2024-01-10 22:16:37', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745109413893656576, 1745109350333173760, 'PayCallbackStatus', 'success', '成功', b'1', 1.00, '', 1399985191002447872, '2024-01-10 23:44:41', 1399985191002447872, '2024-01-10 23:44:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109449050312704, 1745109350333173760, 'PayCallbackStatus', 'fail', '失败', b'1', 2.00, '', 1399985191002447872, '2024-01-10 23:44:50', 1399985191002447872, '2024-01-10 23:44:50', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109487289782272, 1745109350333173760, 'PayCallbackStatus', 'ignore', '忽略', b'1', 3.00, '', 1399985191002447872, '2024-01-10 23:44:59', 1399985191002447872, '2024-01-10 23:44:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745109526477164544, 1745109350333173760, 'PayCallbackStatus', 'exception', '异常', b'1', 4.00, '', 1399985191002447872, '2024-01-10 23:45:08', 1399985191002447872, '2024-02-01 22:14:52', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745109571771453440, 1745109350333173760, 'PayCallbackStatus', 'not_found', '未找到', b'1', 5.00, '', 1399985191002447872, '2024-01-10 23:45:19', 1399985191002447872, '2024-01-10 23:45:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745129035573465088, 1745128986382667776, 'PayRepairSource', 'sync', '同步', b'1', 1.00, '', 1399985191002447872, '2024-01-11 01:02:40', 1399985191002447872, '2024-01-11 01:02:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745133530906857472, 1745128986382667776, 'PayRepairSource', 'callback', '回调', b'1', 2.00, '', 1399985191002447872, '2024-01-11 01:20:31', 1399985191002447872, '2024-01-11 01:20:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745133583939637248, 1745128986382667776, 'PayRepairSource', 'reconcile', '对账', b'1', 3.00, '', 1399985191002447872, '2024-01-11 01:20:44', 1399985191002447872, '2024-01-11 01:20:44', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745134495319953408, 1745134438772346880, 'PayRepairWay', 'pay_success', '支付成功', b'1', 1.00, '', 1399985191002447872, '2024-01-11 01:24:21', 1399985191002447872, '2024-02-01 21:29:32', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134589926674432, 1745134438772346880, 'PayRepairWay', 'pay_close_local', '关闭本地支付', b'1', 2.00, '', 1399985191002447872, '2024-01-11 01:24:44', 1399985191002447872, '2024-02-01 21:29:36', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134628447162368, 1745134438772346880, 'PayRepairWay', 'pay_progress', '更改为支付中', b'1', 3.00, '', 1399985191002447872, '2024-01-11 01:24:53', 1399985191002447872, '2024-02-01 22:02:53', 0, 2); +INSERT INTO `base_dict_item` VALUES (1745134664807583744, 1745134438772346880, 'PayRepairWay', 'pay_close_gateway', '关闭网关支付', b'1', 4.00, '', 1399985191002447872, '2024-01-11 01:25:02', 1399985191002447872, '2024-02-01 21:29:43', 0, 1); +INSERT INTO `base_dict_item` VALUES (1745134703416152064, 1745134438772346880, 'PayRepairWay', 'refund', '退款', b'1', 5.00, '', 1399985191002447872, '2024-01-11 01:25:11', 1399985191002447872, '2024-01-28 21:55:55', 1, 1); +INSERT INTO `base_dict_item` VALUES (1745748239158845440, 1745748188122554368, 'RefundStatus', 'success', '成功', b'1', 1.00, '', 1399985191002447872, '2024-01-12 18:03:09', 1399985191002447872, '2024-01-12 18:03:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1745748274525216768, 1745748188122554368, 'RefundStatus', 'fail', '失败', b'1', 3.00, '', 1399985191002447872, '2024-01-12 18:03:18', 1399985191002447872, '2024-01-27 00:51:02', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208700446683136, 1746208645341917184, 'PaySyncStatus', 'pay_fail', '支付查询失败', b'1', 1.00, '', 1399985191002447872, '2024-01-14 00:32:52', 1399985191002447872, '2024-02-01 21:59:17', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208760488144896, 1746208645341917184, 'PaySyncStatus', 'pay_success', '支付成功', b'1', 2.00, '', 1399985191002447872, '2024-01-14 00:33:06', 1399985191002447872, '2024-02-01 21:59:23', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208802531848192, 1746208645341917184, 'PaySyncStatus', 'pay_progress', '支付中', b'1', 3.00, '', 1399985191002447872, '2024-01-14 00:33:16', 1399985191002447872, '2024-02-01 21:59:33', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208853882712064, 1746208645341917184, 'PaySyncStatus', 'pay_closed', '支付已关闭', b'1', 4.00, '', 1399985191002447872, '2024-01-14 00:33:28', 1399985191002447872, '2024-02-01 21:59:43', 0, 1); +INSERT INTO `base_dict_item` VALUES (1746208898396860416, 1746208645341917184, 'PaySyncStatus', 'pay_refund', '支付退款', b'1', 5.00, '', 1399985191002447872, '2024-01-14 00:33:39', 1399985191002447872, '2024-02-01 21:59:53', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746208959721779200, 1746208645341917184, 'PaySyncStatus', 'pay_not_found', '交易不存在', b'1', 6.00, '', 1399985191002447872, '2024-01-14 00:33:54', 1399985191002447872, '2024-02-01 22:00:05', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746224281904455680, 1746208645341917184, 'PaySyncStatus', 'pay_not_found_unknown', '交易不存在(特殊)', b'1', 7.00, '未查询到订单(具体类型未知), 区别于上面的未查询到订单,有些支付方式如支付宝,发起支付后并不能查询到订单,需要用户进行操作后才能查询到订单,所以查询为了区分,增加一个未知的状态, 用于处理这种特殊情况, 然后根据业务需要,关闭订单或者进行其他操作', 1399985191002447872, '2024-01-14 01:34:47', 1399985191002447872, '2024-02-01 22:00:13', 0, 2); +INSERT INTO `base_dict_item` VALUES (1746224432131842048, 1746208645341917184, 'PaySyncStatus', 'pay_timeout', '支付超时', b'1', 8.00, '', 1399985191002447872, '2024-01-14 01:35:23', 1399985191002447872, '2024-02-01 22:00:30', 0, 2); +INSERT INTO `base_dict_item` VALUES (1749612708363186176, 1749612665392541696, 'ReconcileTrade', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-01-23 09:59:11', 1399985191002447872, '2024-01-23 09:59:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1749612758531256320, 1749612665392541696, 'ReconcileTrade', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-01-23 09:59:23', 1399985191002447872, '2024-01-23 09:59:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1749612797680889856, 1749612665392541696, 'ReconcileTrade', 'revoked', '撤销', b'1', 3.00, '', 1399985191002447872, '2024-01-23 09:59:32', 1399985191002447872, '2024-01-23 09:59:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924188674404352, 1745748188122554368, 'RefundStatus', 'progress', '退款中', b'1', 0.00, '接口调用成功不代表成功', 1399985191002447872, '2024-01-27 00:50:32', 1399985191002447872, '2024-01-27 00:50:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924286401687552, 1745748188122554368, 'RefundStatus', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-01-27 00:50:55', 1399985191002447872, '2024-01-27 00:50:55', 0, 0); +INSERT INTO `base_dict_item` VALUES (1750924518497693696, 1744996913667842048, 'PayStatus', 'refunding', '退款中', b'1', 4.00, '', 1399985191002447872, '2024-01-27 00:51:50', 1399985191002447872, '2024-01-27 00:52:10', 0, 1); +INSERT INTO `base_dict_item` VALUES (1751528739035111424, 1751603996496453632, 'PaymentType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-01-28 16:52:48', 1399985191002447872, '2024-01-28 16:52:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751528773260632064, 1751603996496453632, 'PaymentType', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-01-28 16:52:56', 1399985191002447872, '2024-01-28 16:52:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751613076980039680, 1751613032260370432, 'PayCallbackType', 'pay', '支付回调', b'1', 1.00, '', 1399985191002447872, '2024-01-28 22:27:56', 1399985191002447872, '2024-01-28 22:27:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1751613114254819328, 1751613032260370432, 'PayCallbackType', 'refund', '退款回调', b'1', 2.00, '', 1399985191002447872, '2024-01-28 22:28:04', 1399985191002447872, '2024-01-28 22:28:04', 0, 0); +INSERT INTO `base_dict_item` VALUES (1752216855927226368, 1745748188122554368, 'RefundStatus', 'close', '关闭', b'1', 4.00, '', 1399985191002447872, '2024-01-30 14:27:08', 1399985191002447872, '2024-01-30 14:27:08', 0, 0); +INSERT INTO `base_dict_item` VALUES (1752560213673594880, 1752560153120428032, 'RefundSyncStatus', 'refund_success', '退款成功', b'1', 1.00, '', 1399985191002447872, '2024-01-31 13:11:31', 1399985191002447872, '2024-02-01 21:56:59', 0, 1); +INSERT INTO `base_dict_item` VALUES (1752560254228320256, 1752560153120428032, 'RefundSyncStatus', 'refund_fail', '退款失败', b'1', 2.00, '', 1399985191002447872, '2024-01-31 13:11:40', 1399985191002447872, '2024-02-01 21:57:07', 0, 1); +INSERT INTO `base_dict_item` VALUES (1752560288546115584, 1752560153120428032, 'RefundSyncStatus', 'refund_progress', '退款中', b'1', 3.00, '', 1399985191002447872, '2024-01-31 13:11:48', 1399985191002447872, '2024-02-01 21:57:45', 0, 1); +INSERT INTO `base_dict_item` VALUES (1753044707091554304, 1745128986382667776, 'PayRepairSource', 'task', '定时任务', b'1', 4.00, '', 1399985191002447872, '2024-02-01 21:16:43', 1399985191002447872, '2024-02-01 21:16:43', 0, 0); +INSERT INTO `base_dict_item` VALUES (1753047429014495232, 1753047382185091072, 'RefundRepairWay', 'refund_success', '退款成功', b'1', 1.00, '', 1399985191002447872, '2024-02-01 21:27:32', 1399985191002447872, '2024-02-01 21:29:13', 0, 1); +INSERT INTO `base_dict_item` VALUES (1753047491140526080, 1753047382185091072, 'RefundRepairWay', 'refund_fail', '退款失败', b'1', 2.00, '', 1399985191002447872, '2024-02-01 21:27:47', 1399985191002447872, '2024-02-01 21:29:19', 0, 1); +INSERT INTO `base_dict_item` VALUES (1755939895162052608, 1745134438772346880, 'PayRepairWay', 'refund_success', '退款成功', b'1', 5.00, '会更新为部分退款和全部退款', 1399985191002447872, '2024-02-09 21:01:09', 1399985191002447872, '2024-02-09 21:10:22', 0, 2); +INSERT INTO `base_dict_item` VALUES (1755942271772139520, 1745134438772346880, 'PayRepairWay', 'refund_fail', '退款失败', b'1', 6.00, '', 1399985191002447872, '2024-02-09 21:10:36', 1399985191002447872, '2024-02-09 21:10:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1758881424411439104, 1758881354618220544, 'WalletStatus', 'normal', '正常', b'1', 1.00, '', 1399985191002447872, '2024-02-17 23:49:45', 1399985191002447872, '2024-02-17 23:49:45', 0, 0); +INSERT INTO `base_dict_item` VALUES (1758881470334873600, 1758881354618220544, 'WalletStatus', 'forbidden', '禁用', b'1', 2.00, '', 1399985191002447872, '2024-02-17 23:49:56', 1399985191002447872, '2024-02-17 23:49:56', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759189919170002944, 1759189874194481152, 'VoucherStatus', 'normal', '正常', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:15:36', 1399985191002447872, '2024-02-18 20:15:36', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759189962564272128, 1759189874194481152, 'VoucherStatus', 'forbidden', '禁用', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:15:46', 1399985191002447872, '2024-02-18 20:15:46', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190150464897024, 1759190066511708160, 'WalletRecordType', 'create', '创建', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:16:31', 1399985191002447872, '2024-02-18 20:16:31', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190193783668736, 1759190066511708160, 'WalletRecordType', 'pay', '支付', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:16:41', 1399985191002447872, '2024-02-18 20:16:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190227510067200, 1759190066511708160, 'WalletRecordType', 'refund', '退款', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:16:49', 1399985191002447872, '2024-02-18 20:16:56', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190291980713984, 1759190066511708160, 'WalletRecordType', 'close_pay', '支付关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:17:04', 1399985191002447872, '2024-02-18 20:17:04', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190340517199872, 1759190066511708160, 'WalletRecordType', 'close_refund', '退款关闭', b'1', 5.00, '', 1399985191002447872, '2024-02-18 20:17:16', 1399985191002447872, '2024-02-19 17:31:26', 1, 0); +INSERT INTO `base_dict_item` VALUES (1759190472654553088, 1759190427897135104, 'VoucherRecordType', 'import', '导入', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:17:48', 1399985191002447872, '2024-02-18 20:17:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190506087350272, 1759190427897135104, 'VoucherRecordType', 'pay', '支付', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:17:55', 1399985191002447872, '2024-02-18 20:18:16', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190574865547264, 1759190427897135104, 'VoucherRecordType', 'refund', '退款', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:18:12', 1399985191002447872, '2024-02-18 20:18:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190633921347584, 1759190427897135104, 'VoucherRecordType', 'close_pay', '支付关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:18:26', 1399985191002447872, '2024-02-18 20:18:26', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759190717757095936, 1759190427897135104, 'VoucherRecordType', 'close_refund', '退款关闭', b'1', 5.00, '', 1399985191002447872, '2024-02-18 20:18:46', 1399985191002447872, '2024-02-19 17:31:20', 1, 0); +INSERT INTO `base_dict_item` VALUES (1759190820500766720, 1759190780252225536, 'CashRecordType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-02-18 20:19:10', 1399985191002447872, '2024-02-18 20:19:39', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190850754281472, 1759190780252225536, 'CashRecordType', 'refund', '退款', b'1', 2.00, '', 1399985191002447872, '2024-02-18 20:19:18', 1399985191002447872, '2024-02-18 20:19:42', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190884061249536, 1759190780252225536, 'CashRecordType', 'close_pay', '支付关闭', b'1', 3.00, '', 1399985191002447872, '2024-02-18 20:19:26', 1399985191002447872, '2024-02-18 20:19:46', 0, 1); +INSERT INTO `base_dict_item` VALUES (1759190913261993984, 1759190780252225536, 'CashrRecordType', 'close_refund', '退款关闭', b'1', 4.00, '', 1399985191002447872, '2024-02-18 20:19:33', 1399985191002447872, '2024-02-19 17:31:15', 1, 1); +INSERT INTO `base_dict_item` VALUES (1759514962507554816, 1759190066511708160, 'WalletRecordType', 'recharge', '充值', b'1', 11.00, '', 1399985191002447872, '2024-02-19 17:47:12', 1399985191002447872, '2024-02-19 17:47:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1759515000520531968, 1759190066511708160, 'WalletRecordType', 'deduct', '扣减', b'1', 12.00, '', 1399985191002447872, '2024-02-19 17:47:21', 1399985191002447872, '2024-02-19 17:47:21', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434142275497984, 1761434095349624832, 'ClientNoticeType', 'pay', '支付通知', b'1', 1.00, '', 1399985191002447872, '2024-02-25 00:53:20', 1399985191002447872, '2024-02-25 00:53:20', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434179445420032, 1761434095349624832, 'ClientNoticeType', 'refund', '退款通知', b'1', 2.00, '', 1399985191002447872, '2024-02-25 00:53:29', 1399985191002447872, '2024-02-25 00:53:29', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434308537708544, 1761434264858226688, 'ClientNoticeSendType', 'auto', '自动发送', b'1', 0.00, '', 1399985191002447872, '2024-02-25 00:54:00', 1399985191002447872, '2024-02-25 00:54:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761434346206752768, 1761434264858226688, 'ClientNoticeSendType', 'manual', '手动发送', b'1', 1.00, '', 1399985191002447872, '2024-02-25 00:54:09', 1399985191002447872, '2024-02-25 00:54:09', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761581686381080576, 1761581634023583744, 'AlipayRecordType', 'pay', '支付', b'1', 0.00, '', 1399985191002447872, '2024-02-25 10:39:37', 1399985191002447872, '2024-02-25 10:39:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761581731029446656, 1761581634023583744, 'AlipayRecordType', 'refund', '退款', b'1', 1.00, '', 1399985191002447872, '2024-02-25 10:39:48', 1399985191002447872, '2024-02-25 10:39:48', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761588368863645696, 1761588314480300032, 'WechatPayRecordType', 'pay', '支付', b'1', 0.00, '', 1399985191002447872, '2024-02-25 11:06:11', 1399985191002447872, '2024-02-25 11:06:11', 0, 0); +INSERT INTO `base_dict_item` VALUES (1761588397825314816, 1761588314480300032, 'WechatPayRecordType', 'refund', '退款', b'1', 0.00, '', 1399985191002447872, '2024-02-25 11:06:17', 1399985191002447872, '2024-02-25 11:06:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588081838182400, 1763588034467713024, 'ReconcileDiffType', 'local_not_exists', '本地订单不存在', b'1', 0.00, '', 1399985191002447872, '2024-03-01 23:32:19', 1399985191002447872, '2024-03-01 23:32:19', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588123143688192, 1763588034467713024, 'ReconcileDiffType', 'remote_not_exists', '远程订单不存在', b'1', 1.00, '', 1399985191002447872, '2024-03-01 23:32:29', 1399985191002447872, '2024-03-01 23:32:29', 0, 0); +INSERT INTO `base_dict_item` VALUES (1763588174695878656, 1763588034467713024, 'ReconcileDiffType', 'not_match', '订单信息不一致', b'1', 2.00, '', 1399985191002447872, '2024-03-01 23:32:41', 1399985191002447872, '2024-03-01 23:32:48', 0, 1); +INSERT INTO `base_dict_item` VALUES (1766713657021157376, 1766713545981153280, 'UnionPaySignType', 'RSA2', 'RSA2', b'1', 0.00, '', 1399985191002447872, '2024-03-10 14:32:14', 1399985191002447872, '2024-03-10 14:32:14', 0, 0); +INSERT INTO `base_dict_item` VALUES (1768206502721449984, 1768206399071809536, 'UnionPayRecordType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-03-14 17:24:17', 1399985191002447872, '2024-03-14 17:24:17', 0, 0); +INSERT INTO `base_dict_item` VALUES (1768206547285929984, 1768206399071809536, 'UnionPayRecordType', 'refund', '退款', b'1', 0.00, '', 1399985191002447872, '2024-03-14 17:24:27', 1399985191002447872, '2024-03-14 17:24:27', 0, 0); + +-- ---------------------------- +-- Table structure for base_dynamic_data_source +-- ---------------------------- +DROP TABLE IF EXISTS `base_dynamic_data_source`; +CREATE TABLE `base_dynamic_data_source` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称', + `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型', + `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载', + `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类', + `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址', + `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称', + `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dynamic_data_source +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_dynamic_form +-- ---------------------------- +DROP TABLE IF EXISTS `base_dynamic_form`; +CREATE TABLE `base_dynamic_form` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名', + `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_dynamic_form +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_general_template +-- ---------------------------- +DROP TABLE IF EXISTS `base_general_template`; +CREATE TABLE `base_general_template` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码', + `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)', + `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型', + `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态', + `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_general_template +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_key_value +-- ---------------------------- +DROP TABLE IF EXISTS `base_key_value`; +CREATE TABLE `base_key_value` ( + `id` bigint(20) NOT NULL, + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', + `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_key_value +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_param +-- ---------------------------- +DROP TABLE IF EXISTS `base_param`; +CREATE TABLE `base_param` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称', + `param_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', + `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', + `type` int(4) NULL DEFAULT NULL COMMENT '参数类型', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `internal` bit(1) NOT NULL COMMENT '内置参数', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统参数配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_param +-- ---------------------------- +INSERT INTO `base_param` VALUES (1452842684284891136, '测试', 'test.v1', '123', 1, b'1', b'0', NULL, 1399985191002447872, '2021-10-26 11:41:03', 1399985191002447872, '2024-01-07 23:31:08', 1, 0); +INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9000', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2024-01-07 23:31:29', 0, 3); +INSERT INTO `base_param` VALUES (1545765299880448000, '服务器地址', 'ServerUrl', 'http://127.0.0.1:9000', 1, b'1', b'1', '优先级高于配置文件内进行的配置', 1399985191002447872, '2022-07-09 21:42:21', 1399985191002447872, '2024-01-07 23:31:20', 0, 2); + +-- ---------------------------- +-- Table structure for base_province +-- ---------------------------- +DROP TABLE IF EXISTS `base_province`; +CREATE TABLE `base_province` ( + `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码', + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称', + PRIMARY KEY (`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_province +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_query_sql +-- ---------------------------- +DROP TABLE IF EXISTS `base_query_sql`; +CREATE TABLE `base_query_sql` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合', + `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句', + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数', + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_query_sql +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_street +-- ---------------------------- +DROP TABLE IF EXISTS `base_street`; +CREATE TABLE `base_street` ( + `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码', + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称', + `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_street +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_village +-- ---------------------------- +DROP TABLE IF EXISTS `base_village`; +CREATE TABLE `base_village` ( + `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码', + `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称', + `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_village +-- ---------------------------- + +-- ---------------------------- +-- Table structure for cash_record +-- ---------------------------- +DROP TABLE IF EXISTS `cash_record`; +CREATE TABLE `cash_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现金记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of cash_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for common_sequence_range +-- ---------------------------- +DROP TABLE IF EXISTS `common_sequence_range`; +CREATE TABLE `common_sequence_range` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key', + `range_value` bigint(20) NOT NULL COMMENT '区间开始值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of common_sequence_range +-- ---------------------------- + +-- ---------------------------- +-- Table structure for ddl_history +-- ---------------------------- +DROP TABLE IF EXISTS `ddl_history`; +CREATE TABLE `ddl_history` ( + `script` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '脚本', + `type` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `version` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '版本', + PRIMARY KEY (`script`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'DDL 版本' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of ddl_history +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_client +-- ---------------------------- +DROP TABLE IF EXISTS `iam_client`; +CREATE TABLE `iam_client` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端', + `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_client +-- ---------------------------- +INSERT INTO `iam_client` VALUES (1580487061605175296, 'dax-pay', '支付网关', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', '支付网关管理端', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0'); + +-- ---------------------------- +-- Table structure for iam_data_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role`; +CREATE TABLE `iam_data_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_data_role_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role_dept`; +CREATE TABLE `iam_data_role_dept` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_data_role_user +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role_user`; +CREATE TABLE `iam_data_role_user` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_data_role_user +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_dept`; +CREATE TABLE `iam_dept` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID', + `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称', + `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位', + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码', + `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', + `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真', + `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_login_security_config +-- ---------------------------- +DROP TABLE IF EXISTS `iam_login_security_config`; +CREATE TABLE `iam_login_security_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID', + `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录', + `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码', + `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数', + `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录', + `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_login_security_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_login_type +-- ---------------------------- +DROP TABLE IF EXISTS `iam_login_type`; +CREATE TABLE `iam_login_type` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)', + `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型', + `captcha` bit(1) NOT NULL COMMENT '启用验证码', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_login_type +-- ---------------------------- +INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0'); +INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0'); +INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0'); + +-- ---------------------------- +-- Table structure for iam_password_change_history +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_change_history`; +CREATE TABLE `iam_password_change_history` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_change_history +-- ---------------------------- +INSERT INTO `iam_password_change_history` VALUES (1757299138075283456, 1757299137932677120, 'f52020dca765fd3943ed40a615dc2c5c', 1399985191002447872, '2024-02-13 15:02:18'); +INSERT INTO `iam_password_change_history` VALUES (1757317256038281216, 1757317255899869184, '1e9e3c3deaa4a06d08326e82a49d1b63', 1399985191002447872, '2024-02-13 16:14:18'); + +-- ---------------------------- +-- Table structure for iam_password_login_fail_record +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_login_fail_record`; +CREATE TABLE `iam_password_login_fail_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数', + `fail_time` datetime(0) NULL DEFAULT NULL COMMENT '登录失败时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_login_fail_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_password_security_config +-- ---------------------------- +DROP TABLE IF EXISTS `iam_password_security_config`; +CREATE TABLE `iam_password_security_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数', + `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)', + `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码', + `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率', + `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)', + `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同', + `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_password_security_config +-- ---------------------------- +INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 9999999, 10, b'1', 9999999, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-11-29 12:10:21', 2, b'0'); + +-- ---------------------------- +-- Table structure for iam_perm_menu +-- ---------------------------- +DROP TABLE IF EXISTS `iam_perm_menu`; +CREATE TABLE `iam_perm_menu` ( + `id` bigint(20) NOT NULL, + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称', + `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码', + `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标', + `hidden` bit(1) NOT NULL COMMENT '是否隐藏', + `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件', + `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径', + `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)', + `sort_no` double NOT NULL COMMENT '菜单排序', + `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)', + `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点', + `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面', + `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式', + `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容', + `admin` bit(1) NOT NULL COMMENT '系统菜单', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_perm_menu +-- ---------------------------- +INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'dax-pay', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'dax-pay', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'dax-pay', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'dax-pay', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'dax-pay', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'dax-pay', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'dax-pay', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'dax-pay', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'dax-pay', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'dax-pay', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'dax-pay', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'dax-pay', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'dax-pay', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'dax-pay', 1582249924602580992, '请求权限', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1399985191002447872, '2023-11-29 13:57:56', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'dax-pay', 1582249924602580992, '数据角色', 'DataRoleList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataRoleList.vue', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1399985191002447872, '2023-11-28 21:02:57', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'dax-pay', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'dax-pay', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'dax-pay', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'dax-pay', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'dax-pay', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'dax-pay', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'dax-pay', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'dax-pay', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'dax-pay', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'dax-pay', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'dax-pay', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'dax-pay', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'dax-pay', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'dax-pay', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'dax-pay', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'dax-pay', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'dax-pay', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'dax-pay', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'dax-pay', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'dax-pay', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'dax-pay', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'dax-pay', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'dax-pay', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'dax-pay', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'dax-pay', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'dax-pay', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'dax-pay', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'dax-pay', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'dax-pay', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0); +INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'dax-pay', NULL, '关于', '', NULL, b'0', 'ant-design:info-circle-outlined', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1399985191002447872, '2024-01-14 23:09:56', 6, 0); +INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'dax-pay', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'dax-pay', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'dax-pay', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'dax-pay', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'dax-pay', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'dax-pay', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'dax-pay', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'dax-pay', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'dax-pay', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'dax-pay', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'dax-pay', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1733829906427682816, 'dax-pay', 1582275875424129024, '在线用户', 'OnlineUserList', NULL, b'0', '', b'0', b'0', '/modules/monitor/user/online/OnlineUserList', NULL, '/monitor/user/online', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-12-10 20:43:57', 1399985191002447872, '2023-12-10 20:43:57', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1744271715476684800, 'dax-pay', NULL, '支付配置', 'PayConfig', NULL, b'0', 'ant-design:setting-filled', b'0', b'0', 'Layout', NULL, '/pay/config', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 16:15:59', 1399985191002447872, '2024-01-09 15:38:06', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1744276101384880128, 'dax-pay', 1744271715476684800, '支付通道', 'PayChannelConfigList', NULL, b'0', '', b'0', b'0', 'payment/system/channel/PayChannelConfigList', NULL, '/pay/config/channel', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 16:33:24', 1399985191002447872, '2024-01-18 14:49:15', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1744372631231995904, 'dax-pay', 1744271715476684800, '支付方式', 'PayWayInfoList', NULL, b'0', '', b'0', b'0', 'payment/system/way/PayWayInfoList', NULL, '/pay/config/way', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-08 22:56:59', 1399985191002447872, '2024-01-18 14:50:55', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1744624886658318336, 'dax-pay', 1744271715476684800, '支付接口', 'PayApiConfigList', NULL, b'0', '', b'0', b'0', 'payment/system/api/PayApiConfigList', NULL, '/pay/config/api', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 15:39:21', 1399985191002447872, '2024-01-10 11:52:20', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1744642856348520448, 'dax-pay', NULL, '订单管理', 'PayOrder', NULL, b'0', 'ant-design:wallet-outlined', b'0', b'0', 'Layout', NULL, '/pay/order', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 16:50:46', 1399985191002447872, '2024-01-09 16:53:35', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1744643265142165504, 'dax-pay', NULL, '数据记录', 'PayRecord', NULL, b'0', 'ant-design:profile-outlined', b'0', b'0', 'Layout', NULL, '/pay/record', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-09 16:52:23', 1399985191002447872, '2024-01-09 16:53:50', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1744930046228017152, 'dax-pay', 1744643265142165504, '回调记录', 'PayCallbackRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/callback/PayCallbackRecordList', NULL, '/pay/record/callback', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-10 11:51:57', 1399985191002447872, '2024-01-10 11:59:07', 10, 0); +INSERT INTO `iam_perm_menu` VALUES (1745126072389963776, 'dax-pay', 1744643265142165504, '关闭记录', 'PayCloseRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/close/PayCloseRecordList', NULL, '/pay/record/close', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 00:50:53', 1399985191002447872, '2024-01-11 00:50:53', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745136155962347520, 'dax-pay', 1744643265142165504, '修复记录', 'PayRepairRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/repair/PayRepairRecordList', NULL, '/pay/record/repair', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 01:30:57', 1399985191002447872, '2024-01-11 01:30:57', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745143528663781376, 'dax-pay', 1744643265142165504, '同步记录', 'PaySyncRecordList', NULL, b'0', '', b'0', b'0', 'payment/record/sync/PaySyncRecordList', NULL, '/pay/record/sync', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 02:00:15', 1399985191002447872, '2024-01-11 02:00:33', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1745457623493496832, 'dax-pay', 1744642856348520448, '支付订单', 'PayOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/pay/PayOrderList', NULL, '/pay/order/pay', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 22:48:21', 1399985191002447872, '2024-01-11 22:48:21', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1745457746529210368, 'dax-pay', 1744642856348520448, '退款订单', 'RefundOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/refund/RefundOrderList.vue', NULL, '/pay/order/refund', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 22:48:50', 1399985191002447872, '2024-01-21 22:50:29', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1745822093382230016, 'dax-pay', 1744271715476684800, '通道配置', 'ChannelPayConfigList', NULL, b'0', '', b'0', b'0', 'payment/channel/config/ChannelPayConfigList', NULL, '/pay/config/channelpay', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-12 22:56:38', 1399985191002447872, '2024-02-06 14:32:08', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1746194891925561344, 'dax-pay', 1744271715476684800, '平台配置', 'PayPlatformConfig', NULL, b'0', '', b'0', b'0', 'payment/system/platform/PayPlatformConfig', NULL, '/pay/config/platform', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-13 23:38:00', 1399985191002447872, '2024-01-13 23:38:00', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1749262518385082368, 'dax-pay', 1744642856348520448, '对账订单', 'ReconcileOrder', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/pay/order/reconcile', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-22 10:47:39', 1399985191002447872, '2024-03-04 21:06:18', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1758860876272861184, 'dax-pay', NULL, '支付通道', 'PayChannel', NULL, b'0', 'ant-design:align-left-outlined', b'0', b'0', 'Layout', NULL, '/pay/channel', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:28:06', 1399985191002447872, '2024-02-17 22:28:06', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1758861129311027200, 'dax-pay', 1758860876272861184, '钱包管理', 'WalletList', NULL, b'0', '', b'0', b'0', 'payment/channel/wallet/manager/WalletList', NULL, '/pay/channel/wallet', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:29:06', 1399985191002447872, '2024-03-05 22:09:12', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1759192238594949120, 'dax-pay', 1758860876272861184, '储值卡管理', 'VoucherList', NULL, b'0', '', b'0', b'0', 'payment/channel/voucher/manager/VoucherList', NULL, '/pay/channel/voucher', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-18 20:24:49', 1399985191002447872, '2024-03-05 22:09:30', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1759192520611561472, 'dax-pay', 1758860876272861184, '现金流水', 'CashRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/cash/record/CashRecordList', NULL, '/pay/channel/cash', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-18 20:25:56', 1399985191002447872, '2024-02-18 23:35:22', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1759768820429352960, 'dax-pay', NULL, '演示模块', '', NULL, b'0', 'ant-design:crown-outlined', b'0', b'0', 'Layout', NULL, '/pay/demo', '', 9, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 10:35:56', 1399985191002447872, '2024-02-20 10:35:56', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759769092698402816, 'dax-pay', 1759768820429352960, '收银台演示', '', NULL, b'0', '', b'0', b'0', '', NULL, 'outside:///cashier', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 10:37:01', 1399985191002447872, '2024-02-20 10:37:01', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759861648606097408, 'dax-pay', 1758860876272861184, '支付宝流水', 'AlipayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/alipay/record/AlipayRecordList', NULL, '/pay/channel/alipay', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 16:44:48', 1399985191002447872, '2024-02-20 16:44:48', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1759865163772485632, 'dax-pay', 1758860876272861184, '微信流水', 'WechatPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/wechat/record/WechatPayRecordList', NULL, '/pay/channel/wecha', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 16:58:46', 1399985191002447872, '2024-02-20 17:00:08', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1761429304959528960, 'dax-pay', NULL, '任务记录', 'PayTask', NULL, b'0', 'ant-design:clock-circle-outlined', b'0', b'0', 'Layout', NULL, '/pay/task', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:34:07', 1399985191002447872, '2024-02-25 00:34:30', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1761429682618855424, 'dax-pay', 1761429304959528960, '消息通知', 'ClientNoticeTaskList', NULL, b'0', '', b'0', b'0', 'payment/task/notice/ClientNoticeTaskList', NULL, '/pay/task/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:35:37', 1399985191002447872, '2024-02-25 00:35:37', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1764638353289027584, 'dax-pay', 1749262518385082368, '对账单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:05:43', 1399985191002447872, '2024-03-04 21:07:14', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1764638678821543936, 'dax-pay', 1749262518385082368, '差异单', 'ReconcileDiffList', NULL, b'0', '', b'1', b'0', 'payment/order/reconcile/diff/ReconcileDiffList.vue', NULL, '/pay/order/reconcile/diff', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:07:01', 1399985191002447872, '2024-03-05 12:49:19', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1768203432981655552, 'dax-pay', 1758860876272861184, '云闪付流水', 'UnionPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/union/record/UnionPayRecordList', NULL, '/pay/channel/union', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-14 17:12:05', 1399985191002447872, '2024-03-14 17:12:05', 0, 0); + +-- ---------------------------- +-- Table structure for iam_perm_path +-- ---------------------------- +DROP TABLE IF EXISTS `iam_perm_path`; +CREATE TABLE `iam_perm_path` ( + `id` bigint(20) NOT NULL, + `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称', + `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径', + `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称', + `enable` bit(1) NOT NULL COMMENT '启用状态', + `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL, + `create_time` datetime(6) NULL DEFAULT NULL, + `last_modifier` bigint(20) NULL DEFAULT NULL, + `last_modified_time` datetime(6) NULL DEFAULT NULL, + `deleted` bit(1) NOT NULL, + `version` int(11) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_perm_path +-- ---------------------------- +INSERT INTO `iam_perm_path` VALUES (1757297527147974656, 'DynamicDataSourceController#existsByCode', '编码是否被使用', 'GET', '/dynamic/source/existsByCode', '动态数据源管理', b'1', b'1', '动态数据源管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974658, 'QuartzJobController#stop', '停止', 'POST', '/quartz/stop', '定时任务', b'1', b'1', '定时任务 停止', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974659, 'RoleController#page', '分页查询角色', 'GET', '/role/page', '角色管理', b'1', b'1', '角色管理 分页查询角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974660, 'DictionaryItemController#delete', '删除字典项', 'DELETE', '/dict/item/delete', '字典项', b'1', b'1', '字典项 删除字典项', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974661, 'UserAssistController#validatePhoneChangeCaptcha', '验证改/绑定手机验证码', 'GET', '/user/validatePhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证改/绑定手机验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974662, 'PayRefundOrderController#refund', '手动发起退款', 'POST', '/order/refund/refund', '支付退款控制器', b'1', b'1', '支付退款控制器 手动发起退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974663, 'UserDataRoleController#findDataRoleByUser', '根据用户ID获取到数据角色列表', 'GET', '/user/data/role/findDataRoleByUser', '用户数据角色配置', b'1', b'1', '用户数据角色配置 根据用户ID获取到数据角色列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974664, 'FIleUpLoadController#preview', '预览文件(流量会经过后端)', 'GET', '/file/preview/{id}', '文件上传', b'1', b'1', '文件上传 预览文件(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974665, 'UserAssistController#sendPhoneForgetCaptcha', '发送找回密码手机验证码', 'POST', '/user/sendPhoneForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送找回密码手机验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974666, 'DynamicDataSourceController#findById', '通过ID查询', 'GET', '/dynamic/source/findById', '动态数据源管理', b'1', b'1', '动态数据源管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974667, 'GeneralTemplateController#findByCode', '通过Code查询', 'GET', '/general/template/findByCode', '通用模板管理', b'1', b'1', '通用模板管理 通过Code查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974668, 'AlipayConfigController#update', '更新', 'POST', '/alipay/config/update', '支付宝配置', b'1', b'1', '支付宝配置 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974669, 'UniPayController#refund', '统一退款', 'POST', '/unipay/refund', '统一支付接口', b'1', b'1', '统一支付接口 统一退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974670, 'DynamicFormController#existsByCode', '编码是否被使用', 'GET', '/dynamic/form/existsByCode', '动态表单', b'1', b'1', '动态表单 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974671, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs/', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974672, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974673, 'MessageTemplateController#page', '分页', 'GET', '/message/template/page', '消息模板', b'1', b'1', '消息模板 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974674, 'GeneralTemplateController#findAll', '查询所有', 'GET', '/general/template/findAll', '通用模板管理', b'1', b'1', '通用模板管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974675, 'QuartzJobLogController#findById', '单条', 'GET', '/quartz/log/findById', '定时任务执行日志', b'1', b'1', '定时任务执行日志 单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974676, 'UserAdminController#ban', '封禁用户', 'POST', '/user/admin/ban', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 封禁用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974677, 'ChinaWordController#findAll', '查询所有', 'GET', '/chinaword/findAll', '敏感词管理', b'1', b'1', '敏感词管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974678, 'DeptController#deleteAndChildren', '强制级联删除', 'DELETE', '/dept/deleteAndChildren', '部门管理', b'1', b'1', '部门管理 强制级联删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974679, 'ChinaWordController#local', '批量导入', 'POST', '/chinaword/importBatch', '敏感词管理', b'1', b'1', '敏感词管理 批量导入', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974680, 'TokenEndpoint#logout', '退出', 'POST', '/token/logout', '认证相关', b'1', b'1', '认证相关 退出', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974681, 'UserThirdController#findById', '获取详情', 'POST', '/user/third/findById', '用户三方登录管理', b'1', b'1', '用户三方登录管理 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974682, 'MailConfigController#existsByCode', '编码是否被使用', 'GET', '/mail/config/existsByCode', '邮箱配置', b'1', b'1', '邮箱配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974683, 'GeneralTemplateController#add', '添加', 'POST', '/general/template/add', '通用模板管理', b'1', b'1', '通用模板管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974684, 'SystemParamController#delete', '删除', 'DELETE', '/system/param/delete', '系统参数', b'1', b'1', '系统参数 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974685, 'QuartzJobController#add', '添加', 'POST', '/quartz/add', '定时任务', b'1', b'1', '定时任务 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974686, 'PermPathController#deleteBatch', '批量删除', 'DELETE', '/perm/path/deleteBatch', '请求权限管理', b'1', b'1', '请求权限管理 批量删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974687, 'DictionaryItemController#findAllByEnable', '获取启用的字典项列表', 'GET', '/dict/item/findAllByEnable', '字典项', b'1', b'1', '字典项 获取启用的字典项列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974688, 'UserInfoController#updatePhone', '修改手机号', 'POST', '/user/updatePhone', '用户管理', b'1', b'1', '用户管理 修改手机号', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974689, 'DynamicFormController#delete', '删除', 'DELETE', '/dynamic/form/delete', '动态表单', b'1', b'1', '动态表单 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974690, 'TestController#lock2', '锁测试2', 'GET', '/test/lock2', '测试', b'1', b'1', '测试 锁测试2', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974691, 'PayCloseRecordController#findById', '查询单条', 'GET', '/record/close/findById', '支付订单关闭记录', b'1', b'1', '支付订单关闭记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974692, 'WeChatPayConfigController#update', '更新', 'POST', '/wechat/pay/config/update', '微信支付配置', b'1', b'1', '微信支付配置 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974693, 'UserRoleController#findRolesByUser', '根据用户ID获取到角色集合', 'GET', '/user/role/findRolesByUser', '用户角色管理', b'1', b'1', '用户角色管理 根据用户ID获取到角色集合', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974694, 'WechatNoticeConfigController#update', '更新微信消息通知配置', 'POST', '/wx/notice/update', '微信消息通知配置', b'1', b'1', '微信消息通知配置 更新微信消息通知配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974695, 'WecomRobotConfigController#add', '新增机器人配置', 'POST', '/wecom/robot/config/add', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 新增机器人配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974696, 'PermMenuController#menuTree', '获取菜单树', 'GET', '/perm/menu/menuTree', '菜单和权限码', b'1', b'1', '菜单和权限码 获取菜单树', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974697, 'DataResultController#add', '新建', 'POST', '/data/result/add', 'SQL查询', b'1', b'1', 'SQL查询 新建', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974698, 'UserAdminController#unlock', '解锁用户', 'POST', '/user/admin/unlock', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 解锁用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974699, 'DynamicFormController#page', '分页查询', 'GET', '/dynamic/form/page', '动态表单', b'1', b'1', '动态表单 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974700, 'UniPayController#simpleRefund', '简单退款', 'POST', '/unipay/simpleRefund', '统一支付接口', b'1', b'1', '统一支付接口 简单退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974701, 'DynamicDataSourceController#testConnection', '测试连接(根据参数)', 'POST', '/dynamic/source/testConnection', '动态数据源管理', b'1', b'1', '动态数据源管理 测试连接(根据参数)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974702, 'SystemParamController#update', '更新', 'POST', '/system/param/update', '系统参数', b'1', b'1', '系统参数 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974703, 'ForwardH5Controller#toH5', 'toH5', 'GET', '/h5/', 'ForwardH5Controller', b'1', b'1', 'ForwardH5Controller toH5', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974704, 'OpenApiWebMvcResource#openapiYaml', 'openapiYaml', 'GET', '/v3/api-docs.yaml', 'OpenApiWebMvcResource', b'1', b'1', 'OpenApiWebMvcResource openapiYaml', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974705, 'SmsChannelConfigController#add', '添加', 'POST', '/sms/config/add', '短信渠道配置', b'1', b'1', '短信渠道配置 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974706, 'DataVersionLogController#findById', '获取', 'GET', '/log/dataVersion/findById', '数据版本日志', b'1', b'1', '数据版本日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974707, 'MailConfigController#add', '增加新邮箱配置', 'POST', '/mail/config/add', '邮箱配置', b'1', b'1', '邮箱配置 增加新邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974708, 'UserInfoController#updateBaseInfo', '修改用户基础信息', 'POST', '/user/updateBaseInfo', '用户管理', b'1', b'1', '用户管理 修改用户基础信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974709, 'UserInfoController#bindPhone', '绑定手机', 'POST', '/user/bindPhone', '用户管理', b'1', b'1', '用户管理 绑定手机', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974710, 'NcDemoController#sendImageNotice', '企微图片消息测试', 'POST', '/nc/test/sendImageNotice', 'nc测试', b'1', b'1', 'nc测试 企微图片消息测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974711, 'PermPathController#batchUpdateEnable', '批量更新状态', 'POST', '/perm/path/batchUpdateEnable', '请求权限管理', b'1', b'1', '请求权限管理 批量更新状态', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974713, 'WeChatPortalController#post', 'post', 'POST', '/wechat/portal', '微信接入入口', b'1', b'1', '微信接入入口 post', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974714, 'UniPayController#simplePay', '简单下单', 'POST', '/unipay/simplePay', '统一支付接口', b'1', b'1', '统一支付接口 简单下单', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974715, 'SmsTemplateController#findAll', '查询所有', 'GET', '/sms/template/findAll', '短信模板配置', b'1', b'1', '短信模板配置 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974716, 'MessageTemplateController#existsByCode', '编码是否被使用', 'GET', '/message/template/existsByCode', '消息模板', b'1', b'1', '消息模板 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974717, 'MailConfigController#updateMailConfig', '更新邮箱配置', 'POST', '/mail/config/update', '邮箱配置', b'1', b'1', '邮箱配置 更新邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974718, 'UserInfoController#updatePassword', '修改密码', 'POST', '/user/updatePassword', '用户管理', b'1', b'1', '用户管理 修改密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974719, 'DictionaryItemController#existsByCode', '编码是否被使用', 'GET', '/dict/item/existsByCode', '字典项', b'1', b'1', '字典项 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974720, 'SmsChannelConfigController#update', '修改', 'POST', '/sms/config/update', '短信渠道配置', b'1', b'1', '短信渠道配置 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974721, 'DataRoleController#existsByName', '名称是否被使用(不包含自己)', 'GET', '/data/role/existsByNameNotId', '数据角色配置', b'1', b'1', '数据角色配置 名称是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974722, 'DeptController#add', '添加', 'POST', '/dept/add', '部门管理', b'1', b'1', '部门管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974723, 'FIleUpLoadController#local', '上传', 'POST', '/file/upload', '文件上传', b'1', b'1', '文件上传 上传', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974724, 'PermPathController#findById', '获取详情', 'GET', '/perm/path/findById', '请求权限管理', b'1', b'1', '请求权限管理 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974725, 'DeptController#delete', '普通删除', 'DELETE', '/dept/delete', '部门管理', b'1', b'1', '部门管理 普通删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974726, 'CashierController#wxAuthCallback', '微信授权回调页面', 'GET', '/demo/cashier/wxAuthCallback', '结算台演示', b'1', b'1', '结算台演示 微信授权回调页面', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974727, 'DataResultController#update', '修改', 'POST', '/data/result/update', 'SQL查询', b'1', b'1', 'SQL查询 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974728, 'UserAdminController#getByEmail', '根据邮箱查询用户', 'GET', '/user/admin/getByEmail', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据邮箱查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974729, 'LoginTypeController#findAll', '查询所有的登录方式', 'GET', '/loginType/findAll', '登录方式管理', b'1', b'1', '登录方式管理 查询所有的登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974730, 'PayRepairRecordController#findById', '查询单条', 'GET', '/record/repair/findById', '支付修复记录', b'1', b'1', '支付修复记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974731, 'UserAdminController#restartPasswordBatch', '批量重置密码', 'POST', '/user/admin/restartPasswordBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974732, 'UserInfoController#findUsernameByPhoneCaptcha', '根据手机验证码查询账号', 'GET', '/user/findUsernameByPhoneCaptcha', '用户管理', b'1', b'1', '用户管理 根据手机验证码查询账号', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974733, 'DynamicFormController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dynamic/form/existsByCodeNotId', '动态表单', b'1', b'1', '动态表单 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974734, 'ChinaWordController#add', '添加', 'POST', '/chinaword/add', '敏感词管理', b'1', b'1', '敏感词管理 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974735, 'LoginTypeController#delete', '删除登录方式', 'DELETE', '/loginType/delete', '登录方式管理', b'1', b'1', '登录方式管理 删除登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974736, 'DataVersionLogController#page', '分页', 'GET', '/log/dataVersion/page', '数据版本日志', b'1', b'1', '数据版本日志 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974737, 'AggregateController#createUrl', '创建聚合支付码', 'POST', '/demo/aggregate/createUrl', '聚合支付', b'1', b'1', '聚合支付 创建聚合支付码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974738, 'MailConfigController#findById', '通过 id 获取指定邮箱配置', 'GET', '/mail/config/findById', '邮箱配置', b'1', b'1', '邮箱配置 通过 id 获取指定邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974739, 'UserAssistController#validateCurrentChangeEmailCaptcha', '验证当前用户发送更改邮箱验证码', 'GET', '/user/validateCurrentChangeEmailCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证当前用户发送更改邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974740, 'ClientController#existsByCode', '编码是否被使用', 'GET', '/client/existsByCode', '认证终端', b'1', b'1', '认证终端 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974741, 'UserAdminController#findById', '根据用户id查询用户', 'GET', '/user/admin/findById', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据用户id查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974742, 'PayRefundOrderController#page', '分页查询', 'GET', '/order/refund/page', '支付退款控制器', b'1', b'1', '支付退款控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974743, 'RoleMenuController#findTreeByRole', '获取当前角色下可见的菜单和权限码树(分配时用)', 'GET', '/role/menu/findTreeByRole', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取当前角色下可见的菜单和权限码树(分配时用)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974744, 'WeChatPayConfigController#findPayWays', '微信支持支付方式', 'GET', '/wechat/pay/config/findPayWays', '微信支付配置', b'1', b'1', '微信支付配置 微信支持支付方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974745, 'AuthAssistController#sendSmsCaptcha', '发送短信验证码', 'POST', '/auth/sendSmsCaptcha', '认证支撑接口', b'1', b'1', '认证支撑接口 发送短信验证码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974746, 'WeChatPayConfigController#toBase64', '将文件转换成base64', 'POST', '/wechat/pay/config/toBase64', '微信支付配置', b'1', b'1', '微信支付配置 将文件转换成base64', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974747, 'MailConfigController#setUpActivity', '设置启用的邮箱配置', 'POST', '/mail/config/setUpActivity', '邮箱配置', b'1', b'1', '邮箱配置 设置启用的邮箱配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974748, 'UserDeptController#findIdsByUser', '根据用户ID获取到部门id集合', 'GET', '/user/dept/findIdsByUser', '用户部门关联关系', b'1', b'1', '用户部门关联关系 根据用户ID获取到部门id集合', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974749, 'OperateLogController#findById', '获取', 'GET', '/log/operate/findById', '操作日志', b'1', b'1', '操作日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974750, 'UserAdminController#getByPhone', '根据手机号查询用户', 'GET', '/user/admin/getByPhone', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 根据手机号查询用户', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974751, 'UserThirdController#getThirdBindInfo', '获取绑定详情', 'GET', '/user/third/getThirdBindInfo', '用户三方登录管理', b'1', b'1', '用户三方登录管理 获取绑定详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974752, 'DynamicDataSourceController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dynamic/source/existsByCodeNotId', '动态数据源管理', b'1', b'1', '动态数据源管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974753, 'SmsTemplateController#update', '修改', 'POST', '/sms/template/update', '短信模板配置', b'1', b'1', '短信模板配置 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974754, 'RoleController#add', '添加角色(返回角色对象)', 'POST', '/role/add', '角色管理', b'1', b'1', '角色管理 添加角色(返回角色对象)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974755, 'WechatNoticeConfigController#getConfig', '获取微信消息通知配置', 'GET', '/wx/notice/getConfig', '微信消息通知配置', b'1', b'1', '微信消息通知配置 获取微信消息通知配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974756, 'LoginLogController#findById', '获取', 'GET', '/log/login/findById', '登录日志', b'1', b'1', '登录日志 获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974757, 'UserRoleController#saveAssign', '给用户分配角色', 'POST', '/user/role/saveAssign', '用户角色管理', b'1', b'1', '用户角色管理 给用户分配角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974758, 'DictionaryController#findById', '根据id获取', 'GET', '/dict/findById', '字典', b'1', b'1', '字典 根据id获取', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974759, 'PermPathController#findAll', '权限列表', 'GET', '/perm/path/findAll', '请求权限管理', b'1', b'1', '请求权限管理 权限列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974760, 'DingRobotConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/ding/robot/config/existsByCodeNotId', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974761, 'GeneralTemplateController#deleteBatch', '批量删除', 'DELETE', '/general/template/deleteBatch', '通用模板管理', b'1', b'1', '通用模板管理 批量删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974762, 'UserInfoController#forgetPasswordByEmail', '通过邮箱重置密码', 'POST', '/user/forgetPasswordByEmail', '用户管理', b'1', b'1', '用户管理 通过邮箱重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974763, 'GeneralTemplateController#update', '修改', 'POST', '/general/template/update', '通用模板管理', b'1', b'1', '通用模板管理 修改', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974764, 'DictionaryItemController#update', '修改字典项(返回字典项对象)', 'POST', '/dict/item/update', '字典项', b'1', b'1', '字典项 修改字典项(返回字典项对象)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974765, 'SystemParamController#add', '添加', 'POST', '/system/param/add', '系统参数', b'1', b'1', '系统参数 添加', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974766, 'BaseApiController#authEcho', '回声测试(必须要进行登录)', 'GET', '/auth/echo', '系统基础接口', b'1', b'1', '系统基础接口 回声测试(必须要进行登录)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974767, 'DatabaseTableController#findColumnByTableName', '获取数据表行信息', 'GET', '/gen/table/findColumnByTableName', '数据库表信息', b'1', b'1', '数据库表信息 获取数据表行信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974768, 'DictionaryItemController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dict/item/existsByCodeNotId', '字典项', b'1', b'1', '字典项 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974769, 'PayApiConfigController#findAll', '获取全部', 'GET', '/pay/api/config/findAll', '支付接口配置', b'1', b'1', '支付接口配置 获取全部', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974770, 'ChinaWordController#verify', '测试敏感词效果', 'POST', '/chinaword/verify', '敏感词管理', b'1', b'1', '敏感词管理 测试敏感词效果', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974771, 'DataRoleController#page', '分页', 'GET', '/data/role/page', '数据角色配置', b'1', b'1', '数据角色配置 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974772, 'UserInfoController#getUserSecurityInfo', '查询用户安全信息', 'GET', '/user/getUserSecurityInfo', '用户管理', b'1', b'1', '用户管理 查询用户安全信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974773, 'ChinaRegionController#findAllProvinceAndCityAndArea', ' 获取省市区县三级联动列表', 'GET', '/china/region/findAllProvinceAndCityAndArea', '中国行政区划', b'1', b'1', '中国行政区划 获取省市区县三级联动列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974774, 'DictionaryItemController#pageByDictionaryId', '分页查询指定字典下的字典项', 'GET', '/dict/item/pageByDictionaryId', '字典项', b'1', b'1', '字典项 分页查询指定字典下的字典项', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974775, 'WeChatMediaController#pageNews', '图文素材分页', 'GET', '/wechat/media/pageNews', '微信素材管理', b'1', b'1', '微信素材管理 图文素材分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974776, 'PermMenuController#resourceList', '资源(权限码)列表', 'GET', '/perm/menu/resourceList', '菜单和权限码', b'1', b'1', '菜单和权限码 资源(权限码)列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974777, 'WeChatPayConfigController#getConfig', '获取配置', 'GET', '/wechat/pay/config/getConfig', '微信支付配置', b'1', b'1', '微信支付配置 获取配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974778, 'AlipayConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/alipay/config/findPayWays', '支付宝配置', b'1', b'1', '支付宝配置 支付宝支持支付方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974779, 'PayRefundOrderController#findChannelById', '查询通道退款订单详情', 'GET', '/order/refund/findChannelById', '支付退款控制器', b'1', b'1', '支付退款控制器 查询通道退款订单详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974780, 'UserInfoController#forgetPasswordByPhone', '通过手机号重置密码', 'POST', '/user/forgetPasswordByPhone', '用户管理', b'1', b'1', '用户管理 通过手机号重置密码', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974781, 'DataRoleController#saveDeptAssign', '保存关联部门', 'POST', '/data/role/saveDeptAssign', '数据角色配置', b'1', b'1', '数据角色配置 保存关联部门', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974782, 'PayOrderController#getExtraById', '查询支付订单扩展信息', 'GET', '/order/pay/getExtraById', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付订单扩展信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974783, 'UserInfoController#existsPhone', '手机号是否被使用(不包含自己)', 'GET', '/user/existsPhoneNotId', '用户管理', b'1', b'1', '用户管理 手机号是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974784, 'LoginTypeController#add', '添加登录方式', 'POST', '/loginType/add', '登录方式管理', b'1', b'1', '登录方式管理 添加登录方式', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974785, 'PermMenuController#delete', '删除', 'DELETE', '/perm/menu/delete', '菜单和权限码', b'1', b'1', '菜单和权限码 删除', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974786, 'RoleController#findAll', '查询所有的角色', 'GET', '/role/findAll', '角色管理', b'1', b'1', '角色管理 查询所有的角色', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974787, 'MessageTemplateController#findById', '获取详情', 'GET', '/message/template/findById', '消息模板', b'1', b'1', '消息模板 获取详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974788, 'DataResultController#page', '分页查询', 'GET', '/data/result/page', 'SQL查询', b'1', b'1', 'SQL查询 分页查询', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974789, 'NcDemoController#sendWeComMsg', '企微消息测试', 'POST', '/nc/test/sendWeComMsg', 'nc测试', b'1', b'1', 'nc测试 企微消息测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974790, 'DictionaryController#existsByCode', '编码是否被使用', 'GET', '/dict/existsByCode', '字典', b'1', b'1', '字典 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974791, 'UserInfoController#getLoginAfterUserInfo', '登录后获取用户信息', 'GET', '/user/getLoginAfterUserInfo', '用户管理', b'1', b'1', '用户管理 登录后获取用户信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974792, 'UserInfoController#bindEmail', '绑定邮箱', 'POST', '/user/bindEmail', '用户管理', b'1', b'1', '用户管理 绑定邮箱', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974793, 'OnlineUserController#pageByLogin', '登录用户分页', 'GET', '/online/user/pageByLogin', '在线用户', b'1', b'1', '在线用户 登录用户分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974794, 'PasswordSecurityConfigController#addOrUpdate', '新增或添加密码安全配置', 'POST', '/security/password/addOrUpdate', '密码安全策略', b'1', b'1', '密码安全策略 新增或添加密码安全配置', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974795, 'UserInfoController#getUserBaseInfo', '查询用户基础信息', 'GET', '/user/getUserBaseInfo', '用户管理', b'1', b'1', '用户管理 查询用户基础信息', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974796, 'DataRoleController#findUsersByDataRoleId', '获取关联的用户列表', 'GET', '/data/role/findUsersByDataRoleId', '数据角色配置', b'1', b'1', '数据角色配置 获取关联的用户列表', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974797, 'SiteMessageController#findById', '消息详情', 'GET', '/site/message/findById', '站内信', b'1', b'1', '站内信 消息详情', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168960, 'RolePathController#findPathsByRole', '获取当前用户角色下可见的请求权限列表(分配时用)', 'GET', '/role/path/findPathsByRole', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 获取当前用户角色下可见的请求权限列表(分配时用)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168961, 'UserAssistController#sendPhoneChangeCaptcha', '发送更改/绑定手机号验证码', 'POST', '/user/sendPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送更改/绑定手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168962, 'WeChatMenuController#findAll', '查询所有', 'GET', '/wechat/menu/findAll', '微信菜单管理', b'1', b'1', '微信菜单管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168963, 'DictionaryItemController#findByDictionaryId', '查询指定字典ID下的所有字典项', 'GET', '/dict/item/findByDictionaryId', '字典项', b'1', b'1', '字典项 查询指定字典ID下的所有字典项', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168964, 'SystemParamController#existsByKeyNotId', '判断编码是否存在(不包含自己)', 'GET', '/system/param/existsByKeyNotId', '系统参数', b'1', b'1', '系统参数 判断编码是否存在(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168965, 'MessageTemplateController#delete', '删除', 'DELETE', '/message/template/delete', '消息模板', b'1', b'1', '消息模板 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168966, 'WeChatMenuController#update', '修改', 'POST', '/wechat/menu/update', '微信菜单管理', b'1', b'1', '微信菜单管理 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168967, 'ChinaWordController#getTemplate', '获取模板', 'GET', '/chinaword/getTemplate', '敏感词管理', b'1', b'1', '敏感词管理 获取模板', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168968, 'DynamicFormController#findById', '通过ID查询', 'GET', '/dynamic/form/findById', '动态表单', b'1', b'1', '动态表单 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168969, 'SmsChannelConfigController#findByCode', '通过Code查询', 'GET', '/sms/config/findByCode', '短信渠道配置', b'1', b'1', '短信渠道配置 通过Code查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168970, 'UserInfoController#existsPhone', '手机号是否被使用', 'GET', '/user/existsPhone', '用户管理', b'1', b'1', '用户管理 手机号是否被使用', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168971, 'DataRoleController#getDeptIds', '获取关联部门id', 'GET', '/data/role/getDeptIds', '数据角色配置', b'1', b'1', '数据角色配置 获取关联部门id', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168972, 'PasswordSecurityConfigController#getDefault', '获取配置', 'GET', '/security/password/getDefault', '密码安全策略', b'1', b'1', '密码安全策略 获取配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168973, 'ClientController#update', '修改', 'POST', '/client/update', '认证终端', b'1', b'1', '认证终端 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168974, 'AggregateController#wxAuthCallback', '微信授权回调页面', 'GET', '/demo/aggregate/wxAuthCallback', '聚合支付', b'1', b'1', '聚合支付 微信授权回调页面', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168975, 'LoginTypeController#findById', '通过ID查询登录方式', 'GET', '/loginType/findById', '登录方式管理', b'1', b'1', '登录方式管理 通过ID查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168976, 'DingRobotConfigController#findById', '获取详情', 'GET', '/ding/robot/config/findById', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 获取详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168977, 'SiteMessageController#pageBySender', '发送消息分页', 'GET', '/site/message/pageBySender', '站内信', b'1', b'1', '站内信 发送消息分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168978, 'ThirdLoginController#toLoginUrl', '跳转到登陆页', 'GET', '/auth/third/toLoginUrl/{loginType}', '三方登录', b'1', b'1', '三方登录 跳转到登陆页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168979, 'RoleMenuController#save', '保存请求权限关系', 'POST', '/role/menu/save', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 保存请求权限关系', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168980, 'PayWayInfoController#findById', '根据ID获取', 'GET', '/pay/way/info/findById', '支付方式管理', b'1', b'1', '支付方式管理 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168981, 'UserInfoController#register', '注册账号', 'POST', '/user/register', '用户管理', b'1', b'1', '用户管理 注册账号', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168982, 'LoginTypeController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/loginType/existsByCodeNotId', '登录方式管理', b'1', b'1', '登录方式管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168983, 'ChinaWordController#page', '分页查询', 'GET', '/chinaword/page', '敏感词管理', b'1', b'1', '敏感词管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168984, 'DatabaseTableController#findAll', '表列表', 'GET', '/gen/table/findAll', '数据库表信息', b'1', b'1', '数据库表信息 表列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168985, 'UniPayAssistController#getWxAccessToken', '获取微信AccessToken数据', 'POST', '/unipay/assist/getWxAccessToken', '支付支撑接口', b'1', b'1', '支付支撑接口 获取微信AccessToken数据', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168986, 'WeChatTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/wechat/template/existsByCodeNotId', '微信模板消息', b'1', b'1', '微信模板消息 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168987, 'DynamicDataSourceController#addDynamicDataSourceById', '根据id进行添加到连接池中', 'POST', '/dynamic/source/addDynamicDataSourceById', '动态数据源管理', b'1', b'1', '动态数据源管理 根据id进行添加到连接池中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168988, 'LoginLogController#deleteByDay', '清除指定天数之前的日志', 'DELETE', '/log/login/deleteByDay', '登录日志', b'1', b'1', '登录日志 清除指定天数之前的日志', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168989, 'ClientController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/client/existsByCodeNotId', '认证终端', b'1', b'1', '认证终端 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168990, 'UniQueryController#queryRefundOrder', '查询退款订单', 'POST', '/uni/query/refundOrder', '统一查询接口', b'1', b'1', '统一查询接口 查询退款订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168991, 'SiteMessageController#listByReceiveNotRead', '小程序获取未读的接收消息标题列表', 'GET', '/site/message/listByReceiveNotRead', '站内信', b'1', b'1', '站内信 小程序获取未读的接收消息标题列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168992, 'WeChatMenuController#add', '添加', 'POST', '/wechat/menu/add', '微信菜单管理', b'1', b'1', '微信菜单管理 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168993, 'PasswordSecurityConfigController#check', '登录后检查密码相关的情况', 'GET', '/security/password/check', '密码安全策略', b'1', b'1', '密码安全策略 登录后检查密码相关的情况', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168994, 'PayOrderController#syncById', '同步支付状态', 'POST', '/order/pay/syncById', '支付订单控制器', b'1', b'1', '支付订单控制器 同步支付状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168995, 'GeneralTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/general/template/existsByCodeNotId', '通用模板管理', b'1', b'1', '通用模板管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168996, 'LoginTypeController#page', '分页查询登录方式', 'GET', '/loginType/page', '登录方式管理', b'1', b'1', '登录方式管理 分页查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168997, 'AggregateController#aliH5Pay', '支付宝通过聚合支付码发起支付', 'POST', '/demo/aggregate/aliH5Pay', '聚合支付', b'1', b'1', '聚合支付 支付宝通过聚合支付码发起支付', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168998, 'QuartzJobLogController#page', '分页', 'GET', '/quartz/log/page', '定时任务执行日志', b'1', b'1', '定时任务执行日志 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152168999, 'PayOrderController#close', '关闭支付记录', 'POST', '/order/pay/close', '支付订单控制器', b'1', b'1', '支付订单控制器 关闭支付记录', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169000, 'DataRoleController#saveUserAssign', '保存数据角色关联用户权限', 'POST', '/data/role/saveUserAssign', '数据角色配置', b'1', b'1', '数据角色配置 保存数据角色关联用户权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169001, 'DictionaryItemController#add', '添加字典项(返回字典项对象)', 'POST', '/dict/item/add', '字典项', b'1', b'1', '字典项 添加字典项(返回字典项对象)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169002, 'QuartzJobController#update', '更新', 'POST', '/quartz/update', '定时任务', b'1', b'1', '定时任务 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169003, 'MailConfigController#delete', '删除', 'DELETE', '/mail/config/delete', '邮箱配置', b'1', b'1', '邮箱配置 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169004, 'UserAdminController#banBatch', '批量封禁用户', 'POST', '/user/admin/banBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量封禁用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169005, 'FIleUpLoadController#getFilePreviewUrl', '获取文件预览地址(流量会经过后端)', 'GET', '/file/getFilePreviewUrl', '文件上传', b'1', b'1', '文件上传 获取文件预览地址(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169006, 'DictionaryController#delete', '根据id删除', 'DELETE', '/dict/delete', '字典', b'1', b'1', '字典 根据id删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169007, 'WeChatQrLoginController#getStatus', '获取扫码状态', 'GET', '/token/wechat/qr/getStatus', '微信扫码登录', b'1', b'1', '微信扫码登录 获取扫码状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169008, 'PermPathController#add', '添加权限', 'POST', '/perm/path/add', '请求权限管理', b'1', b'1', '请求权限管理 添加权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169009, 'ChinaWordController#refresh', '刷新缓存', 'POST', '/chinaword/refresh', '敏感词管理', b'1', b'1', '敏感词管理 刷新缓存', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169010, 'AlipayConfigController#getConfig', '获取配置', 'GET', '/alipay/config/getConfig', '支付宝配置', b'1', b'1', '支付宝配置 获取配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169011, 'PayCallbackController#wechatPayNotify', '微信支付信息回调', 'POST', '/callback/pay/wechat', '支付通道信息回调', b'1', b'1', '支付通道信息回调 微信支付信息回调', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169012, 'DataResultController#test', '测试SQL解析和执行', 'POST', '/data/result/test', 'SQL查询', b'1', b'1', 'SQL查询 测试SQL解析和执行', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169013, 'SiteMessageController#delete', '删除消息', 'DELETE', '/site/message/delete', '站内信', b'1', b'1', '站内信 删除消息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169014, 'LoginTypeController#findByCode', '通过code查询登录方式', 'GET', '/loginType/findByCode', '登录方式管理', b'1', b'1', '登录方式管理 通过code查询登录方式', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169015, 'GeneralTemplateController#delete', '删除', 'DELETE', '/general/template/delete', '通用模板管理', b'1', b'1', '通用模板管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169016, 'PayReconcileOrderController#findById', '订单详情', 'GET', '/order/reconcile/findById', '对账控制器', b'1', b'1', '对账控制器 订单详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169017, 'DynamicDataSourceController#testConnectionById', '测试连接(根据主键ID)', 'GET', '/dynamic/source/testConnectionById', '动态数据源管理', b'1', b'1', '动态数据源管理 测试连接(根据主键ID)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169018, 'SiteMessageController#send', '发送站内信', 'POST', '/site/message/send', '站内信', b'1', b'1', '站内信 发送站内信', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169019, 'SiteMessageController#pageByReceive', '接收消息分页', 'GET', '/site/message/pageByReceive', '站内信', b'1', b'1', '站内信 接收消息分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169020, 'NcDemoController#sendDingFileMsg', '钉钉文件消息测试', 'POST', '/nc/test/sendDingFileMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉文件消息测试', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169021, 'MultipleOpenApiWebMvcResource#openapiYaml', 'openapiYaml', 'GET', '/v3/api-docs.yaml/{group}', 'MultipleOpenApiWebMvcResource', b'1', b'1', 'MultipleOpenApiWebMvcResource openapiYaml', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169022, 'RolePathController#save', '保存角色请求权限关联关系', 'POST', '/role/path/save', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 保存角色请求权限关联关系', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169023, 'WeChatMenuController#importMenu', '导入微信自定义菜单到系统中', 'POST', '/wechat/menu/importMenu', '微信菜单管理', b'1', b'1', '微信菜单管理 导入微信自定义菜单到系统中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169024, 'ChinaWordController#findById', '通过ID查询', 'GET', '/chinaword/findById', '敏感词管理', b'1', b'1', '敏感词管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169025, 'RoleMenuController#findPermissionIdsByRole', '获取当前角色下关联权限id集合(包含权限码和菜单)', 'GET', '/role/menu/findPermissionIdsByRole', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取当前角色下关联权限id集合(包含权限码和菜单)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169026, 'DictionaryItemController#findById', '根据字典项ID查询', 'GET', '/dict/item/findById', '字典项', b'1', b'1', '字典项 根据字典项ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169027, 'UserRoleController#saveAssignBatch', '给用户分配角色(批量)', 'POST', '/user/role/saveAssignBatch', '用户角色管理', b'1', b'1', '用户角色管理 给用户分配角色(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169028, 'SmsTemplateController#page', '分页查询', 'GET', '/sms/template/page', '短信模板配置', b'1', b'1', '短信模板配置 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169029, 'DataResultController#querySql', '执行SQL查询语句', 'POST', '/data/result/querySql', 'SQL查询', b'1', b'1', 'SQL查询 执行SQL查询语句', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169030, 'PayRefundOrderController#findById', '查询单条', 'GET', '/order/refund/findById', '支付退款控制器', b'1', b'1', '支付退款控制器 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169031, 'UserAssistController#sendCurrentEmailChangeCaptcha', '给当前用户发送更改邮箱验证码', 'POST', '/user/sendCurrentEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 给当前用户发送更改邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169032, 'PayCallbackRecordController#page', '分页查询', 'GET', '/record/callback/page', '支付回调信息记录', b'1', b'1', '支付回调信息记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169033, 'FIleUpLoadController#getFilePreviewUrlPrefix', '获取文件预览地址前缀', 'GET', '/file/getFilePreviewUrlPrefix', '文件上传', b'1', b'1', '文件上传 获取文件预览地址前缀', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169034, 'AlipayConfigController#readPem', '读取证书文件内容', 'POST', '/alipay/config/readPem', '支付宝配置', b'1', b'1', '支付宝配置 读取证书文件内容', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169035, 'DynamicFormController#findAll', '查询所有', 'GET', '/dynamic/form/findAll', '动态表单', b'1', b'1', '动态表单 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169036, 'PermMenuController#existsByPermCode', '编码是否被使用(不包含自己)', 'GET', '/perm/menu/existsByPermCodeNotId', '菜单和权限码', b'1', b'1', '菜单和权限码 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169037, 'DataRoleController#update', '更新', 'POST', '/data/role/update', '数据角色配置', b'1', b'1', '数据角色配置 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169038, 'CashierController#getPayEnv', '获取支付环境', 'GET', '/demo/cashier/getPayEnv', '结算台演示', b'1', b'1', '结算台演示 获取支付环境', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169039, 'PermPathController#delete', '删除权限', 'DELETE', '/perm/path/delete', '请求权限管理', b'1', b'1', '请求权限管理 删除权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169040, 'AggregateController#getWxJsapiPay', '获取微信支付调起Jsapi支付的信息', 'POST', '/demo/aggregate/getWxJsapiPay', '聚合支付', b'1', b'1', '聚合支付 获取微信支付调起Jsapi支付的信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169041, 'PayReconcileOrderController#downAndSave', '手动触发对账文件下载', 'POST', '/order/reconcile/downAndSave', '对账控制器', b'1', b'1', '对账控制器 手动触发对账文件下载', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169042, 'QuartzJobController#start', '启动', 'POST', '/quartz/start', '定时任务', b'1', b'1', '定时任务 启动', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169043, 'UserAssistController#validateEmailCaptcha', '验证更改/绑定邮箱验证码', 'GET', '/user/validateEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证更改/绑定邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169044, 'DynamicDataSourceController#delete', '删除', 'DELETE', '/dynamic/source/delete', '动态数据源管理', b'1', b'1', '动态数据源管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169045, 'SystemParamController#findById', '获取单条', 'GET', '/system/param/findById', '系统参数', b'1', b'1', '系统参数 获取单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169046, 'WeChatMenuController#publish', '发布菜单', 'POST', '/wechat/menu/publish', '微信菜单管理', b'1', b'1', '微信菜单管理 发布菜单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169047, 'PayCallbackController#aliPayNotify', '支付宝信息回调', 'POST', '/callback/pay/alipay', '支付通道信息回调', b'1', b'1', '支付通道信息回调 支付宝信息回调', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169048, 'DynamicDataSourceController#removeDataSourceByKey', '从数据源列表中删除指定数据源', 'DELETE', '/dynamic/source/removeDataSourceByKey', '动态数据源管理', b'1', b'1', '动态数据源管理 从数据源列表中删除指定数据源', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169049, 'QuartzJobController#execute', '立即执行', 'POST', '/quartz/execute', '定时任务', b'1', b'1', '定时任务 立即执行', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169050, 'DynamicDataSourceController#page', '分页查询', 'GET', '/dynamic/source/page', '动态数据源管理', b'1', b'1', '动态数据源管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169051, 'DictionaryController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/dict/existsByCodeNotId', '字典', b'1', b'1', '字典 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169052, 'PayRepairRecordController#page', '分页查询', 'GET', '/record/repair/page', '支付修复记录', b'1', b'1', '支付修复记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169053, 'UserDeptController#saveAssignBatch', '给用户分配部门(批量)', 'POST', '/user/dept/saveAssignBatch', '用户部门关联关系', b'1', b'1', '用户部门关联关系 给用户分配部门(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169054, 'PayReconcileOrderController#create', '手动创建对账订单', 'POST', '/order/reconcile/create', '对账控制器', b'1', b'1', '对账控制器 手动创建支付订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169055, 'UserAdminController#restartPassword', '重置密码', 'POST', '/user/admin/restartPassword', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 重置密码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169056, 'CodeGeneratorController#codeGenPreview', '预览生成代码', 'POST', '/gen/code/codeGenPreview', '代码生成', b'1', b'1', '代码生成 预览生成代码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169057, 'NcDemoController#sendDingImageMsg', '钉钉图片消息测试', 'POST', '/nc/test/sendDingImageMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉图片消息测试', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169058, 'TestController#lock1', '锁测试1', 'GET', '/test/lock1', '测试', b'1', b'1', '测试 锁测试1', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169059, 'ForwardFrontController#toH5', 'toH5', 'GET', '/front/', 'ForwardFrontController', b'1', b'1', 'ForwardFrontController toH5', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169060, 'FIleUpLoadController#delete', '删除', 'DELETE', '/file/delete', '文件上传', b'1', b'1', '文件上传 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169061, 'OperateLogController#deleteByDay', '清除指定天数的日志', 'DELETE', '/log/operate/deleteByDay', '操作日志', b'1', b'1', '操作日志 清除指定天数的日志', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169062, 'AggregateController#barCodePay', '通过付款码发起支付', 'POST', '/demo/aggregate/barCodePay', '聚合支付', b'1', b'1', '聚合支付 通过付款码发起支付', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169063, 'SmsChannelConfigController#findAll', '查询所有', 'GET', '/sms/config/findAll', '短信渠道配置', b'1', b'1', '短信渠道配置 查询所有', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169064, 'MessageTemplateController#update', '更新', 'POST', '/message/template/update', '消息模板', b'1', b'1', '消息模板 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169065, 'DingRobotConfigController#page', '分页', 'GET', '/ding/robot/config/page', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169066, 'RoleController#findById', '通过ID查询角色', 'GET', '/role/findById', '角色管理', b'1', b'1', '角色管理 通过ID查询角色', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169067, 'FIleUpLoadController#download', '下载文件(流量会经过后端)', 'GET', '/file/download/{id}', '文件上传', b'1', b'1', '文件上传 下载文件(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169068, 'RoleController#tree', '角色树', 'GET', '/role/tree', '角色管理', b'1', b'1', '角色管理 角色树', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169069, 'RoleController#dropdown', '角色下拉框', 'GET', '/role/dropdown', '角色管理', b'1', b'1', '角色管理 角色下拉框', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169070, 'WeChatPortalController#auth', 'auth', 'GET', '/wechat/portal', '微信接入入口', b'1', b'1', '微信接入入口 auth', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169071, 'UserAssistController#sendEmailForgetCaptcha', '发送找回密码邮箱验证码', 'POST', '/user/sendEmailForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送找回密码邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169072, 'DeptController#tree', '树状展示', 'GET', '/dept/tree', '部门管理', b'1', b'1', '部门管理 树状展示', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169073, 'QuartzJobController#judgeJobClass', '判断是否是定时任务类', 'GET', '/quartz/judgeJobClass', '定时任务', b'1', b'1', '定时任务 判断是否是定时任务类', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169075, 'WeChatArticleController#page', '分页', 'GET', '/wechat/article/page', '微信文章管理', b'1', b'1', '微信文章管理 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169076, 'AggregateController#qrPayPage', '聚合支付扫码跳转中间页', 'GET', '/demo/aggregate/qrPayPage/{code}', '聚合支付', b'1', b'1', '聚合支付 聚合支付扫码跳转中间页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169077, 'UniQueryController#queryPayOrder', '查询支付订单', 'POST', '/uni/query/payOrder', '统一查询接口', b'1', b'1', '统一查询接口 查询支付订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169078, 'ChinaRegionController#findAllProvinceAndCity', '获取省市二级联动列表', 'GET', '/china/region/findAllProvinceAndCity', '中国行政区划', b'1', b'1', '中国行政区划 获取省市二级联动列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169079, 'WeChatMediaController#deleteFile', '删除素材', 'DELETE', '/wechat/media/deleteFile', '微信素材管理', b'1', b'1', '微信素材管理 删除素材', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169080, 'DataRoleController#delete', '删除', 'DELETE', '/data/role/delete', '数据角色配置', b'1', b'1', '数据角色配置 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169081, 'UserDeptController#findAllByUser', '根据用户ID获取到部门集合', 'GET', '/user/dept/findAllByUser', '用户部门关联关系', b'1', b'1', '用户部门关联关系 根据用户ID获取到部门集合', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169082, 'SystemParamController#page', '分页', 'GET', '/system/param/page', '系统参数', b'1', b'1', '系统参数 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169083, 'DynamicDataSourceController#findAllDataSource', '查询当前数据源列表', 'GET', '/dynamic/source/findAllDataSource', '动态数据源管理', b'1', b'1', '动态数据源管理 查询当前数据源列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169084, 'PayChannelConfigController#findById', '根据ID获取', 'GET', '/pay/channel/config/findById', '支付通道信息', b'1', b'1', '支付通道信息 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169085, 'RoleController#delete', '删除角色', 'DELETE', '/role/delete', '角色管理', b'1', b'1', '角色管理 删除角色', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169086, 'PayOrderController#listByChannel', '查询支付订单关联支付通道订单', 'GET', '/order/pay/listByChannel', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付订单关联支付通道订单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169087, 'UserDataRoleController#saveAssignBatch', '给用户分配权限(批量)', 'POST', '/user/data/role/saveAssignBatch', '用户数据角色配置', b'1', b'1', '用户数据角色配置 给用户分配权限(批量)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169088, 'DeptController#findById', '获取', 'GET', '/dept/findById', '部门管理', b'1', b'1', '部门管理 获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169089, 'CashierController#getUniCashierUrl', '获取手机收银台链接', 'GET', '/demo/cashier/getUniCashierUrl', '结算台演示', b'1', b'1', '结算台演示 获取手机收银台链接', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169090, 'QuartzJobController#delete', '删除', 'DELETE', '/quartz/delete', '定时任务', b'1', b'1', '定时任务 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169091, 'PermMenuController#update', '修改菜单权限', 'POST', '/perm/menu/update', '菜单和权限码', b'1', b'1', '菜单和权限码 修改菜单权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169092, 'PaySyncRecordController#findById', '查询单条', 'GET', '/record/sync/findById', '支付同步记录控制器', b'1', b'1', '支付同步记录控制器 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169093, 'ChinaWordController#delete', '删除', 'DELETE', '/chinaword/delete', '敏感词管理', b'1', b'1', '敏感词管理 删除', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169094, 'WeChatMenuController#clearMenu', '清空微信自定义菜单', 'POST', '/wechat/menu/clearMenu', '微信菜单管理', b'1', b'1', '微信菜单管理 清空微信自定义菜单', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169095, 'UserDataRoleController#findDataRoleIdByUser', '根据用户ID获取到数据角色Id', 'GET', '/user/data/role/findDataRoleIdByUser', '用户数据角色配置', b'1', b'1', '用户数据角色配置 根据用户ID获取到数据角色Id', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169096, 'UserAssistController#sendEmailChangeCaptcha', '发送更改/绑定邮箱验证码', 'POST', '/user/sendEmailChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 发送更改/绑定邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169097, 'DataRoleController#deleteUserAssigns', '批量删除数据角色关联用户', 'DELETE', '/data/role/deleteUserAssigns', '数据角色配置', b'1', b'1', '数据角色配置 批量删除数据角色关联用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169098, 'PayReconcileOrderController#page', '订单分页', 'GET', '/order/reconcile/page', '对账控制器', b'1', b'1', '对账控制器 订单分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169099, 'UniPayController#syncRefund', '退款状态同步', 'POST', '/unipay/syncRefund', '统一支付接口', b'1', b'1', '统一支付接口 退款状态同步', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169100, 'WeChatMediaController#pageFile', '非图文素材分页', 'GET', '/wechat/media/pageFile', '微信素材管理', b'1', b'1', '微信素材管理 非图文素材分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169101, 'SystemParamController#findByParamKey', '根据键名获取键值', 'GET', '/system/param/findByParamKey', '系统参数', b'1', b'1', '系统参数 根据键名获取键值', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169102, 'DynamicDataSourceController#existsByDataSourceKey', '是否已经添加到连接池中', 'GET', '/dynamic/source/existsByDataSourceKey', '动态数据源管理', b'1', b'1', '动态数据源管理 是否已经添加到连接池中', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169103, 'MessageTemplateController#add', '添加', 'POST', '/message/template/add', '消息模板', b'1', b'1', '消息模板 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169104, 'DataRoleController#existsByCode', '编码是否被使用', 'GET', '/data/role/existsByCode', '数据角色配置', b'1', b'1', '数据角色配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169105, 'DynamicDataSourceController#update', '修改', 'POST', '/dynamic/source/update', '动态数据源管理', b'1', b'1', '动态数据源管理 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169106, 'OperateLogController#page', '分页', 'GET', '/log/operate/page', '操作日志', b'1', b'1', '操作日志 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169107, 'NcDemoController#p1', '企微机器人图片发送', 'POST', '/nc/test/p1', 'nc测试', b'1', b'1', 'nc测试 企微机器人图片发送', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169108, 'PayOrderController#findById', '查询订单详情', 'GET', '/order/pay/findById', '支付订单控制器', b'1', b'1', '支付订单控制器 查询订单详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169109, 'OnlineUserController#page', '分页', 'GET', '/online/user/page', '在线用户', b'1', b'1', '在线用户 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169110, 'RoleController#existsByName', '名称是否被使用(不包含自己)', 'GET', '/role/existsByNameNotId', '角色管理', b'1', b'1', '角色管理 名称是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169111, 'WecomRobotConfigController#page', '分页', 'GET', '/wecom/robot/config/page', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169112, 'DataRoleController#findById', '获取', 'GET', '/data/role/findById', '数据角色配置', b'1', b'1', '数据角色配置 获取', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169113, 'DataRoleController#findAll', '查询全部', 'GET', '/data/role/findAll', '数据角色配置', b'1', b'1', '数据角色配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169114, 'OpenApiWebMvcResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs', 'OpenApiWebMvcResource', b'1', b'1', 'OpenApiWebMvcResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169115, 'CaptchaController#imgCaptcha', '获取图片验证码', 'POST', '/captcha/imgCaptcha', '验证码服务', b'1', b'1', '验证码服务 获取图片验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169116, 'WecomRobotConfigController#update', '修改机器人配置', 'POST', '/wecom/robot/config/update', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 修改机器人配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169117, 'PlatformConfigController#update', '更新平台配置项', 'POST', '/platform/config/update', '支付平台配置控制器', b'1', b'1', '支付平台配置控制器 更新平台配置项', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169118, 'ClientController#add', '添加', 'POST', '/client/add', '认证终端', b'1', b'1', '认证终端 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169119, 'DatabaseTableController#findByTableName', '获取表信息', 'GET', '/gen/table/findByTableName', '数据库表信息', b'1', b'1', '数据库表信息 获取表信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169120, 'OnlineUserController#kickOut', '踢出用户', 'GET', '/online/user/kickOut', '在线用户', b'1', b'1', '在线用户 踢出用户', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169121, 'UserAdminController#getUserInfoWhole', '查询用户详情', 'GET', '/user/admin/getUserInfoWhole', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 查询用户详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169122, 'WeChatTemplateController#update', '修改', 'POST', '/wechat/template/update', '微信模板消息', b'1', b'1', '微信模板消息 修改', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169123, 'ChinaRegionController#findAllProvince', '获取一级行政区', 'GET', '/china/region/findAllProvince', '中国行政区划', b'1', b'1', '中国行政区划 获取一级行政区', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169124, 'WeChatMenuController#page', '分页查询', 'GET', '/wechat/menu/page', '微信菜单管理', b'1', b'1', '微信菜单管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169125, 'DictionaryController#update', '更新', 'POST', '/dict/update', '字典', b'1', b'1', '字典 更新', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169126, 'PayChannelConfigController#findAll', '查询全部', 'GET', '/pay/channel/config/findAll', '支付通道信息', b'1', b'1', '支付通道信息 查询全部', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169127, 'UserAssistController#validateEmailForgetCaptcha', '验证找回密码邮箱验证码', 'GET', '/user/validateEmailForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证找回密码邮箱验证码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169128, 'ClientController#findById', '通过ID查询', 'GET', '/client/findById', '认证终端', b'1', b'1', '认证终端 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169129, 'PermMenuController#menuAndPermCodeTree', '获取菜单和权限码树', 'GET', '/perm/menu/menuAndPermCodeTree', '菜单和权限码', b'1', b'1', '菜单和权限码 获取菜单和权限码树', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169130, 'QuartzJobController#syncJobStatus', '同步定时任务状态', 'POST', '/quartz/syncJobStatus', '定时任务', b'1', b'1', '定时任务 同步定时任务状态', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169131, 'PermMenuController#add', '添加菜单权限', 'POST', '/perm/menu/add', '菜单和权限码', b'1', b'1', '菜单和权限码 添加菜单权限', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169132, 'ClientController#page', '分页查询', 'GET', '/client/page', '认证终端', b'1', b'1', '认证终端 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169133, 'FIleUpLoadController#findById', '获取单条详情', 'GET', '/file/findById', '文件上传', b'1', b'1', '文件上传 获取单条详情', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169134, 'WeChatQrLoginController#applyQrCode', '申请登录用QR码', 'POST', '/token/wechat/qr/applyQrCode', '微信扫码登录', b'1', b'1', '微信扫码登录 申请登录用QR码', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169135, 'SiteMessageController#cancel', '撤回消息', 'POST', '/site/message/cancel', '站内信', b'1', b'1', '站内信 撤回消息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169136, 'DataRoleController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/data/role/existsByCodeNotId', '数据角色配置', b'1', b'1', '数据角色配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169138, 'DynamicFormController#add', '添加', 'POST', '/dynamic/form/add', '动态表单', b'1', b'1', '动态表单 添加', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169139, 'ChinaRegionController#findAllRegionByParentCode', '根据编码获取下一级行政区划的列表', 'GET', '/china/region/findAllRegionByParentCode', '中国行政区划', b'1', b'1', '中国行政区划 根据编码获取下一级行政区划的列表', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169140, 'DatabaseTableController#getTableGenParam', '获取表相关的代码生成参数信息', 'GET', '/gen/table/getTableGenParam', '数据库表信息', b'1', b'1', '数据库表信息 获取表相关的代码生成参数信息', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169141, 'UniPayController#close', '订单关闭', 'POST', '/unipay/close', '统一支付接口', b'1', b'1', '统一支付接口 订单关闭', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169142, 'LoginTypeController#superPage', '超级查询', 'POST', '/loginType/superPage', '登录方式管理', b'1', b'1', '登录方式管理 超级查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169143, 'DictionaryController#page', '分页', 'GET', '/dict/page', '字典', b'1', b'1', '字典 分页', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169144, 'DingRobotConfigController#update', '修改机器人配置', 'POST', '/ding/robot/config/update', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 修改机器人配置', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169145, 'PayCloseRecordController#page', '分页查询', 'GET', '/record/close/page', '支付订单关闭记录', b'1', b'1', '支付订单关闭记录 分页查询', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169146, 'PayCallbackRecordController#findById', '查询单条', 'GET', '/record/callback/findById', '支付回调信息记录', b'1', b'1', '支付回调信息记录 查询单条', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.139000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527152169147, 'MessageTemplateController#rendering', '渲染模板', 'POST', '/message/template/rendering', '消息模板', b'1', b'1', '消息模板 渲染模板', 1399985191002447872, '2024-02-13 14:55:54.139000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363264, 'NcDemoController#p2', '企微机器人文件发送', 'POST', '/nc/test/p2', 'nc测试', b'1', b'1', 'nc测试 企微机器人文件发送', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363265, 'UserDataRoleController#saveAssign', '给用户分配数据角色', 'POST', '/user/data/role/saveAssign', '用户数据角色配置', b'1', b'1', '用户数据角色配置 给用户分配数据角色', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363266, 'MultipleOpenApiWebMvcResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs/{group}', 'MultipleOpenApiWebMvcResource', b'1', b'1', 'MultipleOpenApiWebMvcResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363267, 'DynamicDataSourceController#add', '添加', 'POST', '/dynamic/source/add', '动态数据源管理', b'1', b'1', '动态数据源管理 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363268, 'RoleController#update', '修改角色(返回角色对象)', 'POST', '/role/update', '角色管理', b'1', b'1', '角色管理 修改角色(返回角色对象)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363269, 'DataResultController#exportQueryResult', '导出SQL查询的结果', 'POST', '/data/result/exportQueryResult', 'SQL查询', b'1', b'1', 'SQL查询 导出SQL查询的结果', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363270, 'DataRoleController#existsByName', '名称是否被使用', 'GET', '/data/role/existsByName', '数据角色配置', b'1', b'1', '数据角色配置 名称是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363271, 'ClientController#delete', '删除', 'DELETE', '/client/delete', '认证终端', b'1', b'1', '认证终端 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363272, 'UserDeptController#saveAssign', '给用户分配部门', 'POST', '/user/dept/saveAssign', '用户部门关联关系', b'1', b'1', '用户部门关联关系 给用户分配部门', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363273, 'UserAdminController#update', '修改用户', 'POST', '/user/admin/update', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 修改用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363274, 'WecomRobotConfigController#findAll', '查询全部', 'GET', '/wecom/robot/config/findAll', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363275, 'SiteMessageController#countByReceiveNotRead', '获取未读的接收消息条数', 'GET', '/site/message/countByReceiveNotRead', '站内信', b'1', b'1', '站内信 获取未读的接收消息条数', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363276, 'QuartzJobController#findById', '单条', 'GET', '/quartz/findById', '定时任务', b'1', b'1', '定时任务 单条', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363277, 'SmsTemplateController#findById', '通过ID查询', 'GET', '/sms/template/findById', '短信模板配置', b'1', b'1', '短信模板配置 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363278, 'GeneralTemplateController#existsByCode', '编码是否被使用', 'GET', '/general/template/existsByCode', '通用模板管理', b'1', b'1', '通用模板管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363279, 'ChinaWordController#update', '修改', 'POST', '/chinaword/update', '敏感词管理', b'1', b'1', '敏感词管理 修改', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363280, 'ThirdLoginController#callback', '扫码后回调', 'GET', '/auth/third/callback/{loginType}', '三方登录', b'1', b'1', '三方登录 扫码后回调', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363281, 'UserThirdController#unbind', '解绑第三方账号', 'POST', '/user/third/unbind', '用户三方登录管理', b'1', b'1', '用户三方登录管理 解绑第三方账号', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363282, 'SmsChannelConfigController#findById', '通过ID查询', 'GET', '/sms/config/findById', '短信渠道配置', b'1', b'1', '短信渠道配置 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363283, 'WeChatMenuController#delete', '删除', 'DELETE', '/wechat/menu/delete', '微信菜单管理', b'1', b'1', '微信菜单管理 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363284, 'UserInfoController#existsEmail', '邮箱是否被使用', 'GET', '/user/existsEmail', '用户管理', b'1', b'1', '用户管理 邮箱是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363285, 'AggregateController#getInfo', '获取聚合支付信息', 'GET', '/demo/aggregate/getInfo', '聚合支付', b'1', b'1', '聚合支付 获取聚合支付信息', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363286, 'DingRobotConfigController#add', '新增机器人配置', 'POST', '/ding/robot/config/add', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 新增机器人配置', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363287, 'FIleUpLoadController#page', '分页', 'GET', '/file/page', '文件上传', b'1', b'1', '文件上传 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363288, 'MailConfigController#page', '分页', 'GET', '/mail/config/page', '邮箱配置', b'1', b'1', '邮箱配置 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363289, 'PayOrderController#getChannel', '查询支付通道订单详情', 'GET', '/order/pay/getChannel', '支付订单控制器', b'1', b'1', '支付订单控制器 查询支付通道订单详情', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363290, 'DynamicFormController#update', '修改', 'POST', '/dynamic/form/update', '动态表单', b'1', b'1', '动态表单 修改', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363291, 'UserInfoController#updateEmail', '修改邮箱', 'POST', '/user/updateEmail', '用户管理', b'1', b'1', '用户管理 修改邮箱', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363292, 'WecomRobotConfigController#findById', '获取详情', 'GET', '/wecom/robot/config/findById', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 获取详情', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363293, 'RoleMenuController#findMenuIds', '获取权限菜单id列表,不包含资源权限', 'GET', '/role/menu/findMenuIds', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取权限菜单id列表,不包含资源权限', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363294, 'SiteMessageController#saveOrUpdate', '保存站内信草稿', 'POST', '/site/message/saveOrUpdate', '站内信', b'1', b'1', '站内信 保存站内信草稿', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363295, 'PermPathController#page', '权限分页', 'GET', '/perm/path/page', '请求权限管理', b'1', b'1', '请求权限管理 权限分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363296, 'PermPathController#syncSystem', '同步系统请求资源', 'POST', '/perm/path/syncSystem', '请求权限管理', b'1', b'1', '请求权限管理 同步系统请求资源', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363297, 'PayRefundOrderController#syncById', '退款同步', 'POST', '/order/refund/syncById', '支付退款控制器', b'1', b'1', '支付退款控制器 退款同步', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363298, 'OnlineUserController#getSessionByUserId', '获取用户链接信息', 'GET', '/online/user/getSessionByUserId', '在线用户', b'1', b'1', '在线用户 获取用户链接信息', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363299, 'NcDemoController#sendDingMsg', '钉钉消息测试', 'POST', '/nc/test/sendDingMsg', 'nc测试', b'1', b'1', 'nc测试 钉钉消息测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363300, 'UserInfoController#existsUsername', '账号是否被使用(不包含自己)', 'GET', '/user/existsUsernameNotId', '用户管理', b'1', b'1', '用户管理 账号是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363301, 'LoginTypeController#existsByCode', '编码是否被使用', 'GET', '/loginType/existsByCode', '登录方式管理', b'1', b'1', '登录方式管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363302, 'UniPayAssistController#getWxAuthUrl', '获取微信oauth2授权的url', 'POST', '/unipay/assist/getWxAuthUrl', '支付支撑接口', b'1', b'1', '支付支撑接口 获取微信oauth2授权的url', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363303, 'RoleController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/role/existsByCodeNotId', '角色管理', b'1', b'1', '角色管理 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363304, 'CashierController#queryPayOrder', '查询支付订单', 'GET', '/demo/cashier/queryPayOrderSuccess', '结算台演示', b'1', b'1', '结算台演示 查询支付订单', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363305, 'ClientController#findAll', '查询所有', 'GET', '/client/findAll', '认证终端', b'1', b'1', '认证终端 查询所有', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363306, 'PayWayInfoController#update', '更新', 'POST', '/pay/way/info/update', '支付方式管理', b'1', b'1', '支付方式管理 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363307, 'LoginLogController#page', '分页', 'GET', '/log/login/page', '登录日志', b'1', b'1', '登录日志 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363308, 'PasswordSecurityConfigController#isRecentlyUsed', '查看要修改的密码是否重复', 'GET', '/security/password/isRecentlyUsed', '密码安全策略', b'1', b'1', '密码安全策略 查看要修改的密码是否重复', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363309, 'FIleUpLoadController#getFileDownloadUrl', '获取文件下载地址(流量会经过后端)', 'GET', '/file/getFileDownloadUrl', '文件上传', b'1', b'1', '文件上传 获取文件下载地址(流量会经过后端)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363310, 'TokenEndpoint#login', '普通登录', 'POST', '/token/login', '认证相关', b'1', b'1', '认证相关 普通登录', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363311, 'UserRoleController#findRoleIdsByUser', '根据用户ID获取到角色id集合', 'GET', '/user/role/findRoleIdsByUser', '用户角色管理', b'1', b'1', '用户角色管理 根据用户ID获取到角色id集合', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363312, 'PayApiConfigController#findById', '根据ID获取', 'GET', '/pay/api/config/findById', '支付接口配置', b'1', b'1', '支付接口配置 根据ID获取', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363313, 'RoleController#existsByName', '名称是否被使用', 'GET', '/role/existsByName', '角色管理', b'1', b'1', '角色管理 名称是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363314, 'GeneralTemplateController#page', '分页查询', 'GET', '/general/template/page', '通用模板管理', b'1', b'1', '通用模板管理 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363315, 'RolePathController#findIdsByRole', '根据角色id获取关联权限id', 'GET', '/role/path/findIdsByRole', '角色请求权限消息关系', b'1', b'1', '角色请求权限消息关系 根据角色id获取关联权限id', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363316, 'DingRobotConfigController#delete', '删除', 'DELETE', '/ding/robot/config/delete', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363317, 'PermMenuController#findById', '根据id查询', 'GET', '/perm/menu/findById', '菜单和权限码', b'1', b'1', '菜单和权限码 根据id查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363318, 'DingRobotConfigController#findAll', '查询全部', 'GET', '/ding/robot/config/findAll', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363319, 'RoleMenuController#getPermissions', '获取菜单和权限码(根据用户进行筛选)', 'GET', '/role/menu/getPermissions', '角色菜单权限关系', b'1', b'1', '角色菜单权限关系 获取菜单和权限码(根据用户进行筛选)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363320, 'SmsTemplateController#delete', '删除', 'DELETE', '/sms/template/delete', '短信模板配置', b'1', b'1', '短信模板配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363321, 'UserThirdController#bind', '绑定第三方账号', 'POST', '/user/third/bind', '用户三方登录管理', b'1', b'1', '用户三方登录管理 绑定第三方账号', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363322, 'RoleController#existsByCode', '编码是否被使用', 'GET', '/role/existsByCode', '角色管理', b'1', b'1', '角色管理 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363323, 'QuartzJobController#page', '分页', 'GET', '/quartz/page', '定时任务', b'1', b'1', '定时任务 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363324, 'DataRoleController#add', '添加', 'POST', '/data/role/add', '数据角色配置', b'1', b'1', '数据角色配置 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363325, 'SiteMessageController#read', '标为已读', 'POST', '/site/message/read', '站内信', b'1', b'1', '站内信 标为已读', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363326, 'MessageTemplateController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/message/template/existsByCodeNotId', '消息模板', b'1', b'1', '消息模板 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363327, 'UserAssistController#validateCurrentPhoneChangeCaptcha', '验证当前用户发送更改手机号验证码', 'GET', '/user/validateCurrentPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证当前用户发送更改手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363328, 'NcDemoController#recallNotice', '企微消息撤回', 'POST', '/nc/test/recallNotice', 'nc测试', b'1', b'1', 'nc测试 企微消息撤回', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363329, 'WeChatMenuController#findById', '通过ID查询', 'GET', '/wechat/menu/findById', '微信菜单管理', b'1', b'1', '微信菜单管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363330, 'UserAdminController#add', '添加用户', 'POST', '/user/admin/add', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 添加用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363331, 'UniPayController#syncPay', '支付状态同步', 'POST', '/unipay/syncPay', '统一支付接口', b'1', b'1', '统一支付接口 支付状态同步', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363332, 'MailConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/mail/config/existsByCodeNotId', '邮箱配置', b'1', b'1', '邮箱配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363333, 'PayWayInfoController#findAll', '获取全部', 'GET', '/pay/way/info/findAll', '支付方式管理', b'1', b'1', '支付方式管理 获取全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363334, 'SwaggerWelcomeWebMvc#redirectToUi', 'redirectToUi', 'GET', '/swagger-ui.html', 'SwaggerWelcomeWebMvc', b'1', b'1', 'SwaggerWelcomeWebMvc redirectToUi', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363335, 'WecomRobotConfigController#existsByCode', '编码是否被使用', 'GET', '/wecom/robot/config/existsByCode', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363336, 'UserInfoController#existsEmail', '邮箱是否被使用(不包含自己)', 'GET', '/user/existsEmailNotId', '用户管理', b'1', b'1', '用户管理 邮箱是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363337, 'WeChatTemplateController#findById', '通过ID查询', 'GET', '/wechat/template/findById', '微信模板消息', b'1', b'1', '微信模板消息 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363338, 'DatabaseTableController#page', '表列表分页', 'GET', '/gen/table/page', '数据库表信息', b'1', b'1', '数据库表信息 表列表分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363339, 'PermMenuController#existsByPermCode', '编码是否被使用', 'GET', '/perm/menu/existsByPermCode', '菜单和权限码', b'1', b'1', '菜单和权限码 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363340, 'PlatformConfigController#getConfig', '获取平台配置', 'GET', '/platform/config/getConfig', '支付平台配置控制器', b'1', b'1', '支付平台配置控制器 获取平台配置', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363341, 'SmsTemplateController#add', '添加', 'POST', '/sms/template/add', '短信模板配置', b'1', b'1', '短信模板配置 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363342, 'DingRobotConfigController#existsByCode', '编码是否被使用', 'GET', '/ding/robot/config/existsByCode', '钉钉机器人配置', b'1', b'1', '钉钉机器人配置 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363343, 'DeptController#update', '更新', 'POST', '/dept/update', '部门管理', b'1', b'1', '部门管理 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363344, 'UserThirdController#page', '分页', 'GET', '/user/third/page', '用户三方登录管理', b'1', b'1', '用户三方登录管理 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363345, 'WecomRobotConfigController#delete', '删除', 'DELETE', '/wecom/robot/config/delete', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 删除', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363346, 'WecomRobotConfigController#existsByCode', '编码是否被使用(不包含自己)', 'GET', '/wecom/robot/config/existsByCodeNotId', '企业微信机器人配置', b'1', b'1', '企业微信机器人配置 编码是否被使用(不包含自己)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363347, 'WeChatTemplateController#sync', '同步消息模板数据', 'POST', '/wechat/template/sync', '微信模板消息', b'1', b'1', '微信模板消息 同步消息模板数据', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363348, 'CashierController#simplePayCashier', '创建支付订单并发起', 'POST', '/demo/cashier/simplePayCashier', '结算台演示', b'1', b'1', '结算台演示 创建支付订单并发起', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363349, 'LoginTypeController#update', '修改登录方式(返回登录方式对象)', 'POST', '/loginType/update', '登录方式管理', b'1', b'1', '登录方式管理 修改登录方式(返回登录方式对象)', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363350, 'PayApiConfigController#update', '更新', 'POST', '/pay/api/config/update', '支付接口配置', b'1', b'1', '支付接口配置 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363351, 'UniPayController#pay', '统一下单', 'POST', '/unipay/pay', '统一支付接口', b'1', b'1', '统一支付接口 统一下单', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363352, 'UserInfoController#existsUsername', '账号是否被使用', 'GET', '/user/existsUsername', '用户管理', b'1', b'1', '用户管理 账号是否被使用', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363353, 'UserAssistController#validatePhoneForgetCaptcha', '验证找回密码手机验证码', 'GET', '/user/validatePhoneForgetCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 验证找回密码手机验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363354, 'CodeGeneratorController#genCodeZip', '下载生成代码', 'POST', '/gen/code/genCodeZip', '代码生成', b'1', b'1', '代码生成 下载生成代码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363355, 'PermPathController#update', '更新权限', 'POST', '/perm/path/update', '请求权限管理', b'1', b'1', '请求权限管理 更新权限', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363356, 'UserAdminController#unlockBatch', '批量解锁用户', 'POST', '/user/admin/unlockBatch', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 批量解锁用户', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363357, 'BaseApiController#echo', '回声测试', 'GET', '/echo', '系统基础接口', b'1', b'1', '系统基础接口 回声测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363358, 'WeChatMediaController#uploadFile', '上传素材', 'POST', '/wechat/media/uploadFile', '微信素材管理', b'1', b'1', '微信素材管理 上传素材', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363359, 'UserAssistController#sendCurrentPhoneChangeCaptcha', '给当前用户发送更改手机号验证码', 'POST', '/user/sendCurrentPhoneChangeCaptcha', '用户操作支撑服务', b'1', b'1', '用户操作支撑服务 给当前用户发送更改手机号验证码', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363360, 'SystemParamController#existsByKey', '判断编码是否存在', 'GET', '/system/param/existsByKey', '系统参数', b'1', b'1', '系统参数 判断编码是否存在', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363361, 'PayOrderController#page', '分页查询', 'GET', '/order/pay/page', '支付订单控制器', b'1', b'1', '支付订单控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363362, 'GeneralTemplateController#findById', '通过ID查询', 'GET', '/general/template/findById', '通用模板管理', b'1', b'1', '通用模板管理 通过ID查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363363, 'CashierController#getWxAuthUrl', '获取微信授权链接', 'GET', '/demo/cashier/getWxAuthUrl', '结算台演示', b'1', b'1', '结算台演示 获取微信授权链接', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363364, 'DictionaryController#findAll', '查询全部', 'GET', '/dict/findAll', '字典', b'1', b'1', '字典 查询全部', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363365, 'NcDemoController#sendMsg', '邮件消息测试', 'POST', '/nc/test/sendMsg', 'nc测试', b'1', b'1', 'nc测试 邮件消息测试', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363366, 'DictionaryItemController#findAll', '获取全部字典项', 'GET', '/dict/item/findAll', '字典项', b'1', b'1', '字典项 获取全部字典项', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363367, 'PayChannelConfigController#update', '更新', 'POST', '/pay/channel/config/update', '支付通道信息', b'1', b'1', '支付通道信息 更新', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363368, 'PayRefundOrderController#listByChannel', '通道退款订单列表查询', 'GET', '/order/refund/listByChannel', '支付退款控制器', b'1', b'1', '支付退款控制器 通道退款订单列表查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363369, 'DynamicDataSourceController#findAll', '查询所有', 'GET', '/dynamic/source/findAll', '动态数据源管理', b'1', b'1', '动态数据源管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363370, 'WeChatTemplateController#page', '分页查询', 'GET', '/wechat/template/page', '微信模板消息', b'1', b'1', '微信模板消息 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363371, 'DictionaryController#add', '添加', 'POST', '/dict/add', '字典', b'1', b'1', '字典 添加', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363372, 'UserAdminController#page', '分页', 'GET', '/user/admin/page', '管理用户(管理员级别)', b'1', b'1', '管理用户(管理员级别) 分页', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363373, 'SwaggerConfigResource#openapiJson', 'openapiJson', 'GET', '/v3/api-docs/swagger-config', 'SwaggerConfigResource', b'1', b'1', 'SwaggerConfigResource openapiJson', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527156363374, 'PaySyncRecordController#page', '分页查询', 'GET', '/record/sync/page', '支付同步记录控制器', b'1', b'1', '支付同步记录控制器 分页查询', 1399985191002447872, '2024-02-13 14:55:54.140000', 1399985191002447872, '2024-02-13 14:55:54.140000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206464, 'VoucherController#findById', '查询储值卡详情', 'GET', '/voucher/findById', '储值卡管理', b'1', b'1', '储值卡管理 查询储值卡详情', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206465, 'WalletConfigController#update', '更新', 'POST', '/wallet/config/update', '钱包配置', b'1', b'1', '钱包配置 更新', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206466, 'ClientNoticeTaskController#recordPage', '分页查询', 'GET', '/task/notice/record/page', '客户系统通知任务', b'1', b'1', '客户系统通知任务 分页查询', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206467, 'WalletConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/wallet/config/findPayWays', '钱包配置', b'1', b'1', '钱包配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206468, 'VoucherController#voucherImport', '导入储值卡', 'POST', '/voucher/import', '储值卡管理', b'1', b'1', '储值卡管理 导入储值卡', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206469, 'VoucherController#recordFindById', '查询记录详情', 'GET', '/voucher/record/findById', '储值卡管理', b'1', b'1', '储值卡管理 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206470, 'CashController#recordPage', '记录分页', 'GET', '/cash/record/page', '现金控制器', b'1', b'1', '现金控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206471, 'AlipayController#recordPage', '记录分页', 'GET', '/alipay/record/page', '支付宝控制器', b'1', b'1', '支付宝控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206472, 'CashConfigController#getConfig', '获取配置', 'GET', '/cash/config/getConfig', '现金支付配置', b'1', b'1', '现金支付配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206473, 'ClientNoticeReceiveController#pay', '支付消息(对象接收)', 'POST', '/demo/callback/payObject', '回调测试', b'1', b'1', '回调测试 支付消息(对象接收)', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206474, 'VoucherConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/voucher/config/findPayWays', '储值卡支付配置', b'1', b'1', '储值卡支付配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206475, 'ClientNoticeReceiveController#refund', '退款消息(对象)', 'POST', '/demo/callback/refundObject', '回调测试', b'1', b'1', '回调测试 退款消息(对象)', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351862206476, 'WalletController#recharge', '充值', 'POST', '/wallet/recharge', '钱包管理', b'1', b'1', '钱包管理 充值', 1399985191002447872, '2024-02-26 21:48:17.805000', 1399985191002447872, '2024-02-26 21:48:17.805000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400768, 'VoucherController#page', '储值卡分页', 'GET', '/voucher/page', '储值卡管理', b'1', b'1', '储值卡管理 储值卡分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400769, 'PayReturnController#wechat', '微信同步通知', 'GET', '/return/pay/wechat', '支付同步通知', b'1', b'1', '支付同步通知 微信同步通知', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400770, 'WalletController#findRecordById', '查询记录详情', 'GET', '/wallet/record/findById', '钱包管理', b'1', b'1', '钱包管理 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400771, 'WalletConfigController#getConfig', '获取配置', 'GET', '/wallet/config/getConfig', '钱包配置', b'1', b'1', '钱包配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400772, 'WalletController#recordPage', '记录分页', 'GET', '/wallet/record/page', '钱包管理', b'1', b'1', '钱包管理 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400773, 'VoucherController#existsByCardNo', '判断卡号是否存在', 'GET', '/voucher/existsByCardNo', '储值卡管理', b'1', b'1', '储值卡管理 判断卡号是否存在', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400774, 'WalletController#page', '钱包分页', 'GET', '/wallet/page', '钱包管理', b'1', b'1', '钱包管理 钱包分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400775, 'ClientNoticeTaskController#findById', '查询单条', 'GET', '/task/notice/findById', '客户系统通知任务', b'1', b'1', '客户系统通知任务 查询单条', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400776, 'CashController#findById', '查询记录详情', 'GET', '/cash/record/findById', '现金控制器', b'1', b'1', '现金控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400777, 'WeChatPayController#findById', '查询记录详情', 'GET', '/wechat/pay/record/findById', '微信支付控制器', b'1', b'1', '微信支付控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400778, 'ClientNoticeReceiveController#pay', '支付消息(map接收)', 'POST', '/demo/callback/pay', '回调测试', b'1', b'1', '回调测试 支付消息(map接收)', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400779, 'VoucherConfigController#getConfig', '获取配置', 'GET', '/voucher/config/getConfig', '储值卡支付配置', b'1', b'1', '储值卡支付配置 获取配置', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400780, 'WalletController#create', '创建钱包', 'POST', '/wallet/create', '钱包管理', b'1', b'1', '钱包管理 创建钱包', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400781, 'ClientNoticeTaskController#findRecordById', '查询单条', 'GET', '/task/notice/record/findById', '客户系统通知任务', b'1', b'1', '客户系统通知任务 查询单条', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400782, 'CashConfigController#update', '更新', 'POST', '/cash/config/update', '现金支付配置', b'1', b'1', '现金支付配置 更新', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400783, 'ClientNoticeReceiveController#refund', '退款消息', 'POST', '/demo/callback/refund', '回调测试', b'1', b'1', '回调测试 退款消息', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400784, 'WeChatPayController#recordPage', '记录分页', 'GET', '/wechat/pay/record/page', '微信支付控制器', b'1', b'1', '微信支付控制器 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400785, 'PayReturnController#alipay', '支付宝同步跳转连接', 'GET', '/return/pay/alipay', '支付同步通知', b'1', b'1', '支付同步通知 支付宝同步跳转连接', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400786, 'WalletController#findById', '查询钱包详情', 'GET', '/wallet/findById', '钱包管理', b'1', b'1', '钱包管理 查询钱包详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400787, 'CashConfigController#findPayWays', '支付宝支持支付方式', 'GET', '/cash/config/findPayWays', '现金支付配置', b'1', b'1', '现金支付配置 支付宝支持支付方式', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400788, 'AlipayController#findById', '查询记录详情', 'GET', '/alipay/record/findById', '支付宝控制器', b'1', b'1', '支付宝控制器 查询记录详情', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400789, 'VoucherConfigController#update', '更新', 'POST', '/voucher/config/update', '储值卡支付配置', b'1', b'1', '储值卡支付配置 更新', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400790, 'ClientNoticeTaskController#page', '分页查询', 'GET', '/task/notice/page', '客户系统通知任务', b'1', b'1', '客户系统通知任务 分页查询', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400791, 'VoucherController#recordPage', '记录分页', 'GET', '/voucher/record/page', '储值卡管理', b'1', b'1', '储值卡管理 记录分页', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400792, 'ClientNoticeTaskController#resetSend', '重新发送消息通知', 'POST', '/task/notice/resetSend', '客户系统通知任务', b'1', b'1', '客户系统通知任务 重新发送消息通知', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400793, 'WalletController#deduct', '扣减', 'POST', '/wallet/deduct', '钱包管理', b'1', b'1', '钱包管理 扣减', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1762112351866400794, 'WalletController#existsByUserId', '判断用户是否开通了钱包', 'GET', '/wallet/existsByUserId', '钱包管理', b'1', b'1', '钱包管理 判断用户是否开通了钱包', 1399985191002447872, '2024-02-26 21:48:17.806000', 1399985191002447872, '2024-02-26 21:48:17.806000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303616, 'ReconcileOrderController#pageDiff', '对账差异分页', 'GET', '/order/reconcile/diff/page', '对账控制器', b'1', b'1', '对账控制器 对账差异分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303617, 'ReconcileOrderController#findDiffById', '对账差异详情', 'GET', '/order/reconcile/diff/findById', '对账控制器', b'1', b'1', '对账控制器 对账差异详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303618, 'ReconcileOrderController#findDetailById', '对账明细详情', 'GET', '/order/reconcile/detail/findById', '对账控制器', b'1', b'1', '对账控制器 对账明细详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303619, 'ReconcileOrderController#compare', '手动触发对账单比对', 'POST', '/order/reconcile/compare', '对账控制器', b'1', b'1', '对账控制器 手动触发对账单比对', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1764663810424303620, 'ReconcileOrderController#pageDetail', '对账明细分页', 'GET', '/order/reconcile/detail/page', '对账控制器', b'1', b'1', '对账控制器 对账明细分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994971140096, 'RefundOrderController#resetRefund', '重新发起退款', 'POST', '/order/refund/resetRefund', '支付退款控制器', b'1', b'1', '支付退款控制器 重新发起退款', 1399985191002447872, '2024-03-14 18:17:53.396000', 1399985191002447872, '2024-03-14 18:17:53.397000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528704, 'UnionPayConfigController#getConfig', '获取配置', 'GET', '/union/pay/config/getConfig', '云闪付配置', b'1', b'1', '云闪付配置 获取配置', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528705, 'UnionPayController#findById', '查询记录详情', 'GET', '/union/pay/record/findById', '云闪付控制器', b'1', b'1', '云闪付控制器 查询记录详情', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528706, 'UnionPayController#recordPage', '记录分页', 'GET', '/union/pay/record/page', '云闪付控制器', b'1', b'1', '云闪付控制器 记录分页', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528707, 'UnionPayConfigController#update', '更新', 'POST', '/union/pay/config/update', '云闪付配置', b'1', b'1', '云闪付配置 更新', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528708, 'PayReturnController#union', '云闪付同步通知', 'POST', '/return/pay/union', '支付同步通知', b'1', b'1', '支付同步通知 云闪付同步通知', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528709, 'PayCallbackController#unionPayNotify', '云闪付支付信息回调', 'POST', '/callback/pay/union', '支付通道信息回调', b'1', b'1', '支付通道信息回调 云闪付支付信息回调', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528710, 'UnionPayConfigController#toBase64', '读取证书文件内容', 'POST', '/union/pay/config/toBase64', '云闪付配置', b'1', b'1', '云闪付配置 读取证书文件内容', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1768219994979528711, 'UnionPayConfigController#findPayWays', '支持的支付方式', 'GET', '/union/pay/config/findPayWays', '云闪付配置', b'1', b'1', '云闪付配置 支持的支付方式', 1399985191002447872, '2024-03-14 18:17:53.398000', 1399985191002447872, '2024-03-14 18:17:53.398000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460544, 'CockpitReportController#getRefundChannelInfo', '显示通道退款订单金额和订单数', 'GET', '/report/cockpit/getRefundChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道退款订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460545, 'CockpitReportController#getRefundAmount', '退款金额(分)', 'GET', '/report/cockpit/getRefundAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460546, 'CockpitReportController#getRefundOrderCount', '退款订单数量', 'GET', '/report/cockpit/getRefundOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 退款订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460547, 'CockpitReportController#getPayChannelInfo', '显示通道支付订单金额和订单数', 'GET', '/report/cockpit/getPayChannelInfo', '驾驶舱接口', b'1', b'1', '驾驶舱接口 显示通道支付订单金额和订单数', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460548, 'ReconcileOrderController#upload', '手动上传对账单文件', 'POST', '/order/reconcile/upload', '对账控制器', b'1', b'1', '对账控制器 手动上传对账单文件', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460549, 'CockpitReportController#getPayAmount', '支付金额(分)', 'GET', '/report/cockpit/getPayAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1772446740356460550, 'CockpitReportController#getPayOrderCount', '支付订单数量', 'GET', '/report/cockpit/getPayOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); + +-- ---------------------------- +-- Table structure for iam_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role`; +CREATE TABLE `iam_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `pid` bigint(20) NULL DEFAULT NULL COMMENT '父ID', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role +-- ---------------------------- +INSERT INTO `iam_role` VALUES (1757297023118462976, 'daxpayAdmin', NULL, '支付网关管理员', b'0', '', 1399985191002447872, '2024-02-13 14:53:54', 1399985191002447872, '2024-02-13 14:53:54', 0, 0); +INSERT INTO `iam_role` VALUES (1757298887092326400, 'daxpayDemo', 1757297023118462976, '支付演示角色', b'0', '用于进行演示的角色, 没有修改和删除的权限', 1399985191002447872, '2024-02-13 15:01:18', 1399985191002447872, '2024-02-13 15:01:18', 0, 0); + +-- ---------------------------- +-- Table structure for iam_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role_menu`; +CREATE TABLE `iam_role_menu` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code', + `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role_menu +-- ---------------------------- +INSERT INTO `iam_role_menu` VALUES (1757298674730520576, 1757297023118462976, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298674730520577, 1757297023118462976, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298674730520578, 1757297023118462976, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298674730520579, 1757297023118462976, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298674730520580, 1757297023118462976, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298674730520581, 1757297023118462976, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298674730520582, 1757297023118462976, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298674730520583, 1757297023118462976, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298674730520584, 1757297023118462976, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298674730520585, 1757297023118462976, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298674730520586, 1757297023118462976, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298674730520587, 1757297023118462976, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298674730520588, 1757297023118462976, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298674730520589, 1757297023118462976, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298674730520590, 1757297023118462976, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059200, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059201, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059202, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059203, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059204, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059205, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059206, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059207, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059208, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059209, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059210, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059211, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059212, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059213, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059214, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059215, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059216, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059217, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059218, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059219, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059220, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059221, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059222, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059223, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059224, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059225, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059226, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059227, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059228, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059229, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059230, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059231, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059232, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059233, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059234, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059235, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059236, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059237, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059238, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059239, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059240, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059241, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059242, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059243, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059244, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1757298924107059245, 1757298887092326400, 'dax-pay', 1744271715476684800); +INSERT INTO `iam_role_menu` VALUES (1757298924107059246, 1757298887092326400, 'dax-pay', 1746194891925561344); +INSERT INTO `iam_role_menu` VALUES (1757298924107059247, 1757298887092326400, 'dax-pay', 1744276101384880128); +INSERT INTO `iam_role_menu` VALUES (1757298924107059248, 1757298887092326400, 'dax-pay', 1744372631231995904); +INSERT INTO `iam_role_menu` VALUES (1757298924107059249, 1757298887092326400, 'dax-pay', 1744624886658318336); +INSERT INTO `iam_role_menu` VALUES (1757298924107059250, 1757298887092326400, 'dax-pay', 1745822093382230016); +INSERT INTO `iam_role_menu` VALUES (1757298924107059251, 1757298887092326400, 'dax-pay', 1744642856348520448); +INSERT INTO `iam_role_menu` VALUES (1757298924107059252, 1757298887092326400, 'dax-pay', 1745457623493496832); +INSERT INTO `iam_role_menu` VALUES (1757298924107059253, 1757298887092326400, 'dax-pay', 1745457746529210368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059254, 1757298887092326400, 'dax-pay', 1749262518385082368); +INSERT INTO `iam_role_menu` VALUES (1757298924107059255, 1757298887092326400, 'dax-pay', 1744643265142165504); +INSERT INTO `iam_role_menu` VALUES (1757298924107059256, 1757298887092326400, 'dax-pay', 1744930046228017152); +INSERT INTO `iam_role_menu` VALUES (1757298924107059257, 1757298887092326400, 'dax-pay', 1745126072389963776); +INSERT INTO `iam_role_menu` VALUES (1757298924107059258, 1757298887092326400, 'dax-pay', 1745136155962347520); +INSERT INTO `iam_role_menu` VALUES (1757298924107059259, 1757298887092326400, 'dax-pay', 1745143528663781376); +INSERT INTO `iam_role_menu` VALUES (1762112282006073344, 1757297023118462976, 'dax-pay', 1758860876272861184); +INSERT INTO `iam_role_menu` VALUES (1762112282006073345, 1757297023118462976, 'dax-pay', 1759861648606097408); +INSERT INTO `iam_role_menu` VALUES (1762112282006073346, 1757297023118462976, 'dax-pay', 1759865163772485632); +INSERT INTO `iam_role_menu` VALUES (1762112282006073347, 1757297023118462976, 'dax-pay', 1758861129311027200); +INSERT INTO `iam_role_menu` VALUES (1762112282006073348, 1757297023118462976, 'dax-pay', 1759192238594949120); +INSERT INTO `iam_role_menu` VALUES (1762112282006073349, 1757297023118462976, 'dax-pay', 1759192520611561472); +INSERT INTO `iam_role_menu` VALUES (1762112282006073350, 1757297023118462976, 'dax-pay', 1761429304959528960); +INSERT INTO `iam_role_menu` VALUES (1762112282006073351, 1757297023118462976, 'dax-pay', 1761429682618855424); +INSERT INTO `iam_role_menu` VALUES (1762112282006073352, 1757297023118462976, 'dax-pay', 1759768820429352960); +INSERT INTO `iam_role_menu` VALUES (1762112282006073353, 1757297023118462976, 'dax-pay', 1759769092698402816); +INSERT INTO `iam_role_menu` VALUES (1762112282232565760, 1757298887092326400, 'dax-pay', 1758860876272861184); +INSERT INTO `iam_role_menu` VALUES (1762112282232565761, 1757298887092326400, 'dax-pay', 1759861648606097408); +INSERT INTO `iam_role_menu` VALUES (1762112282232565762, 1757298887092326400, 'dax-pay', 1759865163772485632); +INSERT INTO `iam_role_menu` VALUES (1762112282232565763, 1757298887092326400, 'dax-pay', 1758861129311027200); +INSERT INTO `iam_role_menu` VALUES (1762112282232565764, 1757298887092326400, 'dax-pay', 1759192238594949120); +INSERT INTO `iam_role_menu` VALUES (1762112282232565765, 1757298887092326400, 'dax-pay', 1759192520611561472); +INSERT INTO `iam_role_menu` VALUES (1762112282232565766, 1757298887092326400, 'dax-pay', 1761429304959528960); +INSERT INTO `iam_role_menu` VALUES (1762112282232565767, 1757298887092326400, 'dax-pay', 1761429682618855424); +INSERT INTO `iam_role_menu` VALUES (1762112282232565768, 1757298887092326400, 'dax-pay', 1759768820429352960); +INSERT INTO `iam_role_menu` VALUES (1762112282232565769, 1757298887092326400, 'dax-pay', 1759769092698402816); +INSERT INTO `iam_role_menu` VALUES (1764945575888781312, 1757297023118462976, 'dax-pay', 1764638353289027584); +INSERT INTO `iam_role_menu` VALUES (1764945575888781313, 1757297023118462976, 'dax-pay', 1764638678821543936); +INSERT INTO `iam_role_menu` VALUES (1764945576350154752, 1757298887092326400, 'dax-pay', 1764638353289027584); +INSERT INTO `iam_role_menu` VALUES (1764945576350154753, 1757298887092326400, 'dax-pay', 1764638678821543936); +INSERT INTO `iam_role_menu` VALUES (1768220067952029696, 1757297023118462976, 'dax-pay', 1768203432981655552); +INSERT INTO `iam_role_menu` VALUES (1768220068631506944, 1757298887092326400, 'dax-pay', 1768203432981655552); + +-- ---------------------------- +-- Table structure for iam_role_path +-- ---------------------------- +DROP TABLE IF EXISTS `iam_role_path`; +CREATE TABLE `iam_role_path` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `permission_id` bigint(20) NOT NULL COMMENT '请求权限id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_role_path +-- ---------------------------- +INSERT INTO `iam_role_path` VALUES (1757299898544541696, 1757297023118462976, 1757297527147974745); +INSERT INTO `iam_role_path` VALUES (1757299898544541697, 1757297023118462976, 1757297527147974777); +INSERT INTO `iam_role_path` VALUES (1757299898544541698, 1757297023118462976, 1757297527147974746); +INSERT INTO `iam_role_path` VALUES (1757299898544541699, 1757297023118462976, 1757297527147974744); +INSERT INTO `iam_role_path` VALUES (1757299898544541700, 1757297023118462976, 1757297527147974692); +INSERT INTO `iam_role_path` VALUES (1757299898544541701, 1757297023118462976, 1757297527152169034); +INSERT INTO `iam_role_path` VALUES (1757299898544541702, 1757297023118462976, 1757297527152169010); +INSERT INTO `iam_role_path` VALUES (1757299898544541703, 1757297023118462976, 1757297527147974778); +INSERT INTO `iam_role_path` VALUES (1757299898544541704, 1757297023118462976, 1757297527147974668); +INSERT INTO `iam_role_path` VALUES (1757299898544541705, 1757297023118462976, 1757297527152169052); +INSERT INTO `iam_role_path` VALUES (1757299898544541706, 1757297023118462976, 1757297527147974730); +INSERT INTO `iam_role_path` VALUES (1757299898544541709, 1757297023118462976, 1757297527152169077); +INSERT INTO `iam_role_path` VALUES (1757299898544541710, 1757297023118462976, 1757297527152168990); +INSERT INTO `iam_role_path` VALUES (1757299898544541711, 1757297023118462976, 1757297527152169098); +INSERT INTO `iam_role_path` VALUES (1757299898544541712, 1757297023118462976, 1757297527152169054); +INSERT INTO `iam_role_path` VALUES (1757299898544541713, 1757297023118462976, 1757297527152169041); +INSERT INTO `iam_role_path` VALUES (1757299898544541714, 1757297023118462976, 1757297527152169016); +INSERT INTO `iam_role_path` VALUES (1757299898544541717, 1757297023118462976, 1757297527156363367); +INSERT INTO `iam_role_path` VALUES (1757299898544541718, 1757297023118462976, 1757297527152169126); +INSERT INTO `iam_role_path` VALUES (1757299898544541719, 1757297023118462976, 1757297527152169084); +INSERT INTO `iam_role_path` VALUES (1757299898544541720, 1757297023118462976, 1757297527156363350); +INSERT INTO `iam_role_path` VALUES (1757299898544541721, 1757297023118462976, 1757297527156363312); +INSERT INTO `iam_role_path` VALUES (1757299898544541722, 1757297023118462976, 1757297527147974769); +INSERT INTO `iam_role_path` VALUES (1757299898544541723, 1757297023118462976, 1757297527152169146); +INSERT INTO `iam_role_path` VALUES (1757299898544541724, 1757297023118462976, 1757297527152169032); +INSERT INTO `iam_role_path` VALUES (1757299898544541725, 1757297023118462976, 1757297527152169145); +INSERT INTO `iam_role_path` VALUES (1757299898544541726, 1757297023118462976, 1757297527147974691); +INSERT INTO `iam_role_path` VALUES (1757299898825560064, 1757298887092326400, 1757297527147974745); +INSERT INTO `iam_role_path` VALUES (1757299898825560065, 1757298887092326400, 1757297527147974777); +INSERT INTO `iam_role_path` VALUES (1757299898825560067, 1757298887092326400, 1757297527147974744); +INSERT INTO `iam_role_path` VALUES (1757299898825560069, 1757298887092326400, 1757297527152169034); +INSERT INTO `iam_role_path` VALUES (1757299898825560070, 1757298887092326400, 1757297527152169010); +INSERT INTO `iam_role_path` VALUES (1757299898825560071, 1757298887092326400, 1757297527147974778); +INSERT INTO `iam_role_path` VALUES (1757299898825560073, 1757298887092326400, 1757297527152169052); +INSERT INTO `iam_role_path` VALUES (1757299898825560074, 1757298887092326400, 1757297527147974730); +INSERT INTO `iam_role_path` VALUES (1757299898825560077, 1757298887092326400, 1757297527152169077); +INSERT INTO `iam_role_path` VALUES (1757299898825560078, 1757298887092326400, 1757297527152168990); +INSERT INTO `iam_role_path` VALUES (1757299898825560079, 1757298887092326400, 1757297527152169098); +INSERT INTO `iam_role_path` VALUES (1757299898825560080, 1757298887092326400, 1757297527152169054); +INSERT INTO `iam_role_path` VALUES (1757299898825560081, 1757298887092326400, 1757297527152169041); +INSERT INTO `iam_role_path` VALUES (1757299898825560082, 1757298887092326400, 1757297527152169016); +INSERT INTO `iam_role_path` VALUES (1757299898825560086, 1757298887092326400, 1757297527152169126); +INSERT INTO `iam_role_path` VALUES (1757299898825560087, 1757298887092326400, 1757297527152169084); +INSERT INTO `iam_role_path` VALUES (1757299898825560089, 1757298887092326400, 1757297527156363312); +INSERT INTO `iam_role_path` VALUES (1757299898825560090, 1757298887092326400, 1757297527147974769); +INSERT INTO `iam_role_path` VALUES (1757299898825560091, 1757298887092326400, 1757297527152169146); +INSERT INTO `iam_role_path` VALUES (1757299898825560092, 1757298887092326400, 1757297527152169032); +INSERT INTO `iam_role_path` VALUES (1757299898825560093, 1757298887092326400, 1757297527152169145); +INSERT INTO `iam_role_path` VALUES (1757299898825560094, 1757298887092326400, 1757297527147974691); +INSERT INTO `iam_role_path` VALUES (1757300046846742528, 1757297023118462976, 1757297527156363340); +INSERT INTO `iam_role_path` VALUES (1757300046846742529, 1757297023118462976, 1757297527152169117); +INSERT INTO `iam_role_path` VALUES (1757300047022903296, 1757298887092326400, 1757297527156363340); +INSERT INTO `iam_role_path` VALUES (1757301364139216896, 1757297023118462976, 1757297527156363333); +INSERT INTO `iam_role_path` VALUES (1757301364139216897, 1757297023118462976, 1757297527156363306); +INSERT INTO `iam_role_path` VALUES (1757301364139216898, 1757297023118462976, 1757297527152168980); +INSERT INTO `iam_role_path` VALUES (1757301364311183360, 1757298887092326400, 1757297527156363333); +INSERT INTO `iam_role_path` VALUES (1757301364311183362, 1757298887092326400, 1757297527152168980); +INSERT INTO `iam_role_path` VALUES (1757301683791319040, 1757297023118462976, 1757297527156363361); +INSERT INTO `iam_role_path` VALUES (1757301683791319041, 1757297023118462976, 1757297527156363289); +INSERT INTO `iam_role_path` VALUES (1757301683791319042, 1757297023118462976, 1757297527152169108); +INSERT INTO `iam_role_path` VALUES (1757301683791319043, 1757297023118462976, 1757297527152169086); +INSERT INTO `iam_role_path` VALUES (1757301683791319044, 1757297023118462976, 1757297527152168999); +INSERT INTO `iam_role_path` VALUES (1757301683791319045, 1757297023118462976, 1757297527152168994); +INSERT INTO `iam_role_path` VALUES (1757301683791319046, 1757297023118462976, 1757297527147974782); +INSERT INTO `iam_role_path` VALUES (1757301683791319047, 1757297023118462976, 1757297527156363368); +INSERT INTO `iam_role_path` VALUES (1757301683791319048, 1757297023118462976, 1757297527156363297); +INSERT INTO `iam_role_path` VALUES (1757301683791319049, 1757297023118462976, 1757297527152169030); +INSERT INTO `iam_role_path` VALUES (1757301683791319050, 1757297023118462976, 1757297527147974779); +INSERT INTO `iam_role_path` VALUES (1757301683791319051, 1757297023118462976, 1757297527147974742); +INSERT INTO `iam_role_path` VALUES (1757301683791319052, 1757297023118462976, 1757297527147974662); +INSERT INTO `iam_role_path` VALUES (1757301684013617152, 1757298887092326400, 1757297527156363361); +INSERT INTO `iam_role_path` VALUES (1757301684013617153, 1757298887092326400, 1757297527156363289); +INSERT INTO `iam_role_path` VALUES (1757301684013617154, 1757298887092326400, 1757297527152169108); +INSERT INTO `iam_role_path` VALUES (1757301684013617155, 1757298887092326400, 1757297527152169086); +INSERT INTO `iam_role_path` VALUES (1757301684013617156, 1757298887092326400, 1757297527152168999); +INSERT INTO `iam_role_path` VALUES (1757301684013617157, 1757298887092326400, 1757297527152168994); +INSERT INTO `iam_role_path` VALUES (1757301684013617158, 1757298887092326400, 1757297527147974782); +INSERT INTO `iam_role_path` VALUES (1757301684013617159, 1757298887092326400, 1757297527156363368); +INSERT INTO `iam_role_path` VALUES (1757301684013617160, 1757298887092326400, 1757297527156363297); +INSERT INTO `iam_role_path` VALUES (1757301684013617161, 1757298887092326400, 1757297527152169030); +INSERT INTO `iam_role_path` VALUES (1757301684013617162, 1757298887092326400, 1757297527147974779); +INSERT INTO `iam_role_path` VALUES (1757301684013617163, 1757298887092326400, 1757297527147974742); +INSERT INTO `iam_role_path` VALUES (1757301684013617164, 1757298887092326400, 1757297527147974662); +INSERT INTO `iam_role_path` VALUES (1757305163645964288, 1757297023118462976, 1757297527156363374); +INSERT INTO `iam_role_path` VALUES (1757305163645964289, 1757297023118462976, 1757297527152169092); +INSERT INTO `iam_role_path` VALUES (1757305194193080320, 1757298887092326400, 1757297527156363374); +INSERT INTO `iam_role_path` VALUES (1757305194193080321, 1757298887092326400, 1757297527152169092); +INSERT INTO `iam_role_path` VALUES (1762112867598020608, 1757297023118462976, 1762112351866400794); +INSERT INTO `iam_role_path` VALUES (1762112867598020609, 1757297023118462976, 1762112351866400793); +INSERT INTO `iam_role_path` VALUES (1762112867598020610, 1757297023118462976, 1762112351866400786); +INSERT INTO `iam_role_path` VALUES (1762112867598020611, 1757297023118462976, 1762112351866400780); +INSERT INTO `iam_role_path` VALUES (1762112867598020612, 1757297023118462976, 1762112351866400774); +INSERT INTO `iam_role_path` VALUES (1762112867598020613, 1757297023118462976, 1762112351866400772); +INSERT INTO `iam_role_path` VALUES (1762112867598020614, 1757297023118462976, 1762112351866400770); +INSERT INTO `iam_role_path` VALUES (1762112867598020615, 1757297023118462976, 1762112351862206476); +INSERT INTO `iam_role_path` VALUES (1762112867598020616, 1757297023118462976, 1762112351866400787); +INSERT INTO `iam_role_path` VALUES (1762112867598020617, 1757297023118462976, 1762112351866400782); +INSERT INTO `iam_role_path` VALUES (1762112867598020618, 1757297023118462976, 1762112351862206472); +INSERT INTO `iam_role_path` VALUES (1762112867598020619, 1757297023118462976, 1762112351866400788); +INSERT INTO `iam_role_path` VALUES (1762112867598020620, 1757297023118462976, 1762112351862206471); +INSERT INTO `iam_role_path` VALUES (1762112867598020621, 1757297023118462976, 1762112351866400789); +INSERT INTO `iam_role_path` VALUES (1762112867598020622, 1757297023118462976, 1762112351866400779); +INSERT INTO `iam_role_path` VALUES (1762112867598020623, 1757297023118462976, 1762112351862206474); +INSERT INTO `iam_role_path` VALUES (1762112867598020624, 1757297023118462976, 1762112351866400791); +INSERT INTO `iam_role_path` VALUES (1762112867598020625, 1757297023118462976, 1762112351866400773); +INSERT INTO `iam_role_path` VALUES (1762112867598020626, 1757297023118462976, 1762112351866400768); +INSERT INTO `iam_role_path` VALUES (1762112867598020627, 1757297023118462976, 1762112351862206469); +INSERT INTO `iam_role_path` VALUES (1762112867598020628, 1757297023118462976, 1762112351862206468); +INSERT INTO `iam_role_path` VALUES (1762112867598020629, 1757297023118462976, 1762112351862206464); +INSERT INTO `iam_role_path` VALUES (1762112867598020630, 1757297023118462976, 1762112351866400792); +INSERT INTO `iam_role_path` VALUES (1762112867598020631, 1757297023118462976, 1762112351866400790); +INSERT INTO `iam_role_path` VALUES (1762112867598020632, 1757297023118462976, 1762112351866400781); +INSERT INTO `iam_role_path` VALUES (1762112867598020633, 1757297023118462976, 1762112351866400775); +INSERT INTO `iam_role_path` VALUES (1762112867598020634, 1757297023118462976, 1762112351862206466); +INSERT INTO `iam_role_path` VALUES (1762112867598020635, 1757297023118462976, 1762112351866400776); +INSERT INTO `iam_role_path` VALUES (1762112867598020636, 1757297023118462976, 1762112351862206470); +INSERT INTO `iam_role_path` VALUES (1762112867598020637, 1757297023118462976, 1762112351866400784); +INSERT INTO `iam_role_path` VALUES (1762112867598020638, 1757297023118462976, 1762112351866400777); +INSERT INTO `iam_role_path` VALUES (1762112867598020639, 1757297023118462976, 1762112351866400771); +INSERT INTO `iam_role_path` VALUES (1762112867598020640, 1757297023118462976, 1762112351862206467); +INSERT INTO `iam_role_path` VALUES (1762112867598020641, 1757297023118462976, 1762112351862206465); +INSERT INTO `iam_role_path` VALUES (1762112867837095936, 1757298887092326400, 1762112351866400794); +INSERT INTO `iam_role_path` VALUES (1762112867837095937, 1757298887092326400, 1762112351866400793); +INSERT INTO `iam_role_path` VALUES (1762112867837095938, 1757298887092326400, 1762112351866400786); +INSERT INTO `iam_role_path` VALUES (1762112867837095939, 1757298887092326400, 1762112351866400780); +INSERT INTO `iam_role_path` VALUES (1762112867837095940, 1757298887092326400, 1762112351866400774); +INSERT INTO `iam_role_path` VALUES (1762112867837095941, 1757298887092326400, 1762112351866400772); +INSERT INTO `iam_role_path` VALUES (1762112867837095942, 1757298887092326400, 1762112351866400770); +INSERT INTO `iam_role_path` VALUES (1762112867837095943, 1757298887092326400, 1762112351862206476); +INSERT INTO `iam_role_path` VALUES (1762112867837095944, 1757298887092326400, 1762112351866400787); +INSERT INTO `iam_role_path` VALUES (1762112867837095945, 1757298887092326400, 1762112351866400782); +INSERT INTO `iam_role_path` VALUES (1762112867837095946, 1757298887092326400, 1762112351862206472); +INSERT INTO `iam_role_path` VALUES (1762112867837095947, 1757298887092326400, 1762112351866400788); +INSERT INTO `iam_role_path` VALUES (1762112867837095948, 1757298887092326400, 1762112351862206471); +INSERT INTO `iam_role_path` VALUES (1762112867837095949, 1757298887092326400, 1762112351866400789); +INSERT INTO `iam_role_path` VALUES (1762112867837095950, 1757298887092326400, 1762112351866400779); +INSERT INTO `iam_role_path` VALUES (1762112867837095951, 1757298887092326400, 1762112351862206474); +INSERT INTO `iam_role_path` VALUES (1762112867837095952, 1757298887092326400, 1762112351866400791); +INSERT INTO `iam_role_path` VALUES (1762112867837095953, 1757298887092326400, 1762112351866400773); +INSERT INTO `iam_role_path` VALUES (1762112867837095954, 1757298887092326400, 1762112351866400768); +INSERT INTO `iam_role_path` VALUES (1762112867837095955, 1757298887092326400, 1762112351862206469); +INSERT INTO `iam_role_path` VALUES (1762112867837095956, 1757298887092326400, 1762112351862206468); +INSERT INTO `iam_role_path` VALUES (1762112867837095957, 1757298887092326400, 1762112351862206464); +INSERT INTO `iam_role_path` VALUES (1762112867837095958, 1757298887092326400, 1762112351866400792); +INSERT INTO `iam_role_path` VALUES (1762112867837095959, 1757298887092326400, 1762112351866400790); +INSERT INTO `iam_role_path` VALUES (1762112867837095960, 1757298887092326400, 1762112351866400781); +INSERT INTO `iam_role_path` VALUES (1762112867837095961, 1757298887092326400, 1762112351866400775); +INSERT INTO `iam_role_path` VALUES (1762112867837095962, 1757298887092326400, 1762112351862206466); +INSERT INTO `iam_role_path` VALUES (1762112867837095963, 1757298887092326400, 1762112351866400776); +INSERT INTO `iam_role_path` VALUES (1762112867837095964, 1757298887092326400, 1762112351862206470); +INSERT INTO `iam_role_path` VALUES (1762112867837095965, 1757298887092326400, 1762112351866400784); +INSERT INTO `iam_role_path` VALUES (1762112867837095966, 1757298887092326400, 1762112351866400777); +INSERT INTO `iam_role_path` VALUES (1762112867837095967, 1757298887092326400, 1762112351866400771); +INSERT INTO `iam_role_path` VALUES (1762112867837095968, 1757298887092326400, 1762112351862206467); +INSERT INTO `iam_role_path` VALUES (1762112867837095969, 1757298887092326400, 1762112351862206465); +INSERT INTO `iam_role_path` VALUES (1764931648924622848, 1757297023118462976, 1764663810424303620); +INSERT INTO `iam_role_path` VALUES (1764931648924622849, 1757297023118462976, 1764663810424303619); +INSERT INTO `iam_role_path` VALUES (1764931648924622850, 1757297023118462976, 1764663810424303618); +INSERT INTO `iam_role_path` VALUES (1764931648924622851, 1757297023118462976, 1764663810424303617); +INSERT INTO `iam_role_path` VALUES (1764931648924622852, 1757297023118462976, 1764663810424303616); +INSERT INTO `iam_role_path` VALUES (1768220144112201728, 1757297023118462976, 1768219994971140096); +INSERT INTO `iam_role_path` VALUES (1768220144112201729, 1757297023118462976, 1768219994979528705); +INSERT INTO `iam_role_path` VALUES (1768220144112201730, 1757297023118462976, 1768219994979528706); +INSERT INTO `iam_role_path` VALUES (1768220144611323904, 1757298887092326400, 1768219994971140096); +INSERT INTO `iam_role_path` VALUES (1768220144611323905, 1757298887092326400, 1768219994979528705); +INSERT INTO `iam_role_path` VALUES (1768220144611323906, 1757298887092326400, 1768219994979528706); +INSERT INTO `iam_role_path` VALUES (1772446949400571904, 1757297023118462976, 1772446740356460550); +INSERT INTO `iam_role_path` VALUES (1772446949400571905, 1757297023118462976, 1772446740356460549); +INSERT INTO `iam_role_path` VALUES (1772446949400571906, 1757297023118462976, 1772446740356460547); +INSERT INTO `iam_role_path` VALUES (1772446949400571907, 1757297023118462976, 1772446740356460546); +INSERT INTO `iam_role_path` VALUES (1772446949400571908, 1757297023118462976, 1772446740356460545); +INSERT INTO `iam_role_path` VALUES (1772446949400571909, 1757297023118462976, 1772446740356460544); +INSERT INTO `iam_role_path` VALUES (1772446949400571910, 1757297023118462976, 1772446740356460548); +INSERT INTO `iam_role_path` VALUES (1772446949400571911, 1757297023118462976, 1768219994979528711); +INSERT INTO `iam_role_path` VALUES (1772446949400571912, 1757297023118462976, 1768219994979528710); +INSERT INTO `iam_role_path` VALUES (1772446949400571913, 1757297023118462976, 1768219994979528704); +INSERT INTO `iam_role_path` VALUES (1772446949400571914, 1757297023118462976, 1768219994979528707); +INSERT INTO `iam_role_path` VALUES (1772446952005234688, 1757298887092326400, 1772446740356460550); +INSERT INTO `iam_role_path` VALUES (1772446952005234689, 1757298887092326400, 1772446740356460549); +INSERT INTO `iam_role_path` VALUES (1772446952005234690, 1757298887092326400, 1772446740356460547); +INSERT INTO `iam_role_path` VALUES (1772446952005234691, 1757298887092326400, 1772446740356460546); +INSERT INTO `iam_role_path` VALUES (1772446952005234692, 1757298887092326400, 1772446740356460545); +INSERT INTO `iam_role_path` VALUES (1772446952005234693, 1757298887092326400, 1772446740356460544); +INSERT INTO `iam_role_path` VALUES (1772446952005234694, 1757298887092326400, 1772446740356460548); +INSERT INTO `iam_role_path` VALUES (1772446952005234695, 1757298887092326400, 1768219994979528711); +INSERT INTO `iam_role_path` VALUES (1772446952005234696, 1757298887092326400, 1768219994979528710); +INSERT INTO `iam_role_path` VALUES (1772446952005234697, 1757298887092326400, 1768219994979528704); +INSERT INTO `iam_role_path` VALUES (1772447125519396864, 1757298887092326400, 1764663810424303620); +INSERT INTO `iam_role_path` VALUES (1772447125519396865, 1757298887092326400, 1764663810424303619); +INSERT INTO `iam_role_path` VALUES (1772447125519396866, 1757298887092326400, 1764663810424303618); +INSERT INTO `iam_role_path` VALUES (1772447125519396867, 1757298887092326400, 1764663810424303617); +INSERT INTO `iam_role_path` VALUES (1772447125519396868, 1757298887092326400, 1764663810424303616); + +-- ---------------------------- +-- Table structure for iam_user_data_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_data_role`; +CREATE TABLE `iam_user_data_role` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '数据角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_data_role +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_dept +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_dept`; +CREATE TABLE `iam_user_dept` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_dept +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_expand_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_expand_info`; +CREATE TABLE `iam_user_expand_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `sex` int(4) NULL DEFAULT NULL COMMENT '性别', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像', + `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '上次登录时间', + `current_login_time` datetime(0) NULL DEFAULT NULL COMMENT '本次登录时间', + `initial_password` bit(1) NOT NULL COMMENT '是否初始密码', + `expire_password` bit(1) NOT NULL COMMENT '密码是否过期', + `last_change_password_time` datetime(0) NULL DEFAULT NULL COMMENT '上次修改密码时间', + `register_time` datetime(0) NOT NULL COMMENT '注册时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_expand_info +-- ---------------------------- +INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2024-02-13 14:51:40', '2024-02-13 16:13:07', b'0', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 0, '2024-02-13 16:13:07', 419, b'0'); +INSERT INTO `iam_user_expand_info` VALUES (1757299137932677120, 1, '2024-02-13', NULL, '2024-02-13 15:03:21', '2024-02-13 16:09:27', b'0', b'0', NULL, '2024-02-13 15:02:18', 1399985191002447872, '2024-02-13 15:02:18', 1757299137932677120, '2024-02-13 16:09:44', 3, b'0'); +INSERT INTO `iam_user_expand_info` VALUES (1757317255899869184, NULL, NULL, NULL, NULL, '2024-02-13 16:17:59', b'0', b'0', NULL, '2024-02-13 16:14:18', 1399985191002447872, '2024-02-13 16:14:18', 0, '2024-02-13 16:17:59', 1, b'0'); + +-- ---------------------------- +-- Table structure for iam_user_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_info`; +CREATE TABLE `iam_user_info` ( + `id` bigint(20) NOT NULL, + `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', + `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱', + `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds', + `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员', + `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_info +-- ---------------------------- +INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.cn', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'normal', 1, '2021-06-02 15:04:15', 1399985191002447872, '2024-01-16 09:26:44', 64, 0); +INSERT INTO `iam_user_info` VALUES (1757299137932677120, 'DaxPay演示', 'daxpay', 'f52020dca765fd3943ed40a615dc2c5c', '14443332251', 'daxpay@qq.com', '1580487061605175296', b'0', 'normal', 1399985191002447872, '2024-02-13 15:02:18', 1757299137932677120, '2024-02-13 16:09:44', 2, 0); +INSERT INTO `iam_user_info` VALUES (1757317255899869184, 'DaxPay管理员', 'daxpayadmin', '1e9e3c3deaa4a06d08326e82a49d1b63', '12222333223', 'daxpayadmin@qq.com', '1580487061605175296', b'0', 'normal', 1399985191002447872, '2024-02-13 16:14:18', 1399985191002447872, '2024-02-13 16:14:18', 0, 0); + +-- ---------------------------- +-- Table structure for iam_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_role`; +CREATE TABLE `iam_user_role` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_role +-- ---------------------------- +INSERT INTO `iam_user_role` VALUES (1757299293314863104, 1757299137932677120, 1757298887092326400); +INSERT INTO `iam_user_role` VALUES (1757317495407210496, 1757317255899869184, 1757297023118462976); + +-- ---------------------------- +-- Table structure for iam_user_third +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_third`; +CREATE TABLE `iam_user_third` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId', + `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id', + `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId', + `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id', + `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识', + `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识', + `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_third +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iam_user_third_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_third_info`; +CREATE TABLE `iam_user_third_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型', + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像', + `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_user_third_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for miniapp_feedback_info +-- ---------------------------- +DROP TABLE IF EXISTS `miniapp_feedback_info`; +CREATE TABLE `miniapp_feedback_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `classify` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '问题分类', + `time` datetime(0) NULL DEFAULT NULL COMMENT '时间', + `contact` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '联系方式', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '姓名', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '反馈用户ID', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户反馈信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of miniapp_feedback_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for miniapp_user_protocol +-- ---------------------------- +DROP TABLE IF EXISTS `miniapp_user_protocol`; +CREATE TABLE `miniapp_user_protocol` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '编码', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户协议' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of miniapp_user_protocol +-- ---------------------------- + +-- ---------------------------- +-- Table structure for mtm_table +-- ---------------------------- +DROP TABLE IF EXISTS `mtm_table`; +CREATE TABLE `mtm_table` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `h1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `date` date NULL DEFAULT NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = 'actable测试' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of mtm_table +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_mail_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_mail_config`; +CREATE TABLE `notice_mail_config` ( + `id` bigint(20) NOT NULL, + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host', + `port` int(5) NOT NULL COMMENT '邮箱服务器 port', + `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username', + `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password', + `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender', + `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from', + `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl', + `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_mail_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_message_template +-- ---------------------------- +DROP TABLE IF EXISTS `notice_message_template`; +CREATE TABLE `notice_message_template` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_message_template +-- ---------------------------- +INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0); + +-- ---------------------------- +-- Table structure for notice_site_message +-- ---------------------------- +DROP TABLE IF EXISTS `notice_site_message`; +CREATE TABLE `notice_site_message` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', + `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id', + `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名', + `sender_time` datetime(0) NULL DEFAULT NULL COMMENT '发送时间', + `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态', + `efficient_time` datetime(0) NULL DEFAULT NULL COMMENT '截至有效期', + `cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤回时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_site_message +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_site_message_user +-- ---------------------------- +DROP TABLE IF EXISTS `notice_site_message_user`; +CREATE TABLE `notice_site_message_user` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `message_id` bigint(20) NOT NULL COMMENT '消息id', + `receive_id` bigint(20) NOT NULL COMMENT '接收者id', + `have_read` bit(1) NOT NULL COMMENT '已读/未读', + `read_time` datetime(0) NULL DEFAULT NULL COMMENT '已读时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引', + INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_site_message_user +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_sms_channel_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_channel_config`; +CREATE TABLE `notice_sms_channel_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey', + `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret', + `image` bigint(20) NULL DEFAULT NULL COMMENT '图片', + `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_channel_config +-- ---------------------------- +INSERT INTO `notice_sms_channel_config` VALUES (1688432603289337856, 'alibaba', '阿里云短信', 'normal', '1', '{\"accessKeyId\":\"1231231231232111\",\"accessKeySecret\":\"12312312321111\",\"signature\":\"1231\",\"templateId\":\"2312313\",\"templateName\":\"123\",\"requestUrl\":\"五千二无二\",\"action\":\"SendSms\",\"version\":\"11\",\"regionId\":\"cn-hangzhou\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 14:11:17', 1414143554414059520, '2023-08-07 15:35:34', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688456604610953216, 'huawei', '华为云短信', 'normal', '1', '{\"appKey\":\"1231231231232\",\"appSecret\":\"1111\",\"signature\":\"1\",\"sender\":\"1\",\"templateId\":\"12\",\"statusCallBack\":\"1\",\"url\":\"1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 15:46:39', 1414143554414059520, '2023-08-07 15:46:49', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688461302302732288, 'yunpian', '云片短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"callbackUrl\":null,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 16:05:19', 1414143554414059520, '2023-08-08 14:12:23', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788784751001600, 'tencent', '腾讯短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"sdkAppId\":null,\"territory\":\"ap-guangzhou\",\"connTimeout\":60,\"requestUrl\":\"sms.tencentcloudapi.com\",\"action\":\"SendSms\",\"version\":\"2021-01-11\",\"service\":\"sms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:37', 1414143554414059520, '2023-08-08 13:46:37', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788807228276736, 'uni_sms', '合一短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"isSimple\":true,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:42', 1414143554414059520, '2023-08-08 13:46:43', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788823900635136, 'netease', '网易云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"templateUrl\":\"https://api.netease.im/sms/sendtemplate.action\",\"codeUrl\":\"https://api.netease.im/sms/sendcode.action\",\"verifyUrl\":\"https://api.netease.im/sms/verifycode.action\",\"needUp\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:46', 1414143554414059520, '2023-08-08 13:46:47', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788846944141312, 'ctyun', '天翼云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"requestUrl\":\"https://sms-global.ctapi.ctyun.cn/sms/api/v1\",\"action\":\"SendSms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:52', 1414143554414059520, '2023-08-08 13:46:52', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788862987354112, 'emay', '亿美短信', 'normal', '1', '{\"appId\":\"1\",\"secretKey\":\"1\",\"requestUrl\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:56', 1414143554414059520, '2023-08-08 14:03:04', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788885141667840, 'cloopen', '容联短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"appId\":null,\"baseUrl\":\"https://app.cloopen.com:8883/2013-12-26\",\"serverIp\":null,\"serverPort\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:01', 1414143554414059520, '2023-08-08 13:47:01', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788904481603584, 'jd_cloud', '京东短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"region\":\"cn-north-1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:06', 1414143554414059520, '2023-08-08 13:47:06', 0, b'0'); + +-- ---------------------------- +-- Table structure for notice_sms_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_config`; +CREATE TABLE `notice_sms_config` ( + `id` bigint(18) NOT NULL, + `tid` bigint(18) NOT NULL COMMENT '租户id', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)', + `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `creator` bigint(18) NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `last_modifier` bigint(18) NULL DEFAULT NULL, + `last_modified_time` datetime(0) NULL DEFAULT NULL, + `version` int(10) NULL DEFAULT NULL, + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_sms_template +-- ---------------------------- +DROP TABLE IF EXISTS `notice_sms_template`; +CREATE TABLE `notice_sms_template` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `supplier_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信渠道商类型', + `template_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信渠道商类型', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板名称', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板内容', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '短信模板配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_sms_template +-- ---------------------------- + +-- ---------------------------- +-- Table structure for notice_wechat_config +-- ---------------------------- +DROP TABLE IF EXISTS `notice_wechat_config`; +CREATE TABLE `notice_wechat_config` ( + `id` bigint(18) NOT NULL, + `tid` bigint(18) NOT NULL COMMENT '租户id', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `creator` bigint(18) NULL DEFAULT NULL, + `create_time` datetime(0) NULL DEFAULT NULL, + `last_modifier` bigint(18) NULL DEFAULT NULL, + `last_modified_time` datetime(0) NULL DEFAULT NULL, + `version` int(10) NULL DEFAULT NULL, + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of notice_wechat_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_config`; +CREATE TABLE `pay_alipay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝商户appId', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知页面路径', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知页面路径', + `server_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关地址', + `auth_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '认证类型', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型 RSA2', + `alipay_public_key` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝公钥', + `private_key` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '私钥', + `app_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '应用公钥证书', + `alipay_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝公钥证书', + `alipay_root_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝CA根证书', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', + `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_config +-- ---------------------------- +INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0', NULL, NULL); + +-- ---------------------------- +-- Table structure for pay_alipay_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_reconcile_bill_detail`; +CREATE TABLE `pay_alipay_reconcile_bill_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝交易号', + `out_trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号', + `trade_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `create_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建时间', + `end_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '完成时间', + `store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店编号', + `store_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店名称', + `operator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作员', + `terminal_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端号', + `other_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '对方账户', + `order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额(元)', + `real_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家实收(元)', + `alipay_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝红包(元)', + `jfb_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '集分宝(元)', + `alipay_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝优惠(元)', + `discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家优惠(元)', + `coupon_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '券核销金额(元)', + `coupon_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '券名称', + `coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家红包消费金额(元)', + `card_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡消费金额(元)', + `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款批次号/请求号', + `service_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务费(元)', + `split_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分润(元)', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝业务明细对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_reconcile_bill_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_reconcile_bill_total +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_reconcile_bill_total`; +CREATE TABLE `pay_alipay_reconcile_bill_total` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `store_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店编号', + `store_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '门店名称', + `total_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单总笔数', + `total_refund_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款订单总笔数', + `total_order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额(元)', + `total_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家实收(元)', + `total_discount_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付宝优惠(元)', + `total_coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商家优惠(元)', + `total_consume_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡消费金额(元)', + `total_service_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务费(元)', + `total_share_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分润(元)', + `total_net_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实收净额(元)', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝业务汇总对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_reconcile_bill_total +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_alipay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_alipay_record`; +CREATE TABLE `pay_alipay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝流水记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_alipay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_api_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_api_config`; +CREATE TABLE `pay_api_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', + `api` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口地址', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `notice_support` bit(1) NULL DEFAULT NULL COMMENT '支持回调通知', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notice` bit(1) NULL DEFAULT NULL COMMENT '是否开启回调通知', + `notice_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '默认通知地址', + `req_sign` bit(1) NULL DEFAULT NULL COMMENT '请求参数是否签名', + `res_sign` bit(1) NULL DEFAULT NULL COMMENT '响应参数是否签名', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调信息是否签名', + `record` bit(1) NULL DEFAULT NULL COMMENT '是否记录请求的信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付接口配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_api_config +-- ---------------------------- +INSERT INTO `pay_api_config` VALUES (1, 'pay', '/uniPay/pay', '统一支付接口 ', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/payObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:41', 7, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (2, 'simplePay', '/uniPay/simplePay', '简单支付接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/payObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:44', 11, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (3, 'close', '/uniPay/close', '支付关闭接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (4, 'refund', '/uniPay/refund', '统一退款接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/refundObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:33', 4, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (5, 'simpleRefund', '/uniPay/simpleRefund', '简单退款接口', b'1', b'1', b'1', 'http://127.0.0.1:9000/demo/callback/refundObject', b'1', b'0', b'1', b'0', 0, '2024-01-03 14:25:48', 1399985191002447872, '2024-02-25 15:20:38', 4, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (6, 'syncPay', '/uniPay/syncPay', '支付同步接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (7, 'syncRefund', '/uniPay/syncRefund', '退款同步接口', b'0', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (8, 'transfer', '/uniPay/transfer', '统一转账接口', b'1', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (9, 'allocation', '/uniPay/allocation', '统一分账接口', b'1', b'1', b'1', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (10, 'queryPayOrder', '/uniPay/queryPayOrder', '支付订单查询接口', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (11, 'queryRefundOrder', '/uniPay/queryRefundOrder', '退款订单查询接口', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (12, 'getWxAuthUrl', '/unipay/assist/getWxAuthUrl', '获取微信OAuth2授权链接', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); +INSERT INTO `pay_api_config` VALUES (13, 'getWxAccessToken', '/unipay/assist/getWxAccessToken', '获取微信AccessToken', b'0', b'1', b'0', NULL, b'1', b'0', b'0', b'0', 0, '2024-01-03 14:25:48', 0, '2024-01-03 14:25:53', 0, b'0', NULL); + +-- ---------------------------- +-- Table structure for pay_callback_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_callback_record`; +CREATE TABLE `pay_callback_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单id', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关订单号', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付通道', + `callback_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回调类型', + `notify_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '通知消息', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回调处理状态', + `repair_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网关回调通知' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_callback_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_cash_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_cash_config`; +CREATE TABLE `pay_cash_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '现金支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_cash_config +-- ---------------------------- +INSERT INTO `pay_cash_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 14:40:45', 4, b'0'); + +-- ---------------------------- +-- Table structure for pay_channel_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_channel_config`; +CREATE TABLE `pay_channel_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `icon_id` bigint(20) NULL DEFAULT NULL COMMENT 'ICON图片', + `bg_color` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡牌背景色', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付通道配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_channel_config +-- ---------------------------- +INSERT INTO `pay_channel_config` VALUES (1, 'ali_pay', '支付宝', NULL, NULL, b'1', '', 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-02-13 15:38:21', 10, b'0'); +INSERT INTO `pay_channel_config` VALUES (2, 'wechat_pay', '微信支付', NULL, NULL, b'1', '', 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-02-13 15:38:24', 7, b'0'); +INSERT INTO `pay_channel_config` VALUES (3, 'union_pay', '云闪付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 1399985191002447872, '2024-03-10 15:04:36', 2, b'0'); +INSERT INTO `pay_channel_config` VALUES (4, 'cash_pay', '现金支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); +INSERT INTO `pay_channel_config` VALUES (5, 'wallet_pay', '钱包支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); +INSERT INTO `pay_channel_config` VALUES (6, 'voucher_pay', '储值卡支付', NULL, NULL, b'1', NULL, 0, '2024-01-08 16:47:07', 0, '2024-01-08 16:47:11', 0, b'0'); + +-- ---------------------------- +-- Table structure for pay_channel_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_channel_order`; +CREATE TABLE `pay_channel_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付id', + `async` bit(1) NULL DEFAULT NULL COMMENT '异步支付方式', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `pay_way` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付方式', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '可退款金额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付状态', + `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付完成时间', + `channel_extra` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '附加支付参数', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单关联支付时通道信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_channel_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_client_notice_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_client_notice_record`; +CREATE TABLE `pay_client_notice_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `task_id` bigint(20) NULL DEFAULT NULL COMMENT '任务ID', + `req_count` int(11) NULL DEFAULT NULL COMMENT '请求次数', + `success` bit(1) NULL DEFAULT NULL COMMENT '发送是否成功', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `send_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送类型', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息通知任务记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_client_notice_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_client_notice_task +-- ---------------------------- +DROP TABLE IF EXISTS `pay_client_notice_task`; +CREATE TABLE `pay_client_notice_task` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', + `success` bit(1) NULL DEFAULT NULL COMMENT '是否发送成功', + `send_count` int(11) NULL DEFAULT NULL COMMENT '发送次数', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送地址', + `latest_time` datetime(0) NULL DEFAULT NULL COMMENT '最后发送时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `notice_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `order_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单状态', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息通知任务' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_client_notice_task +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_close_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_close_record`; +CREATE TABLE `pay_close_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付记录id', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务号', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关闭的异步支付通道', + `closed` bit(1) NULL DEFAULT NULL COMMENT '是否关闭成功', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误消息', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端IP', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付关闭记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_close_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order`; +CREATE TABLE `pay_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联的业务号', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `combination_pay` bit(1) NULL DEFAULT NULL COMMENT '是否是组合支付', + `async_pay` bit(1) NULL DEFAULT NULL COMMENT '是否是异步支付', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步支付通道', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '可退款余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付状态', + `pay_time` datetime(0) NULL DEFAULT NULL COMMENT '支付时间', + `close_time` datetime(0) NULL DEFAULT NULL COMMENT '关闭时间', + `expired_time` datetime(0) NULL DEFAULT NULL COMMENT '过期时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `business_no`(`business_no`) USING BTREE COMMENT '业务业务号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_order_extra +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order_extra`; +CREATE TABLE `pay_order_extra` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步跳转地址', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调通知时是否需要进行签名', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知地址,以最后一次为准', + `attach` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户扩展参数', + `req_sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型', + `req_sign` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名', + `req_time` datetime(0) NULL DEFAULT NULL COMMENT '请求时间,传输时间戳,以最后一次为准', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付终端ip', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_order_extra +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_platform_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_platform_config`; +CREATE TABLE `pay_platform_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `website_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网站地址', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名方式', + `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名秘钥', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付通知地址', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步支付跳转地址', + `order_timeout` int(11) NULL DEFAULT NULL COMMENT '订单默认超时时间(分钟)', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `limit_amount` int(11) NULL DEFAULT NULL COMMENT '支付限额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付平台配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_platform_config +-- ---------------------------- +INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '132456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0', NULL); + +-- ---------------------------- +-- Table structure for pay_reconcile_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_detail`; +CREATE TABLE `pay_reconcile_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `amount` int(11) NULL DEFAULT NULL COMMENT '交易金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易类型', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地订单ID', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付对账记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_reconcile_diff_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_diff_record`; +CREATE TABLE `pay_reconcile_diff_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单ID', + `detail_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单明细ID', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单标题', + `order_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单类型', + `diff_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '差异类型', + `diffs` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '差异内容', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `amount` int(11) NULL DEFAULT NULL COMMENT '交易金额', + `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '对账差异单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_diff_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_reconcile_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_reconcile_order`; +CREATE TABLE `pay_reconcile_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '批次号', + `date` date NULL DEFAULT NULL COMMENT '日期', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `down` bit(1) NULL DEFAULT NULL COMMENT '是否下载成功', + `compare` bit(1) NULL DEFAULT NULL COMMENT '是否比对完成', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `批次号索引`(`batch_no`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付对账单订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_reconcile_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_channel_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_channel_order`; +CREATE TABLE `pay_refund_channel_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `refund_id` bigint(20) NULL DEFAULT NULL COMMENT '关联退款id', + `pay_channel_id` bigint(20) NULL DEFAULT NULL COMMENT '通道支付单id', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `async` bit(1) NULL DEFAULT NULL COMMENT '异步支付方式', + `order_amount` int(11) NULL DEFAULT NULL COMMENT '订单金额', + `amount` int(11) NULL DEFAULT NULL COMMENT '退款金额', + `refundable_amount` int(11) NULL DEFAULT NULL COMMENT '剩余可退余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `refund_time` datetime(0) NULL DEFAULT NULL COMMENT '退款完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付退款通道订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_channel_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_order`; +CREATE TABLE `pay_refund_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '原支付id', + `business_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原支付业务号', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原支付标题', + `refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款号', + `async_pay` bit(1) NULL DEFAULT NULL COMMENT '是否含有异步通道', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通道', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `order_amount` int(11) NULL DEFAULT NULL COMMENT '订单金额', + `amount` int(11) NULL DEFAULT NULL COMMENT '退款金额', + `refundable_balance` int(11) NULL DEFAULT NULL COMMENT '剩余可退', + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款原因', + `refund_time` datetime(0) NULL DEFAULT NULL COMMENT '退款完成时间', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '退款订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_refund_order_extra +-- ---------------------------- +DROP TABLE IF EXISTS `pay_refund_order_extra`; +CREATE TABLE `pay_refund_order_extra` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `notice_sign` bit(1) NULL DEFAULT NULL COMMENT '回调通知时是否需要进行签名', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知地址', + `attach` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户扩展参数', + `req_sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求签名值', + `req_sign` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求签名值', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `req_time` datetime(0) NULL DEFAULT NULL COMMENT '请求时间,传输时间戳', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付终端ip', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '退款订单扩展信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_refund_order_extra +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_repair_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_repair_record`; +CREATE TABLE `pay_repair_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `repair_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复号', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地业务号', + `repair_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复类型', + `repair_source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复来源', + `repair_way` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复方式', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复的异步通道', + `before_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复前状态', + `after_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复后状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付修复记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_repair_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_sync_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_sync_record`; +CREATE TABLE `pay_sync_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单ID', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地业务号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `sync_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步类型', + `async_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步的异步通道', + `sync_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '同步消息', + `gateway_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关返回状态', + `repair_order` bit(1) NULL DEFAULT NULL COMMENT '是否进行修复', + `repair_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修复单号', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误消息', + `client_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端IP', + `req_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求链路ID', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付同步订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_sync_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_transfer_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_transfer_order`; +CREATE TABLE `pay_transfer_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `out_trade_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `amount` int(11) NULL DEFAULT NULL, + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `payee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `success_time` datetime(0) NULL DEFAULT NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '转账订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_transfer_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_union_pay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_pay_config`; +CREATE TABLE `pay_union_pay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `mach_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户号', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `server_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付网关地址', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知路径', + `pay_ways` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `seller` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户收款账号', + `sign_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名类型', + `cert_sign` bit(1) NULL DEFAULT NULL COMMENT '是否为证书签名', + `key_private_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '应用私钥证书', + `key_private_cert_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '私钥证书对应的密码', + `acp_middle_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '中级证书', + `acp_root_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '根证书', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知页面路径', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_pay_config +-- ---------------------------- +INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0', NULL); + +-- ---------------------------- +-- Table structure for pay_union_pay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_pay_record`; +CREATE TABLE `pay_union_pay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付流水记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_pay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_union_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_union_reconcile_bill_detail`; +CREATE TABLE `pay_union_reconcile_bill_detail` ( + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `trade_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易代码', + `txn_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易传输时间', + `txn_amt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易金额', + `query_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '查询流水号', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号' +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '云闪付业务明细对账单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_union_reconcile_bill_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher`; +CREATE TABLE `pay_voucher` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `card_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '卡号', + `face_value` int(11) NULL DEFAULT NULL COMMENT '面值', + `balance` int(11) NULL DEFAULT NULL COMMENT '余额', + `enduring` bit(1) NULL DEFAULT NULL COMMENT '是否长期有效', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + INDEX `card_no`(`card_no`) USING BTREE COMMENT '卡号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_voucher_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher_config`; +CREATE TABLE `pay_voucher_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher_config +-- ---------------------------- +INSERT INTO `pay_voucher_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 17:01:25', 7, b'0'); + +-- ---------------------------- +-- Table structure for pay_voucher_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_voucher_record`; +CREATE TABLE `pay_voucher_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `voucher_id` bigint(20) NULL DEFAULT NULL COMMENT '储值卡id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `old_amount` int(11) NULL DEFAULT NULL COMMENT '变动之前的金额', + `new_amount` int(11) NULL DEFAULT NULL COMMENT '变动之后的金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `voucher_id`(`voucher_id`) USING BTREE COMMENT '储值卡ID' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '储值卡记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_voucher_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wallet +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet`; +CREATE TABLE `pay_wallet` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联用户id', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钱包名称', + `balance` int(11) NULL DEFAULT NULL COMMENT '余额', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + INDEX `用户ID索引`(`user_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wallet_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet_config`; +CREATE TABLE `pay_wallet_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '单次支付最多多少金额 ', + `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet_config +-- ---------------------------- +INSERT INTO `pay_wallet_config` VALUES (0, b'1', 2000, 'normal', NULL, 0, '2024-02-17 14:36:28', 1399985191002447872, '2024-02-17 14:40:45', 4, b'0'); + +-- ---------------------------- +-- Table structure for pay_wallet_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wallet_record`; +CREATE TABLE `pay_wallet_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `wallet_id` bigint(20) NULL DEFAULT NULL COMMENT '钱包id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `old_amount` int(11) NULL DEFAULT NULL COMMENT '变动之前的金额', + `new_amount` int(11) NULL DEFAULT NULL COMMENT '变动之后的金额', + `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易订单号', + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端ip', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `wallet_id`(`wallet_id`) USING BTREE COMMENT '钱包ID' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wallet_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_way_info +-- ---------------------------- +DROP TABLE IF EXISTS `pay_way_info`; +CREATE TABLE `pay_way_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付方式' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_way_info +-- ---------------------------- +INSERT INTO `pay_way_info` VALUES (1, 'normal', '常规支付', '同步支付使用这个', 0, '2024-01-09 10:01:21', 1399985191002447872, '2024-02-13 15:39:16', 1, b'0'); +INSERT INTO `pay_way_info` VALUES (2, 'wap', 'wap支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (3, 'app', '应用支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (4, 'web', 'web支付', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (6, 'barcode', '付款码', NULL, 0, '2024-01-09 10:01:21', 0, '2024-01-09 10:01:25', 0, b'0'); +INSERT INTO `pay_way_info` VALUES (7, 'jsapi', '公众号/小程序支付', '主要是微信使用', 0, '2024-01-09 10:01:21', 1399985191002447872, '2024-02-13 15:38:57', 1, b'0'); + +-- ---------------------------- +-- Table structure for pay_wechat_notice_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_notice_config`; +CREATE TABLE `pay_wechat_notice_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用id', + `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用秘钥', + `qr_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公众号二维码', + `oauth2_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'OAuth2地址', + `verify_file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信校验文件名称', + `verify_file_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信校验文件内容', + `template_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息Id', + `template_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息内容', + `template_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板消息备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息通知相关配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_notice_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_pay_config +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_pay_config`; +CREATE TABLE `pay_wechat_pay_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `wx_mch_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信商户号', + `wx_app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信应用appId', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `notify_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '异步通知路径', + `return_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步通知路径', + `api_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口版本', + `api_key_v2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APIv2 密钥', + `api_key_v3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APIv3 密钥', + `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'APPID对应的接口密码', + `p12` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'API证书中p12证书Base64', + `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', + `pay_ways` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '可用支付方式', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_pay_config +-- ---------------------------- +INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', '0', NULL, 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', NULL, '0', 'wap,app,jsapi,qrcode,barcode', 0, '0000-00-00 00:00:00', 2024, '0000-00-00 00:00:00', 2024, b'1', NULL); + +-- ---------------------------- +-- Table structure for pay_wechat_pay_record +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_pay_record`; +CREATE TABLE `pay_wechat_pay_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `amount` int(11) NULL DEFAULT NULL COMMENT '金额', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单号', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付记录' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_pay_record +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_reconcile_bill_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_reconcile_bill_detail`; +CREATE TABLE `pay_wechat_reconcile_bill_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `transaction_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易时间', + `app_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '公众账号ID', + `merchant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户号', + `sub_merchant_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '特约商户号', + `wei_xin_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信订单号', + `mch_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户订单号', + `user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户标识', + `device_info` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备号', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易类型', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '交易状态', + `bank` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '付款银行', + `currency` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '货币种类', + `amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应结订单金额', + `envelope_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '代金券金额', + `wx_refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信退款单号', + `mch_refund_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户退款单号', + `refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款金额', + `coupon_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '充值券退款金额', + `refund_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款类型', + `refund_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款状态', + `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称', + `mch_data_packet` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商户数据包', + `premium` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手续费', + `rates` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费率', + `order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额', + `apply_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请退款金额', + `rates_remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '费率备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信对账单明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_reconcile_bill_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_wechat_reconcile_bill_total +-- ---------------------------- +DROP TABLE IF EXISTS `pay_wechat_reconcile_bill_total`; +CREATE TABLE `pay_wechat_reconcile_bill_total` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_order_id` bigint(20) NULL DEFAULT NULL COMMENT '关联对账订单ID', + `total_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '总交易单数', + `total_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应结订单总金额', + `total_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '退款总金额', + `total_refund_coupon_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '充值券退款总金额', + `total_fee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手续费总金额', + `total_order_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单总金额', + `apply_total_refund_amount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '申请退款总金额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信对账单汇总' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_wechat_reconcile_bill_total +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_blob_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_blob_triggers`; +CREATE TABLE `qrtz_blob_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `BLOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_blob_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_calendars +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_calendars`; +CREATE TABLE `qrtz_calendars` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR` blob NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_calendars +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_cron_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_cron_triggers`; +CREATE TABLE `qrtz_cron_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_cron_triggers +-- ---------------------------- +INSERT INTO `qrtz_cron_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '0/5 * * * * ? *', 'Asia/Shanghai'); + +-- ---------------------------- +-- Table structure for qrtz_fired_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_fired_triggers`; +CREATE TABLE `qrtz_fired_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `FIRED_TIME` bigint(13) NOT NULL, + `SCHED_TIME` bigint(13) NOT NULL, + `PRIORITY` int(11) NOT NULL, + `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, + INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE, + INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE, + INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_fired_triggers +-- ---------------------------- +INSERT INTO `qrtz_fired_triggers` VALUES ('quartzScheduler', 'NON_CLUSTERED1711420949184', '1546857070483939328', 'DEFAULT', 'NON_CLUSTERED', 1711421986284, 1711421990000, 5, 'ACQUIRED', NULL, NULL, '0', '0'); + +-- ---------------------------- +-- Table structure for qrtz_job_details +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_job_details`; +CREATE TABLE `qrtz_job_details` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_job_details +-- ---------------------------- +INSERT INTO `qrtz_job_details` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', NULL, 'cn.bootx.platform.daxpay.service.task.PayExpiredTimeTask', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C77080000001000000001740009706172616D65746572707800); + +-- ---------------------------- +-- Table structure for qrtz_locks +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_locks`; +CREATE TABLE `qrtz_locks` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_locks +-- ---------------------------- +INSERT INTO `qrtz_locks` VALUES ('quartzScheduler', 'TRIGGER_ACCESS'); + +-- ---------------------------- +-- Table structure for qrtz_paused_trigger_grps +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; +CREATE TABLE `qrtz_paused_trigger_grps` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_paused_trigger_grps +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_scheduler_state +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_scheduler_state`; +CREATE TABLE `qrtz_scheduler_state` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LAST_CHECKIN_TIME` bigint(13) NOT NULL, + `CHECKIN_INTERVAL` bigint(13) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_scheduler_state +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_simple_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simple_triggers`; +CREATE TABLE `qrtz_simple_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REPEAT_COUNT` bigint(7) NOT NULL, + `REPEAT_INTERVAL` bigint(12) NOT NULL, + `TIMES_TRIGGERED` bigint(10) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_simple_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_simprop_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simprop_triggers`; +CREATE TABLE `qrtz_simprop_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `INT_PROP_1` int(11) NULL DEFAULT NULL, + `INT_PROP_2` int(11) NULL DEFAULT NULL, + `LONG_PROP_1` bigint(20) NULL DEFAULT NULL, + `LONG_PROP_2` bigint(20) NULL DEFAULT NULL, + `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, + `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, + `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_simprop_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for qrtz_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_triggers`; +CREATE TABLE `qrtz_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PRIORITY` int(11) NULL DEFAULT NULL, + `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `START_TIME` bigint(13) NOT NULL, + `END_TIME` bigint(13) NULL DEFAULT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_triggers +-- ---------------------------- +INSERT INTO `qrtz_triggers` VALUES ('quartzScheduler', '1546857070483939328', 'DEFAULT', '1546857070483939328', 'DEFAULT', NULL, 1711421995000, 1711421990000, 5, 'ACQUIRED', 'CRON', 1708844216000, 0, NULL, 0, ''); + +-- ---------------------------- +-- Table structure for starter_audit_data_version +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_data_version`; +CREATE TABLE `starter_audit_data_version` ( + `id` bigint(20) NOT NULL, + `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称', + `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称', + `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键', + `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容', + `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容', + `version` int(10) NOT NULL COMMENT '版本', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_data_version +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_audit_login_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_login_log`; +CREATE TABLE `starter_audit_login_log` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id', + `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称', + `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态', + `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端', + `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式', + `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址', + `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点', + `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统', + `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型', + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息', + `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_login_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_audit_operate_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_operate_log`; +CREATE TABLE `starter_audit_operate_log` ( + `id` bigint(20) NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块', + `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号', + `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法', + `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式', + `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url', + `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip', + `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点', + `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数', + `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数', + `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功', + `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示', + `operate_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_operate_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_ding_media_md5 +-- ---------------------------- +DROP TABLE IF EXISTS `starter_ding_media_md5`; +CREATE TABLE `starter_ding_media_md5` ( + `id` bigint(20) NOT NULL, + `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id', + `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_ding_media_md5 +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_ding_robot_config +-- ---------------------------- +DROP TABLE IF EXISTS `starter_ding_robot_config`; +CREATE TABLE `starter_ding_robot_config` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token', + `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签', + `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_ding_robot_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_file_data +-- ---------------------------- +DROP TABLE IF EXISTS `starter_file_data`; +CREATE TABLE `starter_file_data` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储', + `data` longblob NULL COMMENT '数据方式存储', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_file_data +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_file_upload_info +-- ---------------------------- +DROP TABLE IF EXISTS `starter_file_upload_info`; +CREATE TABLE `starter_file_upload_info` ( + `id` bigint(20) NOT NULL COMMENT '文件id', + `url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件访问地址', + `size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小,单位字节', + `filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `original_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原始文件名', + `base_path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '基础存储路径', + `path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储路径', + `ext` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件扩展名', + `content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'MIME类型', + `platform` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储平台', + `th_url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图访问路径', + `th_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图名称', + `th_size` bigint(20) NULL DEFAULT NULL COMMENT '缩略图大小,单位字节', + `th_content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图MIME类型', + `object_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象id', + `object_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象类型,例如用户头像,评价图片', + `metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件元数据', + `user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件用户元数据', + `th_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图元数据', + `th_user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图用户元数据', + `attr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '附加属性', + `file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件ACL', + `th_file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图文件ACL', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '文件记录表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_file_upload_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_quartz_job +-- ---------------------------- +DROP TABLE IF EXISTS `starter_quartz_job`; +CREATE TABLE `starter_quartz_job` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名', + `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式', + `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数', + `state` int(4) NULL DEFAULT NULL COMMENT '状态', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_quartz_job +-- ---------------------------- +INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.platform.starter.quartz.task.TestTask', '0/3 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2024-02-24 23:57:57', 29, 0); +INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.platform.daxpay.service.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后调用同步事件状态修复', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2024-02-25 14:56:56', 4, 0); +INSERT INTO `starter_quartz_job` VALUES (1761419490908958720, '客户系统通知重发任务', 'cn.bootx.platform.daxpay.service.task.ClientNoticeSendTask', '0/1 * * * * ? *', '', 1, '每秒调用一下当前需要进行通知的任务', 1399985191002447872, '2024-02-24 23:55:07', 1399985191002447872, '2024-03-05 23:05:09', 2, 0); +INSERT INTO `starter_quartz_job` VALUES (1764664552203743232, '支付宝定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '0 0 11 * * ? *', '{\"channel\":\"ali_pay\",\"n\":1}', 1, '', 1399985191002447872, '2024-03-04 22:49:50', 1399985191002447872, '2024-03-10 11:19:17', 3, 0); +INSERT INTO `starter_quartz_job` VALUES (1764667388106887168, '微信支付定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '0 0 11 * * ? *', '{\"channel\":\"wechat_pay\",\"n\":1}', 1, '', 1399985191002447872, '2024-03-04 23:01:06', 1399985191002447872, '2024-03-10 11:19:14', 3, 0); +INSERT INTO `starter_quartz_job` VALUES (1767553847839141888, '退款订单定时同步', 'cn.bootx.platform.daxpay.service.task.RefundSyncTask', '0 * * * * ? *', '', 1, '', 1399985191002447872, '2024-03-12 22:10:52', 1399985191002447872, '2024-03-12 22:10:59', 1, 0); + +-- ---------------------------- +-- Table structure for starter_quartz_job_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_quartz_job_log`; +CREATE TABLE `starter_quartz_job_log` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称', + `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名', + `success` bit(1) NOT NULL COMMENT '是否执行成功', + `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', + `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_quartz_job_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wecom_robot_config +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wecom_robot_config`; +CREATE TABLE `starter_wecom_robot_config` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wecom_robot_config +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_fans +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_fans`; +CREATE TABLE `starter_wx_fans` ( + `id` bigint(20) NOT NULL, + `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId', + `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态', + `subscribe_time` datetime(0) NULL DEFAULT NULL COMMENT '订阅时间', + `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称', + `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别', + `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言', + `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家', + `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份', + `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市', + `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_fans +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_menu +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_menu`; +CREATE TABLE `starter_wx_menu` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息', + `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `publish` bit(1) NOT NULL COMMENT '是否发布', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_menu +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_template +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_template`; +CREATE TABLE `starter_wx_template` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', + `enable` bit(1) NOT NULL COMMENT '是否启用', + `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题', + `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业', + `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业', + `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容', + `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_template +-- ---------------------------- + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.5/2.0.5.update.data.sql b/_config/sql/2.0.5/2.0.5.update.data.sql new file mode 100644 index 00000000..a91eb875 --- /dev/null +++ b/_config/sql/2.0.5/2.0.5.update.data.sql @@ -0,0 +1,323 @@ +SET FOREIGN_KEY_CHECKS = 0; + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775112798259302400, 'AllocationReceiverType', '分账接收方类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 18:47:26', 1399985191002447872, '2024-04-02 18:47:26', 0, 0); + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122632706805760, 'AllocationRelationType', '分账关系类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 19:26:30', 1399985191002447872, '2024-04-02 19:26:30', 0, 0); + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777697358802530304, 'AllocationOrderStatus', '分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-09 21:57:33', 1399985191002447872, '2024-04-16 19:09:18', 0, 1); + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780163691808391168, 'AllocationDetailResult', '支付分账明细处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:17:53', 1399985191002447872, '2024-04-16 17:23:37', 0, 2); + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165499633106944, 'AllocationOrderResult', '支付分账订单处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:25:04', 1399985191002447872, '2024-04-16 17:25:04', 0, 0); + +INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165929528295424, 'PayOrderAllocationStatus', '支付订单分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:26:46', 1399985191002447872, '2024-04-16 17:26:46', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122126567559168, 1775112798259302400, 'AllocationReceiverType', 'wx_personal', '个人', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:24:30', 1399985191002447872, '2024-04-02 19:24:30', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122171861848064, 1775112798259302400, 'AllocationReceiverType', 'wx_merchant', '商户', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:24:41', 1399985191002447872, '2024-04-02 19:24:41', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122227956469760, 1775112798259302400, 'AllocationReceiverType', 'ali_user_id', '用户ID', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:24:54', 1399985191002447872, '2024-04-02 19:25:53', 0, 1); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122278170677248, 1775112798259302400, 'AllocationReceiverType', 'ali_open_id', '登录号', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:25:06', 1399985191002447872, '2024-04-02 19:25:06', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122427802472448, 1775112798259302400, 'AllocationReceiverType', 'ali_login_name', '账号', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:25:42', 1399985191002447872, '2024-04-02 19:25:42', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122672623996928, 1775122632706805760, 'AllocationRelationType', 'SERVICE_PROVIDER', '服务商', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:26:40', 1399985191002447872, '2024-04-02 19:26:40', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122710884438016, 1775122632706805760, 'AllocationRelationType', 'STORE', '门店', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:26:49', 1399985191002447872, '2024-04-02 19:26:49', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122750612885504, 1775122632706805760, 'AllocationRelationType', 'STAFF', '员工', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:26:59', 1399985191002447872, '2024-04-02 19:26:59', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122847035740160, 1775122632706805760, 'AllocationRelationType', 'STORE_OWNER', '店主', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:27:22', 1399985191002447872, '2024-04-02 19:27:22', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122892464246784, 1775122632706805760, 'AllocationRelationType', 'PARTNER', '合作伙伴', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:27:32', 1399985191002447872, '2024-04-02 19:27:32', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122934138851328, 1775122632706805760, 'AllocationRelationType', 'HEADQUARTER', '总部', b'1', 6.00, '', 1399985191002447872, '2024-04-02 19:27:42', 1399985191002447872, '2024-04-02 19:27:42', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123560512016384, 1775122632706805760, 'AllocationRelationType', 'DISTRIBUTOR', '分销商', b'1', 7.00, '', 1399985191002447872, '2024-04-02 19:30:12', 1399985191002447872, '2024-04-02 19:30:12', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123607781822464, 1775122632706805760, 'AllocationRelationType', 'USER', '用户', b'1', 8.00, '', 1399985191002447872, '2024-04-02 19:30:23', 1399985191002447872, '2024-04-02 19:30:23', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123654527340544, 1775122632706805760, 'AllocationRelationType', 'SUPPLIER', '供应商', b'1', 9.00, '', 1399985191002447872, '2024-04-02 19:30:34', 1399985191002447872, '2024-04-02 19:30:34', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123705886593024, 1775122632706805760, 'AllocationRelationType', 'CUSTOM', '自定义', b'1', 10.00, '', 1399985191002447872, '2024-04-02 19:30:46', 1399985191002447872, '2024-04-02 19:30:46', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700713809522688, 1777697358802530304, 'AllocationOrderStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-09 22:10:53', 1399985191002447872, '2024-04-09 22:10:53', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700750744563712, 1777697358802530304, 'AllocationOrderStatus', 'allocation_processing', '分账处理中', b'1', 2.00, '', 1399985191002447872, '2024-04-09 22:11:02', 1399985191002447872, '2024-04-16 17:14:53', 0, 1); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700787453112320, 1777697358802530304, 'AllocationOrderStatus', 'allocation_end', '分账完成', b'1', 3.00, '', 1399985191002447872, '2024-04-09 22:11:10', 1399985191002447872, '2024-04-16 17:36:25', 0, 2); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700835826020352, 1777697358802530304, 'AllocationOrderStatus', 'allocation_failed', '分账失败', b'1', 4.00, '', 1399985191002447872, '2024-04-09 22:11:22', 1399985191002447872, '2024-04-16 17:16:34', 0, 2); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700870613577728, 1777697358802530304, 'AllocationOrderStatus', 'finish', '分账完结', b'1', 5.00, '', 1399985191002447872, '2024-04-09 22:11:30', 1399985191002447872, '2024-04-16 17:17:06', 0, 1); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700915450687488, 1777697358802530304, 'AllocationStatus', 'partial_failed', '部分分账失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:41', 1399985191002447872, '2024-04-16 17:16:49', 1, 1); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700964087836672, 1777697358802530304, 'AllocationOrderStatus', 'finish_failed', '分账完结失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:53', 1399985191002447872, '2024-04-16 17:17:25', 0, 1); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701030081015808, 1777697358802530304, 'AllocationStatus', 'closed', '分账关闭', b'1', 8.00, '', 1399985191002447872, '2024-04-09 22:12:08', 1399985191002447872, '2024-04-16 17:16:19', 1, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701090676125696, 1777697358802530304, 'AllocationStatus', 'unknown', '分账状态未知', b'1', 9.00, '', 1399985191002447872, '2024-04-09 22:12:23', 1399985191002447872, '2024-04-16 17:16:16', 1, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164864510623744, 1780163691808391168, 'AllocationDetailResult', 'pending', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:22:32', 1399985191002447872, '2024-04-16 17:22:32', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164903886749696, 1780163691808391168, 'AllocationDetailResult', 'success', '分账成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:22:42', 1399985191002447872, '2024-04-16 17:22:42', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164940712738816, 1780163691808391168, 'AllocationDetailResult', 'fail', '分账失败', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:22:50', 1399985191002447872, '2024-04-16 17:22:50', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165545665593344, 1780165499633106944, 'AllocationOrderResult', 'all_pending', '全部成功', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:25:15', 1399985191002447872, '2024-04-16 17:25:15', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165581623361536, 1780165499633106944, 'AllocationOrderResult', 'all_success', '全部成功', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:25:23', 1399985191002447872, '2024-04-16 17:25:23', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165617413357568, 1780165499633106944, 'AllocationOrderResult', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:25:32', 1399985191002447872, '2024-04-16 17:25:32', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165653350154240, 1780165499633106944, 'AllocationOrderResult', 'all_failed', '全部失败', b'1', 3.00, '', 1399985191002447872, '2024-04-16 17:25:40', 1399985191002447872, '2024-04-16 17:25:40', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165986231091200, 1780165929528295424, 'PayOrderAllocationStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:27:00', 1399985191002447872, '2024-04-16 17:27:00', 0, 0); + +INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780166037149941760, 1780165929528295424, 'PayOrderAllocationStatus', 'allocation', '已分账', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:27:12', 1399985191002447872, '2024-04-16 17:27:12', 0, 0); + +INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089099078553600, 'dax-pay', NULL, '分账管理', 'Allocation', NULL, b'0', 'ant-design:sliders-twotone', b'0', b'0', 'Layout', NULL, '/pay/allocation', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:13:15', 1399985191002447872, '2024-04-02 17:13:15', 0, 0); + +INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089820368818176, 'dax-pay', 1775089099078553600, '分账接收者', 'AllocationReceiverList', NULL, b'0', '', b'0', b'0', 'payment/allocation/receiver/AllocationReceiverList', NULL, '/pay/allocation/receiver', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:16:07', 1399985191002447872, '2024-04-02 17:23:13', 2, 0); + +INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775091561835450368, 'dax-pay', 1775089099078553600, '分账组', 'AllocationGroupList', NULL, b'0', '', b'0', b'0', 'payment/allocation/group/AllocationGroupList', NULL, '/pay/allocation/group', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:23:03', 1399985191002447872, '2024-04-02 17:23:27', 1, 0); + +INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1777688382748700672, 'dax-pay', 1744642856348520448, '分账订单', 'AllocationOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/allocation/AllocationOrderList', NULL, '/pay/order/allocation', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-09 21:21:53', 1399985191002447872, '2024-04-09 21:21:53', 0, 0); + +UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1744642856348520448, `title` = '对账订单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-01-22 10:47:39', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:11:56', `version` = 5, `deleted` = 0 WHERE `id` = 1749262518385082368; + +UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '对账单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:05:43', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:02', `version` = 1, `deleted` = 1 WHERE `id` = 1764638353289027584; + +UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '差异单', `name` = 'ReconcileDiffList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'1', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/diff/ReconcileDiffList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/diff', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:07:01', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:06', `version` = 2, `deleted` = 1 WHERE `id` = 1764638678821543936; + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138432, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '对账订单控制器', b'1', b'1', '对账订单控制器 同步分账结果', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138433, 'AllocationGroupController#findReceiversByGroups', '查询分账接收方信息', 'GET', '/allocation/group/findReceiversByGroups', '分账组', b'1', b'1', '分账组 查询分账接收方信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138434, 'AllocationGroupController#unbindReceiver', '取消绑定接收者', 'POST', '/allocation/group/unbindReceiver', '分账组', b'1', b'1', '分账组 取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138435, 'PayOrderController#allocation', '发起分账', 'POST', '/order/pay/allocation', '支付订单控制器', b'1', b'1', '支付订单控制器 发起分账', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138436, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138437, 'AllocationGroupController#unbindReceivers', '批量取消绑定接收者', 'POST', '/allocation/group/unbindReceivers', '分账组', b'1', b'1', '分账组 批量取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138438, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询明细详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138439, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '对账订单控制器', b'1', b'1', '对账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138440, 'SystemMonitorController#getSystemInfo', '获取系统消息', 'GET', '/monitor/system/getSystemInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取系统消息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138441, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '对账接收方控制器', b'1', b'1', '对账接收方控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138442, 'AllocationGroupController#clearDefault', '清除默认分账组', 'POST', '/allocation/group/clearDefault', '分账组', b'1', b'1', '分账组 清除默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138443, 'AllocationGroupController#create', '创建', 'POST', '/allocation/group/create', '分账组', b'1', b'1', '分账组 创建', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138444, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '对账订单控制器', b'1', b'1', '对账订单控制器 分账完结', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138445, 'UniPayController#allocationFinish', '分账完结接口', 'POST', '/unipay/allocationFinish', '统一支付接口', b'1', b'1', '统一支付接口 分账完结接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138446, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138447, 'SystemMonitorController#getRedisInfo', '获取Redis信息', 'GET', '/monitor/system/getRedisInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取Redis信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138448, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138449, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '对账接收方控制器', b'1', b'1', '对账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138450, 'AllocationGroupController#delete', '删除', 'POST', '/allocation/group/delete', '分账组', b'1', b'1', '分账组 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138451, 'AllocationGroupController#update', '修改', 'POST', '/allocation/group/update', '分账组', b'1', b'1', '分账组 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138452, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '对账接收方控制器', b'1', b'1', '对账接收方控制器 新增', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138453, 'AllocationGroupController#setDefault', '设置默认分账组', 'POST', '/allocation/group/setDefault', '分账组', b'1', b'1', '分账组 设置默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138454, 'AllocationGroupController#findById', '查询详情', 'GET', '/allocation/group/findById', '分账组', b'1', b'1', '分账组 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138455, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '对账接收方控制器', b'1', b'1', '对账接收方控制器 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138456, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '对账接收方控制器', b'1', b'1', '对账接收方控制器 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138457, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '对账接收方控制器', b'1', b'1', '对账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138458, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '对账接收方控制器', b'1', b'1', '对账接收方控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138459, 'AllocationGroupController#page', '分页', 'GET', '/allocation/group/page', '分账组', b'1', b'1', '分账组 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138460, 'AllocationGroupController#bindReceivers', '批量绑定接收者', 'POST', '/allocation/group/bindReceivers', '分账组', b'1', b'1', '分账组 批量绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138461, 'AllocationGroupController#updateRate', '修改分账比例', 'POST', '/allocation/group/updateRate', '分账组', b'1', b'1', '分账组 修改分账比例', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138462, 'UniPayController#allocation', '开启分账接口', 'POST', '/unipay/allocation', '统一支付接口', b'1', b'1', '统一支付接口 开启分账接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138463, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '对账订单控制器', b'1', b'1', '对账订单控制器 分账明细列表', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138464, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '对账订单控制器', b'1', b'1', '对账订单控制器 分账重试', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.845000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138465, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '对账订单控制器', b'1', b'1', '对账订单控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.839000', b'1', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966912, 'PayGatewayNoticeController#wechatPayNotice', '微信消息通知', 'POST', '/gateway/notice/wechat', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 微信消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966913, 'PayGatewayNoticeController#aliPayNotice', '支付宝消息通知', 'POST', '/gateway/notice/alipay', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 支付宝消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063232, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '分账接收方控制器', b'1', b'1', '分账接收方控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063233, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '分账订单控制器', b'1', b'1', '分账订单控制器 分账完结', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063234, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '分账接收方控制器', b'1', b'1', '分账接收方控制器 删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063235, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '分账接收方控制器', b'1', b'1', '分账接收方控制器 新增', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063236, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '分账接收方控制器', b'1', b'1', '分账接收方控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063237, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '分账订单控制器', b'1', b'1', '分账订单控制器 同步分账结果', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063238, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '分账接收方控制器', b'1', b'1', '分账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063239, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063240, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '分账订单控制器', b'1', b'1', '分账订单控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063241, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '分账订单控制器', b'1', b'1', '分账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063242, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '分账订单控制器', b'1', b'1', '分账订单控制器 分账明细列表', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063243, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063244, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '分账接收方控制器', b'1', b'1', '分账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063245, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063246, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询明细详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063247, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '分账接收方控制器', b'1', b'1', '分账接收方控制器 修改', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063248, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '分账订单控制器', b'1', b'1', '分账订单控制器 分账重试', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); + +UPDATE `dax-pay`.`iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs/', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.531000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974671; + +UPDATE `dax-pay`.`iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.526000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974672; + +DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945575888781312; + +DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945575888781313; + +DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945576350154752; + +DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945576350154753; + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605440, 1757297023118462976, 'dax-pay', 1775089099078553600); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605441, 1757297023118462976, 'dax-pay', 1775089820368818176); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605442, 1757297023118462976, 'dax-pay', 1775091561835450368); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605443, 1757297023118462976, 'dax-pay', 1777688382748700672); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789632, 1757298887092326400, 'dax-pay', 1775089099078553600); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789633, 1757298887092326400, 'dax-pay', 1775089820368818176); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789634, 1757298887092326400, 'dax-pay', 1775091561835450368); + +INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789635, 1757298887092326400, 'dax-pay', 1777688382748700672); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855808, 1757297023118462976, 1780216505637138435); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855809, 1757297023118462976, 1780418342852063247); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855810, 1757297023118462976, 1780418342852063244); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855811, 1757297023118462976, 1780418342852063238); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855812, 1757297023118462976, 1780418342852063236); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855813, 1757297023118462976, 1780418342852063235); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855814, 1757297023118462976, 1780418342852063234); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855815, 1757297023118462976, 1780418342852063232); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855816, 1757297023118462976, 1780418342852063239); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855817, 1757297023118462976, 1780418342852063243); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855818, 1757297023118462976, 1780418342852063248); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855819, 1757297023118462976, 1780418342852063246); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855820, 1757297023118462976, 1780418342852063245); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855821, 1757297023118462976, 1780418342852063242); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855822, 1757297023118462976, 1780418342852063241); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855823, 1757297023118462976, 1780418342852063240); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855824, 1757297023118462976, 1780418342852063237); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855825, 1757297023118462976, 1780418342852063233); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177344, 1757298887092326400, 1780216505637138435); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177346, 1757298887092326400, 1780418342852063244); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177347, 1757298887092326400, 1780418342852063238); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177348, 1757298887092326400, 1780418342852063236); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177349, 1757298887092326400, 1780418342852063235); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177351, 1757298887092326400, 1780418342852063232); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177354, 1757298887092326400, 1780418342852063248); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177355, 1757298887092326400, 1780418342852063246); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177356, 1757298887092326400, 1780418342852063245); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177357, 1757298887092326400, 1780418342852063242); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177358, 1757298887092326400, 1780418342852063241); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177359, 1757298887092326400, 1780418342852063240); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177360, 1757298887092326400, 1780418342852063237); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177361, 1757298887092326400, 1780418342852063233); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395904, 1757297023118462976, 1780216505637138461); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395905, 1757297023118462976, 1780216505637138460); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395906, 1757297023118462976, 1780216505637138459); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395907, 1757297023118462976, 1780216505637138454); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395908, 1757297023118462976, 1780216505637138453); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395909, 1757297023118462976, 1780216505637138451); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395910, 1757297023118462976, 1780216505637138450); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395911, 1757297023118462976, 1780216505637138443); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395912, 1757297023118462976, 1780216505637138442); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395913, 1757297023118462976, 1780216505637138437); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395914, 1757297023118462976, 1780216505637138434); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395915, 1757297023118462976, 1780216505637138433); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774402, 1757298887092326400, 1780216505637138459); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774403, 1757298887092326400, 1780216505637138454); + +INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774411, 1757298887092326400, 1780216505637138433); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.5/2.0.5.update.table.sql b/_config/sql/2.0.5/2.0.5.update.table.sql new file mode 100644 index 00000000..e54d2755 --- /dev/null +++ b/_config/sql/2.0.5/2.0.5.update.table.sql @@ -0,0 +1,103 @@ +SET FOREIGN_KEY_CHECKS=0; + +ALTER TABLE `pay_alipay_config` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账' AFTER `alipay_user_id`; + +CREATE TABLE `pay_allocation_group` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `total_rate` int(11) NULL DEFAULT NULL COMMENT '总分账比例(万分之多少)', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + `default_group` bit(1) NULL DEFAULT NULL COMMENT '默认分账组', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账组' ROW_FORMAT = Dynamic; + +CREATE TABLE `pay_allocation_group_receiver` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `group_id` bigint(20) NULL DEFAULT NULL COMMENT '分账组ID', + `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', + `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收组关系' ROW_FORMAT = Dynamic; + +CREATE TABLE `pay_allocation_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账订单号', + `allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账单号', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付订单ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `gateway_pay_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关支付订单号', + `gateway_allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关分账单号', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `amount` int(11) NULL DEFAULT NULL COMMENT '总分账金额', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账描述', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账处理结果', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `allocation_no`(`allocation_no`) USING BTREE COMMENT '分账单号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单' ROW_FORMAT = Dynamic; + +CREATE TABLE `pay_allocation_order_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `allocation_id` bigint(20) NULL DEFAULT NULL COMMENT '分账订单ID', + `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', + `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `amount` int(11) NULL DEFAULT NULL COMMENT '分账金额', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账结果', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误代码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `finish_time` datetime(0) NULL DEFAULT NULL COMMENT '分账完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单明细' ROW_FORMAT = Dynamic; + +CREATE TABLE `pay_allocation_receiver` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号别名', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `relation_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账关系类型', + `relation_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关系名称', + `sync` bit(1) NULL DEFAULT NULL COMMENT '是否已经同步到网关', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收方' ROW_FORMAT = Dynamic; + +ALTER TABLE `pay_order` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否需要分账' AFTER `deleted`; + +ALTER TABLE `pay_order` ADD COLUMN `allocation_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账状态' AFTER `allocation`; + +ALTER TABLE `pay_wechat_pay_config` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账' AFTER `single_limit`; + +SET FOREIGN_KEY_CHECKS=1; diff --git a/_doc/Task.md b/_doc/Task.md index 06474bc1..c9722284 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -69,14 +69,3 @@ - [ ] 增加验签调试等功能的页面 - [ ] 请求IP参数增加正则校验 - [ ] 增加账户金额表, 记录每天每个通道的账户金额, 并且提供查询接口 - -## 多商户多应用版本 -2.1.0: -- [ ] 商户管理 -- [ ] 应用管理 -- [ ] 支付配置适配 -- [ ] 支付能力适配 -- - -**任务池** - diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java index fa8f7949..1dd02a2e 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationOrderController.java @@ -24,11 +24,11 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; /** - * 对账订单控制器 + * 分账订单控制器 * @author xxm * @since 2024/4/7 */ -@Tag(name = "对账订单控制器") +@Tag(name = "分账订单控制器") @RestController @RequestMapping("/order/allocation") @RequiredArgsConstructor @@ -72,7 +72,7 @@ public class AllocationOrderController { @Operation(summary = "同步分账结果") @PostMapping("/sync") public ResResult sync(Long id){ - AllocationSyncParam param = new AllocationSyncParam(); + AllocationSyncParam param = new AllocationSyncParam(); param.setAllocationId(id); allocationService.sync(param); return Res.ok(); diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java index 282ed6a5..65831cd6 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/allocation/AllocationReceiverController.java @@ -21,7 +21,7 @@ import java.util.List; * @author xxm * @since 2024/3/28 */ -@Tag(name = "对账接收方控制器") +@Tag(name = "分账接收方控制器") @RestController @RequestMapping("/allocation/receiver") @RequiredArgsConstructor diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java index 136c6513..74480157 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/allocation/AllocationReceiverDto.java @@ -47,6 +47,7 @@ public class AllocationReceiverDto extends BaseDto { /** 接收方姓名 */ @Schema(description = "接收方姓名") + @SensitiveInfo private String receiverName; /** -- Gitee From 57da63ec36593f124c057283e069c8290e7f34a8 Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 18 Apr 2024 11:13:41 +0800 Subject: [PATCH 44/45] =?UTF-8?q?build=20=E7=89=88=E6=9C=AC=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- _config/sql/2.0.5/2.0.5.update.data.sql | 328 +++++++++--------- _config/sql/2.0.5/2.0.5.update.table.sql | 166 ++++----- _config/sql/dax-pay.sql | 315 ++++++++++++++++- _doc/ChangeLog.md | 9 + _doc/Task.md | 3 +- daxpay-single-demo/pom.xml | 4 +- daxpay-single-sdk/pom.xml | 2 +- .../AllocationModel.java} | 11 +- .../AllocationParam.java} | 25 +- .../daxpay/sdk/payment/PayAllocationTest.java | 20 +- daxpay-single/daxpay-single-admin/pom.xml | 2 +- daxpay-single/daxpay-single-core/pom.xml | 2 +- daxpay-single/daxpay-single-gateway/pom.xml | 2 +- daxpay-single/daxpay-single-service/pom.xml | 2 +- daxpay-single/daxpay-single-start/pom.xml | 2 +- .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/application-prod.yml | 2 +- daxpay-single/pom.xml | 2 +- pom.xml | 4 +- 20 files changed, 619 insertions(+), 288 deletions(-) rename daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/{divide/DivideOrderModel.java => allocation/AllocationModel.java} (45%) rename daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/{divide/DivideOrderParam.java => allocation/AllocationParam.java} (52%) diff --git a/README.md b/README.md index 0d39c19c..92613a82 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

star - Build Status + Build Status Build Status Build Status Downloads diff --git a/_config/sql/2.0.5/2.0.5.update.data.sql b/_config/sql/2.0.5/2.0.5.update.data.sql index a91eb875..11b6ffd9 100644 --- a/_config/sql/2.0.5/2.0.5.update.data.sql +++ b/_config/sql/2.0.5/2.0.5.update.data.sql @@ -1,323 +1,331 @@ SET FOREIGN_KEY_CHECKS = 0; -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775112798259302400, 'AllocationReceiverType', '分账接收方类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 18:47:26', 1399985191002447872, '2024-04-02 18:47:26', 0, 0); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775112798259302400, 'AllocationReceiverType', '分账接收方类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 18:47:26', 1399985191002447872, '2024-04-02 18:47:26', 0, 0); -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122632706805760, 'AllocationRelationType', '分账关系类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 19:26:30', 1399985191002447872, '2024-04-02 19:26:30', 0, 0); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122632706805760, 'AllocationRelationType', '分账关系类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 19:26:30', 1399985191002447872, '2024-04-02 19:26:30', 0, 0); -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777697358802530304, 'AllocationOrderStatus', '分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-09 21:57:33', 1399985191002447872, '2024-04-16 19:09:18', 0, 1); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777697358802530304, 'AllocationOrderStatus', '分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-09 21:57:33', 1399985191002447872, '2024-04-16 19:09:18', 0, 1); -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780163691808391168, 'AllocationDetailResult', '支付分账明细处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:17:53', 1399985191002447872, '2024-04-16 17:23:37', 0, 2); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780163691808391168, 'AllocationDetailResult', '支付分账明细处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:17:53', 1399985191002447872, '2024-04-16 17:23:37', 0, 2); -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165499633106944, 'AllocationOrderResult', '支付分账订单处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:25:04', 1399985191002447872, '2024-04-16 17:25:04', 0, 0); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165499633106944, 'AllocationOrderResult', '支付分账订单处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:25:04', 1399985191002447872, '2024-04-16 17:25:04', 0, 0); -INSERT INTO `dax-pay`.`base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165929528295424, 'PayOrderAllocationStatus', '支付订单分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:26:46', 1399985191002447872, '2024-04-16 17:26:46', 0, 0); +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165929528295424, 'PayOrderAllocationStatus', '支付订单分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:26:46', 1399985191002447872, '2024-04-16 17:26:46', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122126567559168, 1775112798259302400, 'AllocationReceiverType', 'wx_personal', '个人', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:24:30', 1399985191002447872, '2024-04-02 19:24:30', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122126567559168, 1775112798259302400, 'AllocationReceiverType', 'wx_personal', '个人', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:24:30', 1399985191002447872, '2024-04-02 19:24:30', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122171861848064, 1775112798259302400, 'AllocationReceiverType', 'wx_merchant', '商户', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:24:41', 1399985191002447872, '2024-04-02 19:24:41', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122171861848064, 1775112798259302400, 'AllocationReceiverType', 'wx_merchant', '商户', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:24:41', 1399985191002447872, '2024-04-02 19:24:41', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122227956469760, 1775112798259302400, 'AllocationReceiverType', 'ali_user_id', '用户ID', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:24:54', 1399985191002447872, '2024-04-02 19:25:53', 0, 1); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122227956469760, 1775112798259302400, 'AllocationReceiverType', 'ali_user_id', '用户ID', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:24:54', 1399985191002447872, '2024-04-02 19:25:53', 0, 1); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122278170677248, 1775112798259302400, 'AllocationReceiverType', 'ali_open_id', '登录号', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:25:06', 1399985191002447872, '2024-04-02 19:25:06', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122278170677248, 1775112798259302400, 'AllocationReceiverType', 'ali_open_id', '登录号', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:25:06', 1399985191002447872, '2024-04-02 19:25:06', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122427802472448, 1775112798259302400, 'AllocationReceiverType', 'ali_login_name', '账号', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:25:42', 1399985191002447872, '2024-04-02 19:25:42', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122427802472448, 1775112798259302400, 'AllocationReceiverType', 'ali_login_name', '账号', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:25:42', 1399985191002447872, '2024-04-02 19:25:42', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122672623996928, 1775122632706805760, 'AllocationRelationType', 'SERVICE_PROVIDER', '服务商', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:26:40', 1399985191002447872, '2024-04-02 19:26:40', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122672623996928, 1775122632706805760, 'AllocationRelationType', 'SERVICE_PROVIDER', '服务商', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:26:40', 1399985191002447872, '2024-04-02 19:26:40', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122710884438016, 1775122632706805760, 'AllocationRelationType', 'STORE', '门店', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:26:49', 1399985191002447872, '2024-04-02 19:26:49', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122710884438016, 1775122632706805760, 'AllocationRelationType', 'STORE', '门店', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:26:49', 1399985191002447872, '2024-04-02 19:26:49', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122750612885504, 1775122632706805760, 'AllocationRelationType', 'STAFF', '员工', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:26:59', 1399985191002447872, '2024-04-02 19:26:59', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122750612885504, 1775122632706805760, 'AllocationRelationType', 'STAFF', '员工', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:26:59', 1399985191002447872, '2024-04-02 19:26:59', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122847035740160, 1775122632706805760, 'AllocationRelationType', 'STORE_OWNER', '店主', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:27:22', 1399985191002447872, '2024-04-02 19:27:22', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122847035740160, 1775122632706805760, 'AllocationRelationType', 'STORE_OWNER', '店主', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:27:22', 1399985191002447872, '2024-04-02 19:27:22', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122892464246784, 1775122632706805760, 'AllocationRelationType', 'PARTNER', '合作伙伴', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:27:32', 1399985191002447872, '2024-04-02 19:27:32', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122892464246784, 1775122632706805760, 'AllocationRelationType', 'PARTNER', '合作伙伴', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:27:32', 1399985191002447872, '2024-04-02 19:27:32', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122934138851328, 1775122632706805760, 'AllocationRelationType', 'HEADQUARTER', '总部', b'1', 6.00, '', 1399985191002447872, '2024-04-02 19:27:42', 1399985191002447872, '2024-04-02 19:27:42', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775122934138851328, 1775122632706805760, 'AllocationRelationType', 'HEADQUARTER', '总部', b'1', 6.00, '', 1399985191002447872, '2024-04-02 19:27:42', 1399985191002447872, '2024-04-02 19:27:42', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123560512016384, 1775122632706805760, 'AllocationRelationType', 'DISTRIBUTOR', '分销商', b'1', 7.00, '', 1399985191002447872, '2024-04-02 19:30:12', 1399985191002447872, '2024-04-02 19:30:12', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123560512016384, 1775122632706805760, 'AllocationRelationType', 'DISTRIBUTOR', '分销商', b'1', 7.00, '', 1399985191002447872, '2024-04-02 19:30:12', 1399985191002447872, '2024-04-02 19:30:12', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123607781822464, 1775122632706805760, 'AllocationRelationType', 'USER', '用户', b'1', 8.00, '', 1399985191002447872, '2024-04-02 19:30:23', 1399985191002447872, '2024-04-02 19:30:23', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123607781822464, 1775122632706805760, 'AllocationRelationType', 'USER', '用户', b'1', 8.00, '', 1399985191002447872, '2024-04-02 19:30:23', 1399985191002447872, '2024-04-02 19:30:23', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123654527340544, 1775122632706805760, 'AllocationRelationType', 'SUPPLIER', '供应商', b'1', 9.00, '', 1399985191002447872, '2024-04-02 19:30:34', 1399985191002447872, '2024-04-02 19:30:34', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123654527340544, 1775122632706805760, 'AllocationRelationType', 'SUPPLIER', '供应商', b'1', 9.00, '', 1399985191002447872, '2024-04-02 19:30:34', 1399985191002447872, '2024-04-02 19:30:34', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123705886593024, 1775122632706805760, 'AllocationRelationType', 'CUSTOM', '自定义', b'1', 10.00, '', 1399985191002447872, '2024-04-02 19:30:46', 1399985191002447872, '2024-04-02 19:30:46', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1775123705886593024, 1775122632706805760, 'AllocationRelationType', 'CUSTOM', '自定义', b'1', 10.00, '', 1399985191002447872, '2024-04-02 19:30:46', 1399985191002447872, '2024-04-02 19:30:46', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700713809522688, 1777697358802530304, 'AllocationOrderStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-09 22:10:53', 1399985191002447872, '2024-04-09 22:10:53', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700713809522688, 1777697358802530304, 'AllocationOrderStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-09 22:10:53', 1399985191002447872, '2024-04-09 22:10:53', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700750744563712, 1777697358802530304, 'AllocationOrderStatus', 'allocation_processing', '分账处理中', b'1', 2.00, '', 1399985191002447872, '2024-04-09 22:11:02', 1399985191002447872, '2024-04-16 17:14:53', 0, 1); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700750744563712, 1777697358802530304, 'AllocationOrderStatus', 'allocation_processing', '分账处理中', b'1', 2.00, '', 1399985191002447872, '2024-04-09 22:11:02', 1399985191002447872, '2024-04-16 17:14:53', 0, 1); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700787453112320, 1777697358802530304, 'AllocationOrderStatus', 'allocation_end', '分账完成', b'1', 3.00, '', 1399985191002447872, '2024-04-09 22:11:10', 1399985191002447872, '2024-04-16 17:36:25', 0, 2); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700787453112320, 1777697358802530304, 'AllocationOrderStatus', 'allocation_end', '分账完成', b'1', 3.00, '', 1399985191002447872, '2024-04-09 22:11:10', 1399985191002447872, '2024-04-16 17:36:25', 0, 2); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700835826020352, 1777697358802530304, 'AllocationOrderStatus', 'allocation_failed', '分账失败', b'1', 4.00, '', 1399985191002447872, '2024-04-09 22:11:22', 1399985191002447872, '2024-04-16 17:16:34', 0, 2); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700835826020352, 1777697358802530304, 'AllocationOrderStatus', 'allocation_failed', '分账失败', b'1', 4.00, '', 1399985191002447872, '2024-04-09 22:11:22', 1399985191002447872, '2024-04-16 17:16:34', 0, 2); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700870613577728, 1777697358802530304, 'AllocationOrderStatus', 'finish', '分账完结', b'1', 5.00, '', 1399985191002447872, '2024-04-09 22:11:30', 1399985191002447872, '2024-04-16 17:17:06', 0, 1); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700870613577728, 1777697358802530304, 'AllocationOrderStatus', 'finish', '分账完结', b'1', 5.00, '', 1399985191002447872, '2024-04-09 22:11:30', 1399985191002447872, '2024-04-16 17:17:06', 0, 1); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700915450687488, 1777697358802530304, 'AllocationStatus', 'partial_failed', '部分分账失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:41', 1399985191002447872, '2024-04-16 17:16:49', 1, 1); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700915450687488, 1777697358802530304, 'AllocationStatus', 'partial_failed', '部分分账失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:41', 1399985191002447872, '2024-04-16 17:16:49', 1, 1); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700964087836672, 1777697358802530304, 'AllocationOrderStatus', 'finish_failed', '分账完结失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:53', 1399985191002447872, '2024-04-16 17:17:25', 0, 1); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777700964087836672, 1777697358802530304, 'AllocationOrderStatus', 'finish_failed', '分账完结失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:53', 1399985191002447872, '2024-04-16 17:17:25', 0, 1); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701030081015808, 1777697358802530304, 'AllocationStatus', 'closed', '分账关闭', b'1', 8.00, '', 1399985191002447872, '2024-04-09 22:12:08', 1399985191002447872, '2024-04-16 17:16:19', 1, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701030081015808, 1777697358802530304, 'AllocationStatus', 'closed', '分账关闭', b'1', 8.00, '', 1399985191002447872, '2024-04-09 22:12:08', 1399985191002447872, '2024-04-16 17:16:19', 1, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701090676125696, 1777697358802530304, 'AllocationStatus', 'unknown', '分账状态未知', b'1', 9.00, '', 1399985191002447872, '2024-04-09 22:12:23', 1399985191002447872, '2024-04-16 17:16:16', 1, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1777701090676125696, 1777697358802530304, 'AllocationStatus', 'unknown', '分账状态未知', b'1', 9.00, '', 1399985191002447872, '2024-04-09 22:12:23', 1399985191002447872, '2024-04-16 17:16:16', 1, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164864510623744, 1780163691808391168, 'AllocationDetailResult', 'pending', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:22:32', 1399985191002447872, '2024-04-16 17:22:32', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164864510623744, 1780163691808391168, 'AllocationDetailResult', 'pending', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:22:32', 1399985191002447872, '2024-04-16 17:22:32', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164903886749696, 1780163691808391168, 'AllocationDetailResult', 'success', '分账成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:22:42', 1399985191002447872, '2024-04-16 17:22:42', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164903886749696, 1780163691808391168, 'AllocationDetailResult', 'success', '分账成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:22:42', 1399985191002447872, '2024-04-16 17:22:42', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164940712738816, 1780163691808391168, 'AllocationDetailResult', 'fail', '分账失败', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:22:50', 1399985191002447872, '2024-04-16 17:22:50', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780164940712738816, 1780163691808391168, 'AllocationDetailResult', 'fail', '分账失败', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:22:50', 1399985191002447872, '2024-04-16 17:22:50', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165545665593344, 1780165499633106944, 'AllocationOrderResult', 'all_pending', '全部成功', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:25:15', 1399985191002447872, '2024-04-16 17:25:15', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165545665593344, 1780165499633106944, 'AllocationOrderResult', 'all_pending', '全部成功', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:25:15', 1399985191002447872, '2024-04-16 17:25:15', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165581623361536, 1780165499633106944, 'AllocationOrderResult', 'all_success', '全部成功', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:25:23', 1399985191002447872, '2024-04-16 17:25:23', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165581623361536, 1780165499633106944, 'AllocationOrderResult', 'all_success', '全部成功', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:25:23', 1399985191002447872, '2024-04-16 17:25:23', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165617413357568, 1780165499633106944, 'AllocationOrderResult', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:25:32', 1399985191002447872, '2024-04-16 17:25:32', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165617413357568, 1780165499633106944, 'AllocationOrderResult', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:25:32', 1399985191002447872, '2024-04-16 17:25:32', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165653350154240, 1780165499633106944, 'AllocationOrderResult', 'all_failed', '全部失败', b'1', 3.00, '', 1399985191002447872, '2024-04-16 17:25:40', 1399985191002447872, '2024-04-16 17:25:40', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165653350154240, 1780165499633106944, 'AllocationOrderResult', 'all_failed', '全部失败', b'1', 3.00, '', 1399985191002447872, '2024-04-16 17:25:40', 1399985191002447872, '2024-04-16 17:25:40', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165986231091200, 1780165929528295424, 'PayOrderAllocationStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:27:00', 1399985191002447872, '2024-04-16 17:27:00', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780165986231091200, 1780165929528295424, 'PayOrderAllocationStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:27:00', 1399985191002447872, '2024-04-16 17:27:00', 0, 0); -INSERT INTO `dax-pay`.`base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780166037149941760, 1780165929528295424, 'PayOrderAllocationStatus', 'allocation', '已分账', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:27:12', 1399985191002447872, '2024-04-16 17:27:12', 0, 0); +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780166037149941760, 1780165929528295424, 'PayOrderAllocationStatus', 'allocation', '已分账', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:27:12', 1399985191002447872, '2024-04-16 17:27:12', 0, 0); -INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089099078553600, 'dax-pay', NULL, '分账管理', 'Allocation', NULL, b'0', 'ant-design:sliders-twotone', b'0', b'0', 'Layout', NULL, '/pay/allocation', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:13:15', 1399985191002447872, '2024-04-02 17:13:15', 0, 0); +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089099078553600, 'dax-pay', NULL, '分账管理', 'Allocation', NULL, b'0', 'ant-design:sliders-twotone', b'0', b'0', 'Layout', NULL, '/pay/allocation', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:13:15', 1399985191002447872, '2024-04-02 17:13:15', 0, 0); -INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089820368818176, 'dax-pay', 1775089099078553600, '分账接收者', 'AllocationReceiverList', NULL, b'0', '', b'0', b'0', 'payment/allocation/receiver/AllocationReceiverList', NULL, '/pay/allocation/receiver', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:16:07', 1399985191002447872, '2024-04-02 17:23:13', 2, 0); +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775089820368818176, 'dax-pay', 1775089099078553600, '分账接收者', 'AllocationReceiverList', NULL, b'0', '', b'0', b'0', 'payment/allocation/receiver/AllocationReceiverList', NULL, '/pay/allocation/receiver', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:16:07', 1399985191002447872, '2024-04-02 17:23:13', 2, 0); -INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775091561835450368, 'dax-pay', 1775089099078553600, '分账组', 'AllocationGroupList', NULL, b'0', '', b'0', b'0', 'payment/allocation/group/AllocationGroupList', NULL, '/pay/allocation/group', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:23:03', 1399985191002447872, '2024-04-02 17:23:27', 1, 0); +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1775091561835450368, 'dax-pay', 1775089099078553600, '分账组', 'AllocationGroupList', NULL, b'0', '', b'0', b'0', 'payment/allocation/group/AllocationGroupList', NULL, '/pay/allocation/group', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:23:03', 1399985191002447872, '2024-04-02 17:23:27', 1, 0); -INSERT INTO `dax-pay`.`iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1777688382748700672, 'dax-pay', 1744642856348520448, '分账订单', 'AllocationOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/allocation/AllocationOrderList', NULL, '/pay/order/allocation', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-09 21:21:53', 1399985191002447872, '2024-04-09 21:21:53', 0, 0); +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1777688382748700672, 'dax-pay', 1744642856348520448, '分账订单', 'AllocationOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/allocation/AllocationOrderList', NULL, '/pay/order/allocation', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-09 21:21:53', 1399985191002447872, '2024-04-09 21:21:53', 0, 0); -UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1744642856348520448, `title` = '对账订单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-01-22 10:47:39', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:11:56', `version` = 5, `deleted` = 0 WHERE `id` = 1749262518385082368; +UPDATE `iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1744642856348520448, `title` = '对账订单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-01-22 10:47:39', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:11:56', `version` = 5, `deleted` = 0 WHERE `id` = 1749262518385082368; -UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '对账单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:05:43', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:02', `version` = 1, `deleted` = 1 WHERE `id` = 1764638353289027584; +UPDATE `iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '对账单', `name` = 'ReconcileOrderList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/order/ReconcileOrderList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/list', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:05:43', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:02', `version` = 1, `deleted` = 1 WHERE `id` = 1764638353289027584; -UPDATE `dax-pay`.`iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '差异单', `name` = 'ReconcileDiffList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'1', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/diff/ReconcileDiffList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/diff', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:07:01', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:06', `version` = 2, `deleted` = 1 WHERE `id` = 1764638678821543936; +UPDATE `iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1749262518385082368, `title` = '差异单', `name` = 'ReconcileDiffList', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'1', `hide_children_in_menu` = b'0', `component` = 'payment/order/reconcile/diff/ReconcileDiffList.vue', `component_name` = NULL, `path` = '/pay/order/reconcile/diff', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-03-04 21:07:01', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 19:12:06', `version` = 2, `deleted` = 1 WHERE `id` = 1764638678821543936; -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138432, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '对账订单控制器', b'1', b'1', '对账订单控制器 同步分账结果', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138432, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '对账订单控制器', b'1', b'1', '对账订单控制器 同步分账结果', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138433, 'AllocationGroupController#findReceiversByGroups', '查询分账接收方信息', 'GET', '/allocation/group/findReceiversByGroups', '分账组', b'1', b'1', '分账组 查询分账接收方信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138433, 'AllocationGroupController#findReceiversByGroups', '查询分账接收方信息', 'GET', '/allocation/group/findReceiversByGroups', '分账组', b'1', b'1', '分账组 查询分账接收方信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138434, 'AllocationGroupController#unbindReceiver', '取消绑定接收者', 'POST', '/allocation/group/unbindReceiver', '分账组', b'1', b'1', '分账组 取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138434, 'AllocationGroupController#unbindReceiver', '取消绑定接收者', 'POST', '/allocation/group/unbindReceiver', '分账组', b'1', b'1', '分账组 取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138435, 'PayOrderController#allocation', '发起分账', 'POST', '/order/pay/allocation', '支付订单控制器', b'1', b'1', '支付订单控制器 发起分账', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138435, 'PayOrderController#allocation', '发起分账', 'POST', '/order/pay/allocation', '支付订单控制器', b'1', b'1', '支付订单控制器 发起分账', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138436, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138436, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138437, 'AllocationGroupController#unbindReceivers', '批量取消绑定接收者', 'POST', '/allocation/group/unbindReceivers', '分账组', b'1', b'1', '分账组 批量取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138437, 'AllocationGroupController#unbindReceivers', '批量取消绑定接收者', 'POST', '/allocation/group/unbindReceivers', '分账组', b'1', b'1', '分账组 批量取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138438, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询明细详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138438, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询明细详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138439, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '对账订单控制器', b'1', b'1', '对账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138439, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '对账订单控制器', b'1', b'1', '对账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138440, 'SystemMonitorController#getSystemInfo', '获取系统消息', 'GET', '/monitor/system/getSystemInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取系统消息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138440, 'SystemMonitorController#getSystemInfo', '获取系统消息', 'GET', '/monitor/system/getSystemInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取系统消息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138441, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '对账接收方控制器', b'1', b'1', '对账接收方控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138441, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '对账接收方控制器', b'1', b'1', '对账接收方控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138442, 'AllocationGroupController#clearDefault', '清除默认分账组', 'POST', '/allocation/group/clearDefault', '分账组', b'1', b'1', '分账组 清除默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138442, 'AllocationGroupController#clearDefault', '清除默认分账组', 'POST', '/allocation/group/clearDefault', '分账组', b'1', b'1', '分账组 清除默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138443, 'AllocationGroupController#create', '创建', 'POST', '/allocation/group/create', '分账组', b'1', b'1', '分账组 创建', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138443, 'AllocationGroupController#create', '创建', 'POST', '/allocation/group/create', '分账组', b'1', b'1', '分账组 创建', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138444, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '对账订单控制器', b'1', b'1', '对账订单控制器 分账完结', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138444, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '对账订单控制器', b'1', b'1', '对账订单控制器 分账完结', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138445, 'UniPayController#allocationFinish', '分账完结接口', 'POST', '/unipay/allocationFinish', '统一支付接口', b'1', b'1', '统一支付接口 分账完结接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138445, 'UniPayController#allocationFinish', '分账完结接口', 'POST', '/unipay/allocationFinish', '统一支付接口', b'1', b'1', '统一支付接口 分账完结接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138446, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138446, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138447, 'SystemMonitorController#getRedisInfo', '获取Redis信息', 'GET', '/monitor/system/getRedisInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取Redis信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138447, 'SystemMonitorController#getRedisInfo', '获取Redis信息', 'GET', '/monitor/system/getRedisInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取Redis信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138448, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138448, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138449, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '对账接收方控制器', b'1', b'1', '对账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138449, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '对账接收方控制器', b'1', b'1', '对账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138450, 'AllocationGroupController#delete', '删除', 'POST', '/allocation/group/delete', '分账组', b'1', b'1', '分账组 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138450, 'AllocationGroupController#delete', '删除', 'POST', '/allocation/group/delete', '分账组', b'1', b'1', '分账组 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138451, 'AllocationGroupController#update', '修改', 'POST', '/allocation/group/update', '分账组', b'1', b'1', '分账组 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138451, 'AllocationGroupController#update', '修改', 'POST', '/allocation/group/update', '分账组', b'1', b'1', '分账组 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138452, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '对账接收方控制器', b'1', b'1', '对账接收方控制器 新增', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138452, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '对账接收方控制器', b'1', b'1', '对账接收方控制器 新增', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138453, 'AllocationGroupController#setDefault', '设置默认分账组', 'POST', '/allocation/group/setDefault', '分账组', b'1', b'1', '分账组 设置默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138453, 'AllocationGroupController#setDefault', '设置默认分账组', 'POST', '/allocation/group/setDefault', '分账组', b'1', b'1', '分账组 设置默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138454, 'AllocationGroupController#findById', '查询详情', 'GET', '/allocation/group/findById', '分账组', b'1', b'1', '分账组 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138454, 'AllocationGroupController#findById', '查询详情', 'GET', '/allocation/group/findById', '分账组', b'1', b'1', '分账组 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138455, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '对账接收方控制器', b'1', b'1', '对账接收方控制器 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138455, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '对账接收方控制器', b'1', b'1', '对账接收方控制器 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138456, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '对账接收方控制器', b'1', b'1', '对账接收方控制器 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138456, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '对账接收方控制器', b'1', b'1', '对账接收方控制器 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138457, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '对账接收方控制器', b'1', b'1', '对账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138457, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '对账接收方控制器', b'1', b'1', '对账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138458, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '对账接收方控制器', b'1', b'1', '对账接收方控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138458, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '对账接收方控制器', b'1', b'1', '对账接收方控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138459, 'AllocationGroupController#page', '分页', 'GET', '/allocation/group/page', '分账组', b'1', b'1', '分账组 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138459, 'AllocationGroupController#page', '分页', 'GET', '/allocation/group/page', '分账组', b'1', b'1', '分账组 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138460, 'AllocationGroupController#bindReceivers', '批量绑定接收者', 'POST', '/allocation/group/bindReceivers', '分账组', b'1', b'1', '分账组 批量绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138460, 'AllocationGroupController#bindReceivers', '批量绑定接收者', 'POST', '/allocation/group/bindReceivers', '分账组', b'1', b'1', '分账组 批量绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138461, 'AllocationGroupController#updateRate', '修改分账比例', 'POST', '/allocation/group/updateRate', '分账组', b'1', b'1', '分账组 修改分账比例', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138461, 'AllocationGroupController#updateRate', '修改分账比例', 'POST', '/allocation/group/updateRate', '分账组', b'1', b'1', '分账组 修改分账比例', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138462, 'UniPayController#allocation', '开启分账接口', 'POST', '/unipay/allocation', '统一支付接口', b'1', b'1', '统一支付接口 开启分账接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138462, 'UniPayController#allocation', '开启分账接口', 'POST', '/unipay/allocation', '统一支付接口', b'1', b'1', '统一支付接口 开启分账接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138463, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '对账订单控制器', b'1', b'1', '对账订单控制器 分账明细列表', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138463, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '对账订单控制器', b'1', b'1', '对账订单控制器 分账明细列表', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138464, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '对账订单控制器', b'1', b'1', '对账订单控制器 分账重试', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.845000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138464, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '对账订单控制器', b'1', b'1', '对账订单控制器 分账重试', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.845000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138465, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '对账订单控制器', b'1', b'1', '对账订单控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.839000', b'1', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780216505637138465, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '对账订单控制器', b'1', b'1', '对账订单控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.839000', b'1', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966912, 'PayGatewayNoticeController#wechatPayNotice', '微信消息通知', 'POST', '/gateway/notice/wechat', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 微信消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966912, 'PayGatewayNoticeController#wechatPayNotice', '微信消息通知', 'POST', '/gateway/notice/wechat', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 微信消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966913, 'PayGatewayNoticeController#aliPayNotice', '支付宝消息通知', 'POST', '/gateway/notice/alipay', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 支付宝消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780417658844966913, 'PayGatewayNoticeController#aliPayNotice', '支付宝消息通知', 'POST', '/gateway/notice/alipay', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 支付宝消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063232, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '分账接收方控制器', b'1', b'1', '分账接收方控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063232, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '分账接收方控制器', b'1', b'1', '分账接收方控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063233, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '分账订单控制器', b'1', b'1', '分账订单控制器 分账完结', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063233, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '分账订单控制器', b'1', b'1', '分账订单控制器 分账完结', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063234, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '分账接收方控制器', b'1', b'1', '分账接收方控制器 删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063234, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '分账接收方控制器', b'1', b'1', '分账接收方控制器 删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063235, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '分账接收方控制器', b'1', b'1', '分账接收方控制器 新增', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063235, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '分账接收方控制器', b'1', b'1', '分账接收方控制器 新增', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063236, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '分账接收方控制器', b'1', b'1', '分账接收方控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063236, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '分账接收方控制器', b'1', b'1', '分账接收方控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063237, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '分账订单控制器', b'1', b'1', '分账订单控制器 同步分账结果', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063237, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '分账订单控制器', b'1', b'1', '分账订单控制器 同步分账结果', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063238, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '分账接收方控制器', b'1', b'1', '分账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063238, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '分账接收方控制器', b'1', b'1', '分账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063239, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063239, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063240, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '分账订单控制器', b'1', b'1', '分账订单控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063240, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '分账订单控制器', b'1', b'1', '分账订单控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063241, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '分账订单控制器', b'1', b'1', '分账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063241, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '分账订单控制器', b'1', b'1', '分账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063242, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '分账订单控制器', b'1', b'1', '分账订单控制器 分账明细列表', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063242, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '分账订单控制器', b'1', b'1', '分账订单控制器 分账明细列表', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063243, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063243, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063244, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '分账接收方控制器', b'1', b'1', '分账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063244, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '分账接收方控制器', b'1', b'1', '分账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063245, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063245, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063246, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询明细详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063246, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询明细详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063247, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '分账接收方控制器', b'1', b'1', '分账接收方控制器 修改', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063247, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '分账接收方控制器', b'1', b'1', '分账接收方控制器 修改', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -INSERT INTO `dax-pay`.`iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063248, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '分账订单控制器', b'1', b'1', '分账订单控制器 分账重试', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1780418342852063248, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '分账订单控制器', b'1', b'1', '分账订单控制器 分账重试', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -UPDATE `dax-pay`.`iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs/', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.531000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974671; +UPDATE `iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs/', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.531000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974671; -UPDATE `dax-pay`.`iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.526000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974672; +UPDATE `iam_perm_path` SET `code` = 'TestController#wxcs', `name` = '微信回调测试', `request_type` = 'GET', `path` = '/test/wxcs', `group_name` = '测试', `enable` = b'1', `generate` = b'1', `remark` = '测试 微信回调测试', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.138000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-16 20:47:44.526000', `deleted` = b'1', `version` = 0 WHERE `id` = 1757297527147974672; -DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945575888781312; +DELETE FROM `iam_role_menu` WHERE `id` = 1764945575888781312; -DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945575888781313; +DELETE FROM `iam_role_menu` WHERE `id` = 1764945575888781313; -DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945576350154752; +DELETE FROM `iam_role_menu` WHERE `id` = 1764945576350154752; -DELETE FROM `dax-pay`.`iam_role_menu` WHERE `id` = 1764945576350154753; +DELETE FROM `iam_role_menu` WHERE `id` = 1764945576350154753; -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605440, 1757297023118462976, 'dax-pay', 1775089099078553600); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605440, 1757297023118462976, 'dax-pay', 1775089099078553600); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605441, 1757297023118462976, 'dax-pay', 1775089820368818176); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605441, 1757297023118462976, 'dax-pay', 1775089820368818176); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605442, 1757297023118462976, 'dax-pay', 1775091561835450368); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605442, 1757297023118462976, 'dax-pay', 1775091561835450368); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605443, 1757297023118462976, 'dax-pay', 1777688382748700672); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732268605443, 1757297023118462976, 'dax-pay', 1777688382748700672); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789632, 1757298887092326400, 'dax-pay', 1775089099078553600); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789632, 1757298887092326400, 'dax-pay', 1775089099078553600); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789633, 1757298887092326400, 'dax-pay', 1775089820368818176); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789633, 1757298887092326400, 'dax-pay', 1775089820368818176); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789634, 1757298887092326400, 'dax-pay', 1775091561835450368); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789634, 1757298887092326400, 'dax-pay', 1775091561835450368); -INSERT INTO `dax-pay`.`iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789635, 1757298887092326400, 'dax-pay', 1777688382748700672); +INSERT INTO `iam_role_menu`(`id`, `role_id`, `client_code`, `permission_id`) VALUES (1780416732574789635, 1757298887092326400, 'dax-pay', 1777688382748700672); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855808, 1757297023118462976, 1780216505637138435); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855808, 1757297023118462976, 1780216505637138435); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855809, 1757297023118462976, 1780418342852063247); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855809, 1757297023118462976, 1780418342852063247); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855810, 1757297023118462976, 1780418342852063244); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855810, 1757297023118462976, 1780418342852063244); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855811, 1757297023118462976, 1780418342852063238); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855811, 1757297023118462976, 1780418342852063238); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855812, 1757297023118462976, 1780418342852063236); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855812, 1757297023118462976, 1780418342852063236); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855813, 1757297023118462976, 1780418342852063235); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855813, 1757297023118462976, 1780418342852063235); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855814, 1757297023118462976, 1780418342852063234); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855814, 1757297023118462976, 1780418342852063234); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855815, 1757297023118462976, 1780418342852063232); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855815, 1757297023118462976, 1780418342852063232); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855816, 1757297023118462976, 1780418342852063239); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855816, 1757297023118462976, 1780418342852063239); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855817, 1757297023118462976, 1780418342852063243); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855817, 1757297023118462976, 1780418342852063243); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855818, 1757297023118462976, 1780418342852063248); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855818, 1757297023118462976, 1780418342852063248); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855819, 1757297023118462976, 1780418342852063246); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855819, 1757297023118462976, 1780418342852063246); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855820, 1757297023118462976, 1780418342852063245); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855820, 1757297023118462976, 1780418342852063245); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855821, 1757297023118462976, 1780418342852063242); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855821, 1757297023118462976, 1780418342852063242); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855822, 1757297023118462976, 1780418342852063241); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855822, 1757297023118462976, 1780418342852063241); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855823, 1757297023118462976, 1780418342852063240); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855823, 1757297023118462976, 1780418342852063240); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855824, 1757297023118462976, 1780418342852063237); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855824, 1757297023118462976, 1780418342852063237); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855825, 1757297023118462976, 1780418342852063233); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836388855825, 1757297023118462976, 1780418342852063233); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177344, 1757298887092326400, 1780216505637138435); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177344, 1757298887092326400, 1780216505637138435); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177346, 1757298887092326400, 1780418342852063244); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177346, 1757298887092326400, 1780418342852063244); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177347, 1757298887092326400, 1780418342852063238); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177347, 1757298887092326400, 1780418342852063238); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177348, 1757298887092326400, 1780418342852063236); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177348, 1757298887092326400, 1780418342852063236); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177349, 1757298887092326400, 1780418342852063235); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177349, 1757298887092326400, 1780418342852063235); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177351, 1757298887092326400, 1780418342852063232); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177351, 1757298887092326400, 1780418342852063232); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177354, 1757298887092326400, 1780418342852063248); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177354, 1757298887092326400, 1780418342852063248); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177355, 1757298887092326400, 1780418342852063246); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177355, 1757298887092326400, 1780418342852063246); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177356, 1757298887092326400, 1780418342852063245); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177356, 1757298887092326400, 1780418342852063245); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177357, 1757298887092326400, 1780418342852063242); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177357, 1757298887092326400, 1780418342852063242); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177358, 1757298887092326400, 1780418342852063241); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177358, 1757298887092326400, 1780418342852063241); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177359, 1757298887092326400, 1780418342852063240); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177359, 1757298887092326400, 1780418342852063240); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177360, 1757298887092326400, 1780418342852063237); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177360, 1757298887092326400, 1780418342852063237); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177361, 1757298887092326400, 1780418342852063233); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780464836741177361, 1757298887092326400, 1780418342852063233); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395904, 1757297023118462976, 1780216505637138461); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395904, 1757297023118462976, 1780216505637138461); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395905, 1757297023118462976, 1780216505637138460); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395905, 1757297023118462976, 1780216505637138460); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395906, 1757297023118462976, 1780216505637138459); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395906, 1757297023118462976, 1780216505637138459); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395907, 1757297023118462976, 1780216505637138454); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395907, 1757297023118462976, 1780216505637138454); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395908, 1757297023118462976, 1780216505637138453); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395908, 1757297023118462976, 1780216505637138453); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395909, 1757297023118462976, 1780216505637138451); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395909, 1757297023118462976, 1780216505637138451); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395910, 1757297023118462976, 1780216505637138450); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395910, 1757297023118462976, 1780216505637138450); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395911, 1757297023118462976, 1780216505637138443); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395911, 1757297023118462976, 1780216505637138443); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395912, 1757297023118462976, 1780216505637138442); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395912, 1757297023118462976, 1780216505637138442); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395913, 1757297023118462976, 1780216505637138437); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395913, 1757297023118462976, 1780216505637138437); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395914, 1757297023118462976, 1780216505637138434); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395914, 1757297023118462976, 1780216505637138434); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395915, 1757297023118462976, 1780216505637138433); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020646395915, 1757297023118462976, 1780216505637138433); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774402, 1757298887092326400, 1780216505637138459); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774402, 1757298887092326400, 1780216505637138459); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774403, 1757298887092326400, 1780216505637138454); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774403, 1757298887092326400, 1780216505637138454); -INSERT INTO `dax-pay`.`iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774411, 1757298887092326400, 1780216505637138433); +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1780466020956774411, 1757298887092326400, 1780216505637138433); + +UPDATE `pay_alipay_config` SET `app_id` = '123456', `enable` = b'1', `notify_url` = 'ServerUrl/callback/pay/alipay', `return_url` = 'ServerUrl/return/pay/alipay', `server_url` = 'https://openapi.alipay.com/gateway.do', `auth_type` = 'key', `sign_type` = 'RSA2', `alipay_public_key` = 'ImfODRp7hnJ3DUk9fCes0Q==', `private_key` = 'ImfODRp7hnJ3DUk9fCes0Q==', `app_cert` = NULL, `alipay_cert` = NULL, `alipay_root_cert` = NULL, `sandbox` = b'0', `pay_ways` = 'wap,app,web,qrcode,barcode', `alipay_user_id` = NULL, `single_limit` = 2000, `allocation` = b'1', `remark` = '支付宝支付', `creator` = 0, `create_time` = '2024-01-02 21:17:58', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 15:43:51', `version` = 23, `deleted` = b'0' WHERE `id` = 0; + +UPDATE `pay_platform_config` SET `website_url` = 'http://127.0.0.1', `sign_type` = 'HMAC_SHA256', `sign_secret` = '123456', `notify_url` = 'http://127.0.0.1/h5/#/result/success', `return_url` = 'http://127.0.0.1/h5/#/result/success', `order_timeout` = 30, `creator` = 0, `create_time` = '2024-01-02 20:23:19', `last_modifier` = 1757299137932677120, `last_modified_time` = '2024-02-13 15:08:51', `version` = 3, `deleted` = b'0', `limit_amount` = NULL WHERE `id` = 0; + +UPDATE `pay_union_pay_config` SET `mach_id` = '123456', `enable` = b'1', `server_url` = 'https://qra.95516.com/pay/gateway', `notify_url` = 'ServerUrl/callback/pay/union', `pay_ways` = 'wap,app,web,qrcode,barcode,jsapi,b2b', `remark` = NULL, `seller` = NULL, `sign_type` = 'RSA2', `cert_sign` = b'0', `key_private_cert` = NULL, `key_private_cert_pwd` = NULL, `acp_middle_cert` = NULL, `acp_root_cert` = NULL, `sandbox` = b'1', `return_url` = 'ServerUrl/return/pay/union', `creator` = 0, `create_time` = '2024-03-06 22:56:22', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-03-12 23:30:18', `version` = 11, `deleted` = b'0', `single_limit` = 2000 WHERE `id` = 0; + +UPDATE `pay_wechat_pay_config` SET `wx_mch_id` = '123', `wx_app_id` = '123', `enable` = b'1', `notify_url` = 'ServerUrl/callback/pay/wechat', `return_url` = 'ServerUrl/pay/wechat', `api_version` = 'apiV2', `api_key_v2` = 'E0jIzPNngkpkZYL19H3vFQ==', `api_key_v3` = 'E0jIzPNngkpkZYL19H3vFQ==', `app_secret` = 'E0jIzPNngkpkZYL19H3vFQ==', `p12` = 'E0jIzPNngkpkZYL19H3vFQ==', `sandbox` = b'0', `pay_ways` = 'wap,app,jsapi,qrcode,barcode', `remark` = NULL, `creator` = 0, `create_time` = '2024-04-18 09:15:47', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-04-18 09:16:22', `version` = 2025, `deleted` = b'0', `single_limit` = 2000, `allocation` = b'1' WHERE `id` = 0; SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.5/2.0.5.update.table.sql b/_config/sql/2.0.5/2.0.5.update.table.sql index e54d2755..263f1228 100644 --- a/_config/sql/2.0.5/2.0.5.update.table.sql +++ b/_config/sql/2.0.5/2.0.5.update.table.sql @@ -1,98 +1,102 @@ SET FOREIGN_KEY_CHECKS=0; -ALTER TABLE `pay_alipay_config` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账' AFTER `alipay_user_id`; +ALTER TABLE `pay_alipay_config` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账' AFTER `single_limit`; + +ALTER TABLE `pay_alipay_config` MODIFY COLUMN `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID' AFTER `pay_ways`; + +ALTER TABLE `pay_alipay_config` MODIFY COLUMN `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额' AFTER `alipay_user_id`; CREATE TABLE `pay_allocation_group` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', - `total_rate` int(11) NULL DEFAULT NULL COMMENT '总分账比例(万分之多少)', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', - `default_group` bit(1) NULL DEFAULT NULL COMMENT '默认分账组', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账组' ROW_FORMAT = Dynamic; + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `total_rate` int(11) NULL DEFAULT NULL COMMENT '总分账比例(万分之多少)', + `default_group` bit(1) NULL DEFAULT NULL COMMENT '默认分账组', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账组' ROW_FORMAT = DYNAMIC; CREATE TABLE `pay_allocation_group_receiver` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `group_id` bigint(20) NULL DEFAULT NULL COMMENT '分账组ID', + `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', + `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收组关系' ROW_FORMAT = DYNAMIC; + +CREATE TABLE `pay_allocation_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账订单号', + `allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账单号', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付订单ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `gateway_pay_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关支付订单号', + `gateway_allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关分账单号', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `amount` int(11) NULL DEFAULT NULL COMMENT '总分账金额', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账描述', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账处理结果', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `allocation_no`(`allocation_no`) USING BTREE COMMENT '分账单号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单' ROW_FORMAT = DYNAMIC; + +CREATE TABLE `pay_allocation_order_detail` ( `id` bigint(20) NOT NULL COMMENT '主键', - `group_id` bigint(20) NULL DEFAULT NULL COMMENT '分账组ID', + `allocation_id` bigint(20) NULL DEFAULT NULL COMMENT '分账订单ID', `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `amount` int(11) NULL DEFAULT NULL COMMENT '分账金额', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账结果', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误代码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `finish_time` datetime(0) NULL DEFAULT NULL COMMENT '分账完成时间', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收组关系' ROW_FORMAT = Dynamic; - -CREATE TABLE `pay_allocation_order` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账订单号', - `allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账单号', - `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付订单ID', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `gateway_pay_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关支付订单号', - `gateway_allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关分账单号', - `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', - `amount` int(11) NULL DEFAULT NULL COMMENT '总分账金额', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账描述', - `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', - `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账处理结果', - `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `allocation_no`(`allocation_no`) USING BTREE COMMENT '分账单号索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单' ROW_FORMAT = Dynamic; - -CREATE TABLE `pay_allocation_order_detail` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `allocation_id` bigint(20) NULL DEFAULT NULL COMMENT '分账订单ID', - `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', - `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', - `amount` int(11) NULL DEFAULT NULL COMMENT '分账金额', - `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', - `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', - `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', - `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账结果', - `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误代码', - `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', - `finish_time` datetime(0) NULL DEFAULT NULL COMMENT '分账完成时间', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单明细' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单明细' ROW_FORMAT = DYNAMIC; CREATE TABLE `pay_allocation_receiver` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号别名', - `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', - `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', - `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', - `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', - `relation_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账关系类型', - `relation_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关系名称', - `sync` bit(1) NULL DEFAULT NULL COMMENT '是否已经同步到网关', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收方' ROW_FORMAT = Dynamic; + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号别名', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `relation_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账关系类型', + `relation_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关系名称', + `sync` bit(1) NULL DEFAULT NULL COMMENT '是否已经同步到网关', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收方' ROW_FORMAT = DYNAMIC; ALTER TABLE `pay_order` ADD COLUMN `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否需要分账' AFTER `deleted`; diff --git a/_config/sql/dax-pay.sql b/_config/sql/dax-pay.sql index 75b00753..4baa8622 100644 --- a/_config/sql/dax-pay.sql +++ b/_config/sql/dax-pay.sql @@ -8,7 +8,7 @@ Target Server Version : 50743 File Encoding : 65001 - Date: 26/03/2024 10:58:01 + Date: 18/04/2024 11:05:44 */ SET NAMES utf8mb4; @@ -160,6 +160,12 @@ INSERT INTO `base_dict` VALUES (1761588314480300032, 'WechatPayRecordType', '微 INSERT INTO `base_dict` VALUES (1763588034467713024, 'ReconcileDiffType', '对账差异类型', b'1', '支付', '', 1399985191002447872, '2024-03-01 23:32:08', 1399985191002447872, '2024-03-01 23:32:08', 0, 0); INSERT INTO `base_dict` VALUES (1766713545981153280, 'UnionPaySignType', '云闪付签名类型', b'1', '支付', '', 1399985191002447872, '2024-03-10 14:31:48', 1399985191002447872, '2024-03-10 14:31:48', 0, 0); INSERT INTO `base_dict` VALUES (1768206399071809536, 'UnionPayRecordType', '云闪付流水类型', b'1', '支付', '', 1399985191002447872, '2024-03-14 17:23:52', 1399985191002447872, '2024-03-14 17:23:52', 0, 0); +INSERT INTO `base_dict` VALUES (1775112798259302400, 'AllocationReceiverType', '分账接收方类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 18:47:26', 1399985191002447872, '2024-04-02 18:47:26', 0, 0); +INSERT INTO `base_dict` VALUES (1775122632706805760, 'AllocationRelationType', '分账关系类型', b'1', '支付', '', 1399985191002447872, '2024-04-02 19:26:30', 1399985191002447872, '2024-04-02 19:26:30', 0, 0); +INSERT INTO `base_dict` VALUES (1777697358802530304, 'AllocationOrderStatus', '分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-09 21:57:33', 1399985191002447872, '2024-04-16 19:09:18', 0, 1); +INSERT INTO `base_dict` VALUES (1780163691808391168, 'AllocationDetailResult', '支付分账明细处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:17:53', 1399985191002447872, '2024-04-16 17:23:37', 0, 2); +INSERT INTO `base_dict` VALUES (1780165499633106944, 'AllocationOrderResult', '支付分账订单处理结果', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:25:04', 1399985191002447872, '2024-04-16 17:25:04', 0, 0); +INSERT INTO `base_dict` VALUES (1780165929528295424, 'PayOrderAllocationStatus', '支付订单分账状态', b'1', '支付', '', 1399985191002447872, '2024-04-16 17:26:46', 1399985191002447872, '2024-04-16 17:26:46', 0, 0); -- ---------------------------- -- Table structure for base_dict_item @@ -360,6 +366,39 @@ INSERT INTO `base_dict_item` VALUES (1763588174695878656, 1763588034467713024, ' INSERT INTO `base_dict_item` VALUES (1766713657021157376, 1766713545981153280, 'UnionPaySignType', 'RSA2', 'RSA2', b'1', 0.00, '', 1399985191002447872, '2024-03-10 14:32:14', 1399985191002447872, '2024-03-10 14:32:14', 0, 0); INSERT INTO `base_dict_item` VALUES (1768206502721449984, 1768206399071809536, 'UnionPayRecordType', 'pay', '支付', b'1', 1.00, '', 1399985191002447872, '2024-03-14 17:24:17', 1399985191002447872, '2024-03-14 17:24:17', 0, 0); INSERT INTO `base_dict_item` VALUES (1768206547285929984, 1768206399071809536, 'UnionPayRecordType', 'refund', '退款', b'1', 0.00, '', 1399985191002447872, '2024-03-14 17:24:27', 1399985191002447872, '2024-03-14 17:24:27', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122126567559168, 1775112798259302400, 'AllocationReceiverType', 'wx_personal', '个人', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:24:30', 1399985191002447872, '2024-04-02 19:24:30', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122171861848064, 1775112798259302400, 'AllocationReceiverType', 'wx_merchant', '商户', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:24:41', 1399985191002447872, '2024-04-02 19:24:41', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122227956469760, 1775112798259302400, 'AllocationReceiverType', 'ali_user_id', '用户ID', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:24:54', 1399985191002447872, '2024-04-02 19:25:53', 0, 1); +INSERT INTO `base_dict_item` VALUES (1775122278170677248, 1775112798259302400, 'AllocationReceiverType', 'ali_open_id', '登录号', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:25:06', 1399985191002447872, '2024-04-02 19:25:06', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122427802472448, 1775112798259302400, 'AllocationReceiverType', 'ali_login_name', '账号', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:25:42', 1399985191002447872, '2024-04-02 19:25:42', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122672623996928, 1775122632706805760, 'AllocationRelationType', 'SERVICE_PROVIDER', '服务商', b'1', 1.00, '', 1399985191002447872, '2024-04-02 19:26:40', 1399985191002447872, '2024-04-02 19:26:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122710884438016, 1775122632706805760, 'AllocationRelationType', 'STORE', '门店', b'1', 2.00, '', 1399985191002447872, '2024-04-02 19:26:49', 1399985191002447872, '2024-04-02 19:26:49', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122750612885504, 1775122632706805760, 'AllocationRelationType', 'STAFF', '员工', b'1', 3.00, '', 1399985191002447872, '2024-04-02 19:26:59', 1399985191002447872, '2024-04-02 19:26:59', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122847035740160, 1775122632706805760, 'AllocationRelationType', 'STORE_OWNER', '店主', b'1', 4.00, '', 1399985191002447872, '2024-04-02 19:27:22', 1399985191002447872, '2024-04-02 19:27:22', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122892464246784, 1775122632706805760, 'AllocationRelationType', 'PARTNER', '合作伙伴', b'1', 5.00, '', 1399985191002447872, '2024-04-02 19:27:32', 1399985191002447872, '2024-04-02 19:27:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775122934138851328, 1775122632706805760, 'AllocationRelationType', 'HEADQUARTER', '总部', b'1', 6.00, '', 1399985191002447872, '2024-04-02 19:27:42', 1399985191002447872, '2024-04-02 19:27:42', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775123560512016384, 1775122632706805760, 'AllocationRelationType', 'DISTRIBUTOR', '分销商', b'1', 7.00, '', 1399985191002447872, '2024-04-02 19:30:12', 1399985191002447872, '2024-04-02 19:30:12', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775123607781822464, 1775122632706805760, 'AllocationRelationType', 'USER', '用户', b'1', 8.00, '', 1399985191002447872, '2024-04-02 19:30:23', 1399985191002447872, '2024-04-02 19:30:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775123654527340544, 1775122632706805760, 'AllocationRelationType', 'SUPPLIER', '供应商', b'1', 9.00, '', 1399985191002447872, '2024-04-02 19:30:34', 1399985191002447872, '2024-04-02 19:30:34', 0, 0); +INSERT INTO `base_dict_item` VALUES (1775123705886593024, 1775122632706805760, 'AllocationRelationType', 'CUSTOM', '自定义', b'1', 10.00, '', 1399985191002447872, '2024-04-02 19:30:46', 1399985191002447872, '2024-04-02 19:30:46', 0, 0); +INSERT INTO `base_dict_item` VALUES (1777700713809522688, 1777697358802530304, 'AllocationOrderStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-09 22:10:53', 1399985191002447872, '2024-04-09 22:10:53', 0, 0); +INSERT INTO `base_dict_item` VALUES (1777700750744563712, 1777697358802530304, 'AllocationOrderStatus', 'allocation_processing', '分账处理中', b'1', 2.00, '', 1399985191002447872, '2024-04-09 22:11:02', 1399985191002447872, '2024-04-16 17:14:53', 0, 1); +INSERT INTO `base_dict_item` VALUES (1777700787453112320, 1777697358802530304, 'AllocationOrderStatus', 'allocation_end', '分账完成', b'1', 3.00, '', 1399985191002447872, '2024-04-09 22:11:10', 1399985191002447872, '2024-04-16 17:36:25', 0, 2); +INSERT INTO `base_dict_item` VALUES (1777700835826020352, 1777697358802530304, 'AllocationOrderStatus', 'allocation_failed', '分账失败', b'1', 4.00, '', 1399985191002447872, '2024-04-09 22:11:22', 1399985191002447872, '2024-04-16 17:16:34', 0, 2); +INSERT INTO `base_dict_item` VALUES (1777700870613577728, 1777697358802530304, 'AllocationOrderStatus', 'finish', '分账完结', b'1', 5.00, '', 1399985191002447872, '2024-04-09 22:11:30', 1399985191002447872, '2024-04-16 17:17:06', 0, 1); +INSERT INTO `base_dict_item` VALUES (1777700915450687488, 1777697358802530304, 'AllocationStatus', 'partial_failed', '部分分账失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:41', 1399985191002447872, '2024-04-16 17:16:49', 1, 1); +INSERT INTO `base_dict_item` VALUES (1777700964087836672, 1777697358802530304, 'AllocationOrderStatus', 'finish_failed', '分账完结失败', b'1', 6.00, '', 1399985191002447872, '2024-04-09 22:11:53', 1399985191002447872, '2024-04-16 17:17:25', 0, 1); +INSERT INTO `base_dict_item` VALUES (1777701030081015808, 1777697358802530304, 'AllocationStatus', 'closed', '分账关闭', b'1', 8.00, '', 1399985191002447872, '2024-04-09 22:12:08', 1399985191002447872, '2024-04-16 17:16:19', 1, 0); +INSERT INTO `base_dict_item` VALUES (1777701090676125696, 1777697358802530304, 'AllocationStatus', 'unknown', '分账状态未知', b'1', 9.00, '', 1399985191002447872, '2024-04-09 22:12:23', 1399985191002447872, '2024-04-16 17:16:16', 1, 0); +INSERT INTO `base_dict_item` VALUES (1780164864510623744, 1780163691808391168, 'AllocationDetailResult', 'pending', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:22:32', 1399985191002447872, '2024-04-16 17:22:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780164903886749696, 1780163691808391168, 'AllocationDetailResult', 'success', '分账成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:22:42', 1399985191002447872, '2024-04-16 17:22:42', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780164940712738816, 1780163691808391168, 'AllocationDetailResult', 'fail', '分账失败', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:22:50', 1399985191002447872, '2024-04-16 17:22:50', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780165545665593344, 1780165499633106944, 'AllocationOrderResult', 'all_pending', '全部成功', b'1', 0.00, '', 1399985191002447872, '2024-04-16 17:25:15', 1399985191002447872, '2024-04-16 17:25:15', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780165581623361536, 1780165499633106944, 'AllocationOrderResult', 'all_success', '全部成功', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:25:23', 1399985191002447872, '2024-04-16 17:25:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780165617413357568, 1780165499633106944, 'AllocationOrderResult', 'part_success', '部分成功', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:25:32', 1399985191002447872, '2024-04-16 17:25:32', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780165653350154240, 1780165499633106944, 'AllocationOrderResult', 'all_failed', '全部失败', b'1', 3.00, '', 1399985191002447872, '2024-04-16 17:25:40', 1399985191002447872, '2024-04-16 17:25:40', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780165986231091200, 1780165929528295424, 'PayOrderAllocationStatus', 'waiting', '待分账', b'1', 1.00, '', 1399985191002447872, '2024-04-16 17:27:00', 1399985191002447872, '2024-04-16 17:27:00', 0, 0); +INSERT INTO `base_dict_item` VALUES (1780166037149941760, 1780165929528295424, 'PayOrderAllocationStatus', 'allocation', '已分账', b'1', 2.00, '', 1399985191002447872, '2024-04-16 17:27:12', 1399985191002447872, '2024-04-16 17:27:12', 0, 0); -- ---------------------------- -- Table structure for base_dynamic_data_source @@ -962,7 +1001,7 @@ INSERT INTO `iam_perm_menu` VALUES (1745457623493496832, 'dax-pay', 174464285634 INSERT INTO `iam_perm_menu` VALUES (1745457746529210368, 'dax-pay', 1744642856348520448, '退款订单', 'RefundOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/refund/RefundOrderList.vue', NULL, '/pay/order/refund', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-11 22:48:50', 1399985191002447872, '2024-01-21 22:50:29', 2, 0); INSERT INTO `iam_perm_menu` VALUES (1745822093382230016, 'dax-pay', 1744271715476684800, '通道配置', 'ChannelPayConfigList', NULL, b'0', '', b'0', b'0', 'payment/channel/config/ChannelPayConfigList', NULL, '/pay/config/channelpay', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-12 22:56:38', 1399985191002447872, '2024-02-06 14:32:08', 2, 0); INSERT INTO `iam_perm_menu` VALUES (1746194891925561344, 'dax-pay', 1744271715476684800, '平台配置', 'PayPlatformConfig', NULL, b'0', '', b'0', b'0', 'payment/system/platform/PayPlatformConfig', NULL, '/pay/config/platform', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-13 23:38:00', 1399985191002447872, '2024-01-13 23:38:00', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1749262518385082368, 'dax-pay', 1744642856348520448, '对账订单', 'ReconcileOrder', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/pay/order/reconcile', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-22 10:47:39', 1399985191002447872, '2024-03-04 21:06:18', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1749262518385082368, 'dax-pay', 1744642856348520448, '对账订单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-01-22 10:47:39', 1399985191002447872, '2024-04-16 19:11:56', 5, 0); INSERT INTO `iam_perm_menu` VALUES (1758860876272861184, 'dax-pay', NULL, '支付通道', 'PayChannel', NULL, b'0', 'ant-design:align-left-outlined', b'0', b'0', 'Layout', NULL, '/pay/channel', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:28:06', 1399985191002447872, '2024-02-17 22:28:06', 0, 0); INSERT INTO `iam_perm_menu` VALUES (1758861129311027200, 'dax-pay', 1758860876272861184, '钱包管理', 'WalletList', NULL, b'0', '', b'0', b'0', 'payment/channel/wallet/manager/WalletList', NULL, '/pay/channel/wallet', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-17 22:29:06', 1399985191002447872, '2024-03-05 22:09:12', 2, 0); INSERT INTO `iam_perm_menu` VALUES (1759192238594949120, 'dax-pay', 1758860876272861184, '储值卡管理', 'VoucherList', NULL, b'0', '', b'0', b'0', 'payment/channel/voucher/manager/VoucherList', NULL, '/pay/channel/voucher', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-18 20:24:49', 1399985191002447872, '2024-03-05 22:09:30', 2, 0); @@ -973,9 +1012,13 @@ INSERT INTO `iam_perm_menu` VALUES (1759861648606097408, 'dax-pay', 175886087627 INSERT INTO `iam_perm_menu` VALUES (1759865163772485632, 'dax-pay', 1758860876272861184, '微信流水', 'WechatPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/wechat/record/WechatPayRecordList', NULL, '/pay/channel/wecha', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-20 16:58:46', 1399985191002447872, '2024-02-20 17:00:08', 1, 0); INSERT INTO `iam_perm_menu` VALUES (1761429304959528960, 'dax-pay', NULL, '任务记录', 'PayTask', NULL, b'0', 'ant-design:clock-circle-outlined', b'0', b'0', 'Layout', NULL, '/pay/task', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:34:07', 1399985191002447872, '2024-02-25 00:34:30', 1, 0); INSERT INTO `iam_perm_menu` VALUES (1761429682618855424, 'dax-pay', 1761429304959528960, '消息通知', 'ClientNoticeTaskList', NULL, b'0', '', b'0', b'0', 'payment/task/notice/ClientNoticeTaskList', NULL, '/pay/task/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-02-25 00:35:37', 1399985191002447872, '2024-02-25 00:35:37', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1764638353289027584, 'dax-pay', 1749262518385082368, '对账单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:05:43', 1399985191002447872, '2024-03-04 21:07:14', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1764638678821543936, 'dax-pay', 1749262518385082368, '差异单', 'ReconcileDiffList', NULL, b'0', '', b'1', b'0', 'payment/order/reconcile/diff/ReconcileDiffList.vue', NULL, '/pay/order/reconcile/diff', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:07:01', 1399985191002447872, '2024-03-05 12:49:19', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1764638353289027584, 'dax-pay', 1749262518385082368, '对账单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:05:43', 1399985191002447872, '2024-04-16 19:12:02', 1, 1); +INSERT INTO `iam_perm_menu` VALUES (1764638678821543936, 'dax-pay', 1749262518385082368, '差异单', 'ReconcileDiffList', NULL, b'0', '', b'1', b'0', 'payment/order/reconcile/diff/ReconcileDiffList.vue', NULL, '/pay/order/reconcile/diff', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:07:01', 1399985191002447872, '2024-04-16 19:12:06', 2, 1); INSERT INTO `iam_perm_menu` VALUES (1768203432981655552, 'dax-pay', 1758860876272861184, '云闪付流水', 'UnionPayRecordList', NULL, b'0', '', b'0', b'0', 'payment/channel/union/record/UnionPayRecordList', NULL, '/pay/channel/union', '', -1, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-14 17:12:05', 1399985191002447872, '2024-03-14 17:12:05', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1775089099078553600, 'dax-pay', NULL, '分账管理', 'Allocation', NULL, b'0', 'ant-design:sliders-twotone', b'0', b'0', 'Layout', NULL, '/pay/allocation', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:13:15', 1399985191002447872, '2024-04-02 17:13:15', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1775089820368818176, 'dax-pay', 1775089099078553600, '分账接收者', 'AllocationReceiverList', NULL, b'0', '', b'0', b'0', 'payment/allocation/receiver/AllocationReceiverList', NULL, '/pay/allocation/receiver', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:16:07', 1399985191002447872, '2024-04-02 17:23:13', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1775091561835450368, 'dax-pay', 1775089099078553600, '分账组', 'AllocationGroupList', NULL, b'0', '', b'0', b'0', 'payment/allocation/group/AllocationGroupList', NULL, '/pay/allocation/group', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-02 17:23:03', 1399985191002447872, '2024-04-02 17:23:27', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1777688382748700672, 'dax-pay', 1744642856348520448, '分账订单', 'AllocationOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/allocation/AllocationOrderList', NULL, '/pay/order/allocation', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-04-09 21:21:53', 1399985191002447872, '2024-04-09 21:21:53', 0, 0); -- ---------------------------- -- Table structure for iam_perm_path @@ -1017,8 +1060,8 @@ INSERT INTO `iam_perm_path` VALUES (1757297527147974667, 'GeneralTemplateControl INSERT INTO `iam_perm_path` VALUES (1757297527147974668, 'AlipayConfigController#update', '更新', 'POST', '/alipay/config/update', '支付宝配置', b'1', b'1', '支付宝配置 更新', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1757297527147974669, 'UniPayController#refund', '统一退款', 'POST', '/unipay/refund', '统一支付接口', b'1', b'1', '统一支付接口 统一退款', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1757297527147974670, 'DynamicFormController#existsByCode', '编码是否被使用', 'GET', '/dynamic/form/existsByCode', '动态表单', b'1', b'1', '动态表单 编码是否被使用', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); -INSERT INTO `iam_perm_path` VALUES (1757297527147974671, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs/', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); -INSERT INTO `iam_perm_path` VALUES (1757297527147974672, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974671, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs/', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-04-16 20:47:44.531000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1757297527147974672, 'TestController#wxcs', '微信回调测试', 'GET', '/test/wxcs', '测试', b'1', b'1', '测试 微信回调测试', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-04-16 20:47:44.526000', b'1', 0); INSERT INTO `iam_perm_path` VALUES (1757297527147974673, 'MessageTemplateController#page', '分页', 'GET', '/message/template/page', '消息模板', b'1', b'1', '消息模板 分页', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1757297527147974674, 'GeneralTemplateController#findAll', '查询所有', 'GET', '/general/template/findAll', '通用模板管理', b'1', b'1', '通用模板管理 查询所有', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1757297527147974675, 'QuartzJobLogController#findById', '单条', 'GET', '/quartz/log/findById', '定时任务执行日志', b'1', b'1', '定时任务执行日志 单条', 1399985191002447872, '2024-02-13 14:55:54.138000', 1399985191002447872, '2024-02-13 14:55:54.138000', b'0', 0); @@ -1501,6 +1544,59 @@ INSERT INTO `iam_perm_path` VALUES (1772446740356460547, 'CockpitReportControlle INSERT INTO `iam_perm_path` VALUES (1772446740356460548, 'ReconcileOrderController#upload', '手动上传对账单文件', 'POST', '/order/reconcile/upload', '对账控制器', b'1', b'1', '对账控制器 手动上传对账单文件', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1772446740356460549, 'CockpitReportController#getPayAmount', '支付金额(分)', 'GET', '/report/cockpit/getPayAmount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付金额(分)', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); INSERT INTO `iam_perm_path` VALUES (1772446740356460550, 'CockpitReportController#getPayOrderCount', '支付订单数量', 'GET', '/report/cockpit/getPayOrderCount', '驾驶舱接口', b'1', b'1', '驾驶舱接口 支付订单数量', 1399985191002447872, '2024-03-26 10:13:28.025000', 1399985191002447872, '2024-03-26 10:13:28.025000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138432, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '对账订单控制器', b'1', b'1', '对账订单控制器 同步分账结果', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138433, 'AllocationGroupController#findReceiversByGroups', '查询分账接收方信息', 'GET', '/allocation/group/findReceiversByGroups', '分账组', b'1', b'1', '分账组 查询分账接收方信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138434, 'AllocationGroupController#unbindReceiver', '取消绑定接收者', 'POST', '/allocation/group/unbindReceiver', '分账组', b'1', b'1', '分账组 取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138435, 'PayOrderController#allocation', '发起分账', 'POST', '/order/pay/allocation', '支付订单控制器', b'1', b'1', '支付订单控制器 发起分账', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138436, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.850000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138437, 'AllocationGroupController#unbindReceivers', '批量取消绑定接收者', 'POST', '/allocation/group/unbindReceivers', '分账组', b'1', b'1', '分账组 批量取消绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138438, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询明细详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138439, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '对账订单控制器', b'1', b'1', '对账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138440, 'SystemMonitorController#getSystemInfo', '获取系统消息', 'GET', '/monitor/system/getSystemInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取系统消息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138441, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '对账接收方控制器', b'1', b'1', '对账接收方控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.849000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138442, 'AllocationGroupController#clearDefault', '清除默认分账组', 'POST', '/allocation/group/clearDefault', '分账组', b'1', b'1', '分账组 清除默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138443, 'AllocationGroupController#create', '创建', 'POST', '/allocation/group/create', '分账组', b'1', b'1', '分账组 创建', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138444, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '对账订单控制器', b'1', b'1', '对账订单控制器 分账完结', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138445, 'UniPayController#allocationFinish', '分账完结接口', 'POST', '/unipay/allocationFinish', '统一支付接口', b'1', b'1', '统一支付接口 分账完结接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138446, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '对账订单控制器', b'1', b'1', '对账订单控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138447, 'SystemMonitorController#getRedisInfo', '获取Redis信息', 'GET', '/monitor/system/getRedisInfo', '系统信息监控', b'1', b'1', '系统信息监控 获取Redis信息', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138448, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '对账接收方控制器', b'1', b'1', '对账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.848000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138449, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '对账接收方控制器', b'1', b'1', '对账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138450, 'AllocationGroupController#delete', '删除', 'POST', '/allocation/group/delete', '分账组', b'1', b'1', '分账组 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138451, 'AllocationGroupController#update', '修改', 'POST', '/allocation/group/update', '分账组', b'1', b'1', '分账组 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138452, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '对账接收方控制器', b'1', b'1', '对账接收方控制器 新增', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138453, 'AllocationGroupController#setDefault', '设置默认分账组', 'POST', '/allocation/group/setDefault', '分账组', b'1', b'1', '分账组 设置默认分账组', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138454, 'AllocationGroupController#findById', '查询详情', 'GET', '/allocation/group/findById', '分账组', b'1', b'1', '分账组 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138455, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '对账接收方控制器', b'1', b'1', '对账接收方控制器 修改', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.847000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138456, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '对账接收方控制器', b'1', b'1', '对账接收方控制器 删除', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138457, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '对账接收方控制器', b'1', b'1', '对账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138458, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '对账接收方控制器', b'1', b'1', '对账接收方控制器 查询详情', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138459, 'AllocationGroupController#page', '分页', 'GET', '/allocation/group/page', '分账组', b'1', b'1', '分账组 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138460, 'AllocationGroupController#bindReceivers', '批量绑定接收者', 'POST', '/allocation/group/bindReceivers', '分账组', b'1', b'1', '分账组 批量绑定接收者', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138461, 'AllocationGroupController#updateRate', '修改分账比例', 'POST', '/allocation/group/updateRate', '分账组', b'1', b'1', '分账组 修改分账比例', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138462, 'UniPayController#allocation', '开启分账接口', 'POST', '/unipay/allocation', '统一支付接口', b'1', b'1', '统一支付接口 开启分账接口', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-16 20:47:44.424000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138463, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '对账订单控制器', b'1', b'1', '对账订单控制器 分账明细列表', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.846000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138464, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '对账订单控制器', b'1', b'1', '对账订单控制器 分账重试', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.845000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780216505637138465, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '对账订单控制器', b'1', b'1', '对账订单控制器 分页', 1399985191002447872, '2024-04-16 20:47:44.424000', 1399985191002447872, '2024-04-17 10:09:40.839000', b'1', 0); +INSERT INTO `iam_perm_path` VALUES (1780417658844966912, 'PayGatewayNoticeController#wechatPayNotice', '微信消息通知', 'POST', '/gateway/notice/wechat', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 微信消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780417658844966913, 'PayGatewayNoticeController#aliPayNotice', '支付宝消息通知', 'POST', '/gateway/notice/alipay', '三方支付网关消息通知', b'1', b'1', '三方支付网关消息通知 支付宝消息通知', 1399985191002447872, '2024-04-17 10:07:03.086000', 1399985191002447872, '2024-04-17 10:07:03.086000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063232, 'AllocationReceiverController#page', '分页', 'GET', '/allocation/receiver/page', '分账接收方控制器', b'1', b'1', '分账接收方控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063233, 'AllocationOrderController#finish', '分账完结', 'POST', '/order/allocation/finish', '分账订单控制器', b'1', b'1', '分账订单控制器 分账完结', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063234, 'AllocationReceiverController#delete', '删除', 'POST', '/allocation/receiver/delete', '分账接收方控制器', b'1', b'1', '分账接收方控制器 删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063235, 'AllocationReceiverController#add', '新增', 'POST', '/allocation/receiver/add', '分账接收方控制器', b'1', b'1', '分账接收方控制器 新增', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063236, 'AllocationReceiverController#findById', '查询详情', 'GET', '/allocation/receiver/findById', '分账接收方控制器', b'1', b'1', '分账接收方控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063237, 'AllocationOrderController#sync', '同步分账结果', 'POST', '/order/allocation/sync', '分账订单控制器', b'1', b'1', '分账订单控制器 同步分账结果', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063238, 'AllocationReceiverController#findReceiverTypeByChannel', '根据通道获取分账接收方类型', 'GET', '/allocation/receiver/findReceiverTypeByChannel', '分账接收方控制器', b'1', b'1', '分账接收方控制器 根据通道获取分账接收方类型', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063239, 'AllocationReceiverController#removeByGateway', '从三方支付系统中删除', 'POST', '/allocation/receiver/removeByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 从三方支付系统中删除', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063240, 'AllocationOrderController#page', '分页', 'GET', '/order/allocation/page', '分账订单控制器', b'1', b'1', '分账订单控制器 分页', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063241, 'AllocationOrderController#findChannels', '获取可以分账的通道', 'GET', '/order/allocation/findChannels', '分账订单控制器', b'1', b'1', '分账订单控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063242, 'AllocationOrderController#findDetailsByOrderId', '分账明细列表', 'GET', '/order/allocation/detail/findAll', '分账订单控制器', b'1', b'1', '分账订单控制器 分账明细列表', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063243, 'AllocationReceiverController#registerByGateway', '同步到三方支付系统中', 'POST', '/allocation/receiver/registerByGateway', '分账接收方控制器', b'1', b'1', '分账接收方控制器 同步到三方支付系统中', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063244, 'AllocationReceiverController#findChannels', '获取可以分账的通道', 'GET', '/allocation/receiver/findChannels', '分账接收方控制器', b'1', b'1', '分账接收方控制器 获取可以分账的通道', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063245, 'AllocationOrderController#findById', '查询详情', 'GET', '/order/allocation/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063246, 'AllocationOrderController#findDetailById', '查询明细详情', 'GET', '/order/allocation/detail/findById', '分账订单控制器', b'1', b'1', '分账订单控制器 查询明细详情', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063247, 'AllocationReceiverController#update', '修改', 'POST', '/allocation/receiver/update', '分账接收方控制器', b'1', b'1', '分账接收方控制器 修改', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); +INSERT INTO `iam_perm_path` VALUES (1780418342852063248, 'AllocationOrderController#retryAllocation', '分账重试', 'POST', '/order/allocation/retry', '分账订单控制器', b'1', b'1', '分账订单控制器 分账重试', 1399985191002447872, '2024-04-17 10:09:46.166000', 1399985191002447872, '2024-04-17 10:09:46.166000', b'0', 0); -- ---------------------------- -- Table structure for iam_role @@ -1638,12 +1734,16 @@ INSERT INTO `iam_role_menu` VALUES (1762112282232565766, 1757298887092326400, 'd INSERT INTO `iam_role_menu` VALUES (1762112282232565767, 1757298887092326400, 'dax-pay', 1761429682618855424); INSERT INTO `iam_role_menu` VALUES (1762112282232565768, 1757298887092326400, 'dax-pay', 1759768820429352960); INSERT INTO `iam_role_menu` VALUES (1762112282232565769, 1757298887092326400, 'dax-pay', 1759769092698402816); -INSERT INTO `iam_role_menu` VALUES (1764945575888781312, 1757297023118462976, 'dax-pay', 1764638353289027584); -INSERT INTO `iam_role_menu` VALUES (1764945575888781313, 1757297023118462976, 'dax-pay', 1764638678821543936); -INSERT INTO `iam_role_menu` VALUES (1764945576350154752, 1757298887092326400, 'dax-pay', 1764638353289027584); -INSERT INTO `iam_role_menu` VALUES (1764945576350154753, 1757298887092326400, 'dax-pay', 1764638678821543936); INSERT INTO `iam_role_menu` VALUES (1768220067952029696, 1757297023118462976, 'dax-pay', 1768203432981655552); INSERT INTO `iam_role_menu` VALUES (1768220068631506944, 1757298887092326400, 'dax-pay', 1768203432981655552); +INSERT INTO `iam_role_menu` VALUES (1780416732268605440, 1757297023118462976, 'dax-pay', 1775089099078553600); +INSERT INTO `iam_role_menu` VALUES (1780416732268605441, 1757297023118462976, 'dax-pay', 1775089820368818176); +INSERT INTO `iam_role_menu` VALUES (1780416732268605442, 1757297023118462976, 'dax-pay', 1775091561835450368); +INSERT INTO `iam_role_menu` VALUES (1780416732268605443, 1757297023118462976, 'dax-pay', 1777688382748700672); +INSERT INTO `iam_role_menu` VALUES (1780416732574789632, 1757298887092326400, 'dax-pay', 1775089099078553600); +INSERT INTO `iam_role_menu` VALUES (1780416732574789633, 1757298887092326400, 'dax-pay', 1775089820368818176); +INSERT INTO `iam_role_menu` VALUES (1780416732574789634, 1757298887092326400, 'dax-pay', 1775091561835450368); +INSERT INTO `iam_role_menu` VALUES (1780416732574789635, 1757298887092326400, 'dax-pay', 1777688382748700672); -- ---------------------------- -- Table structure for iam_role_path @@ -1851,6 +1951,53 @@ INSERT INTO `iam_role_path` VALUES (1772447125519396865, 1757298887092326400, 17 INSERT INTO `iam_role_path` VALUES (1772447125519396866, 1757298887092326400, 1764663810424303618); INSERT INTO `iam_role_path` VALUES (1772447125519396867, 1757298887092326400, 1764663810424303617); INSERT INTO `iam_role_path` VALUES (1772447125519396868, 1757298887092326400, 1764663810424303616); +INSERT INTO `iam_role_path` VALUES (1780464836388855808, 1757297023118462976, 1780216505637138435); +INSERT INTO `iam_role_path` VALUES (1780464836388855809, 1757297023118462976, 1780418342852063247); +INSERT INTO `iam_role_path` VALUES (1780464836388855810, 1757297023118462976, 1780418342852063244); +INSERT INTO `iam_role_path` VALUES (1780464836388855811, 1757297023118462976, 1780418342852063238); +INSERT INTO `iam_role_path` VALUES (1780464836388855812, 1757297023118462976, 1780418342852063236); +INSERT INTO `iam_role_path` VALUES (1780464836388855813, 1757297023118462976, 1780418342852063235); +INSERT INTO `iam_role_path` VALUES (1780464836388855814, 1757297023118462976, 1780418342852063234); +INSERT INTO `iam_role_path` VALUES (1780464836388855815, 1757297023118462976, 1780418342852063232); +INSERT INTO `iam_role_path` VALUES (1780464836388855816, 1757297023118462976, 1780418342852063239); +INSERT INTO `iam_role_path` VALUES (1780464836388855817, 1757297023118462976, 1780418342852063243); +INSERT INTO `iam_role_path` VALUES (1780464836388855818, 1757297023118462976, 1780418342852063248); +INSERT INTO `iam_role_path` VALUES (1780464836388855819, 1757297023118462976, 1780418342852063246); +INSERT INTO `iam_role_path` VALUES (1780464836388855820, 1757297023118462976, 1780418342852063245); +INSERT INTO `iam_role_path` VALUES (1780464836388855821, 1757297023118462976, 1780418342852063242); +INSERT INTO `iam_role_path` VALUES (1780464836388855822, 1757297023118462976, 1780418342852063241); +INSERT INTO `iam_role_path` VALUES (1780464836388855823, 1757297023118462976, 1780418342852063240); +INSERT INTO `iam_role_path` VALUES (1780464836388855824, 1757297023118462976, 1780418342852063237); +INSERT INTO `iam_role_path` VALUES (1780464836388855825, 1757297023118462976, 1780418342852063233); +INSERT INTO `iam_role_path` VALUES (1780464836741177344, 1757298887092326400, 1780216505637138435); +INSERT INTO `iam_role_path` VALUES (1780464836741177346, 1757298887092326400, 1780418342852063244); +INSERT INTO `iam_role_path` VALUES (1780464836741177347, 1757298887092326400, 1780418342852063238); +INSERT INTO `iam_role_path` VALUES (1780464836741177348, 1757298887092326400, 1780418342852063236); +INSERT INTO `iam_role_path` VALUES (1780464836741177349, 1757298887092326400, 1780418342852063235); +INSERT INTO `iam_role_path` VALUES (1780464836741177351, 1757298887092326400, 1780418342852063232); +INSERT INTO `iam_role_path` VALUES (1780464836741177354, 1757298887092326400, 1780418342852063248); +INSERT INTO `iam_role_path` VALUES (1780464836741177355, 1757298887092326400, 1780418342852063246); +INSERT INTO `iam_role_path` VALUES (1780464836741177356, 1757298887092326400, 1780418342852063245); +INSERT INTO `iam_role_path` VALUES (1780464836741177357, 1757298887092326400, 1780418342852063242); +INSERT INTO `iam_role_path` VALUES (1780464836741177358, 1757298887092326400, 1780418342852063241); +INSERT INTO `iam_role_path` VALUES (1780464836741177359, 1757298887092326400, 1780418342852063240); +INSERT INTO `iam_role_path` VALUES (1780464836741177360, 1757298887092326400, 1780418342852063237); +INSERT INTO `iam_role_path` VALUES (1780464836741177361, 1757298887092326400, 1780418342852063233); +INSERT INTO `iam_role_path` VALUES (1780466020646395904, 1757297023118462976, 1780216505637138461); +INSERT INTO `iam_role_path` VALUES (1780466020646395905, 1757297023118462976, 1780216505637138460); +INSERT INTO `iam_role_path` VALUES (1780466020646395906, 1757297023118462976, 1780216505637138459); +INSERT INTO `iam_role_path` VALUES (1780466020646395907, 1757297023118462976, 1780216505637138454); +INSERT INTO `iam_role_path` VALUES (1780466020646395908, 1757297023118462976, 1780216505637138453); +INSERT INTO `iam_role_path` VALUES (1780466020646395909, 1757297023118462976, 1780216505637138451); +INSERT INTO `iam_role_path` VALUES (1780466020646395910, 1757297023118462976, 1780216505637138450); +INSERT INTO `iam_role_path` VALUES (1780466020646395911, 1757297023118462976, 1780216505637138443); +INSERT INTO `iam_role_path` VALUES (1780466020646395912, 1757297023118462976, 1780216505637138442); +INSERT INTO `iam_role_path` VALUES (1780466020646395913, 1757297023118462976, 1780216505637138437); +INSERT INTO `iam_role_path` VALUES (1780466020646395914, 1757297023118462976, 1780216505637138434); +INSERT INTO `iam_role_path` VALUES (1780466020646395915, 1757297023118462976, 1780216505637138433); +INSERT INTO `iam_role_path` VALUES (1780466020956774402, 1757298887092326400, 1780216505637138459); +INSERT INTO `iam_role_path` VALUES (1780466020956774403, 1757298887092326400, 1780216505637138454); +INSERT INTO `iam_role_path` VALUES (1780466020956774411, 1757298887092326400, 1780216505637138433); -- ---------------------------- -- Table structure for iam_user_data_role @@ -2320,6 +2467,8 @@ CREATE TABLE `pay_alipay_config` ( `alipay_root_cert` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '支付宝CA根证书', `sandbox` bit(1) NULL DEFAULT NULL COMMENT '是否沙箱环境', `pay_ways` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '可用支付方式', + `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID', + `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', @@ -2327,15 +2476,14 @@ CREATE TABLE `pay_alipay_config` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', - `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', - `alipay_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '合作者身份ID', + `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付宝支付配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_alipay_config -- ---------------------------- -INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0', NULL, NULL); +INSERT INTO `pay_alipay_config` VALUES (0, '123456', b'1', 'ServerUrl/callback/pay/alipay', 'ServerUrl/return/pay/alipay', 'https://openapi.alipay.com/gateway.do', 'key', 'RSA2', 'ImfODRp7hnJ3DUk9fCes0Q==', 'ImfODRp7hnJ3DUk9fCes0Q==', NULL, NULL, NULL, b'0', 'wap,app,web,qrcode,barcode', NULL, 2000, '支付宝支付', 0, '2024-01-02 21:17:58', 1399985191002447872, '2024-02-13 15:43:51', 23, b'0', b'1'); -- ---------------------------- -- Table structure for pay_alipay_reconcile_bill_detail @@ -2423,6 +2571,138 @@ CREATE TABLE `pay_alipay_record` ( -- Records of pay_alipay_record -- ---------------------------- +-- ---------------------------- +-- Table structure for pay_allocation_group +-- ---------------------------- +DROP TABLE IF EXISTS `pay_allocation_group`; +CREATE TABLE `pay_allocation_group` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '通道', + `total_rate` int(11) NULL DEFAULT NULL COMMENT '总分账比例(万分之多少)', + `default_group` bit(1) NULL DEFAULT NULL COMMENT '默认分账组', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账组' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_allocation_group +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_allocation_group_receiver +-- ---------------------------- +DROP TABLE IF EXISTS `pay_allocation_group_receiver`; +CREATE TABLE `pay_allocation_group_receiver` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `group_id` bigint(20) NULL DEFAULT NULL COMMENT '分账组ID', + `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', + `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收组关系' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_allocation_group_receiver +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_allocation_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_allocation_order`; +CREATE TABLE `pay_allocation_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账订单号', + `allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账单号', + `payment_id` bigint(20) NULL DEFAULT NULL COMMENT '支付订单ID', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `gateway_pay_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关支付订单号', + `gateway_allocation_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关分账单号', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `amount` int(11) NULL DEFAULT NULL COMMENT '总分账金额', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账描述', + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账处理结果', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `allocation_no`(`allocation_no`) USING BTREE COMMENT '分账单号索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_allocation_order +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_allocation_order_detail +-- ---------------------------- +DROP TABLE IF EXISTS `pay_allocation_order_detail`; +CREATE TABLE `pay_allocation_order_detail` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `allocation_id` bigint(20) NULL DEFAULT NULL COMMENT '分账订单ID', + `receiver_id` bigint(20) NULL DEFAULT NULL COMMENT '接收者ID', + `rate` int(11) NULL DEFAULT NULL COMMENT '分账比例(万分之多少)', + `amount` int(11) NULL DEFAULT NULL COMMENT '分账金额', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `result` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账结果', + `error_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误代码', + `error_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误原因', + `finish_time` datetime(0) NULL DEFAULT NULL COMMENT '分账完成时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账订单明细' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_allocation_order_detail +-- ---------------------------- + +-- ---------------------------- +-- Table structure for pay_allocation_receiver +-- ---------------------------- +DROP TABLE IF EXISTS `pay_allocation_receiver`; +CREATE TABLE `pay_allocation_receiver` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '账号别名', + `channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属通道', + `receiver_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账接收方类型', + `receiver_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方账号', + `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接收方姓名', + `relation_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账关系类型', + `relation_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关系名称', + `sync` bit(1) NULL DEFAULT NULL COMMENT '是否已经同步到网关', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '分账接收方' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of pay_allocation_receiver +-- ---------------------------- + -- ---------------------------- -- Table structure for pay_api_config -- ---------------------------- @@ -2662,6 +2942,8 @@ CREATE TABLE `pay_order` ( `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否需要分账', + `allocation_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分账状态', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `business_no`(`business_no`) USING BTREE COMMENT '业务业务号索引' ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '支付订单' ROW_FORMAT = DYNAMIC; @@ -2726,7 +3008,7 @@ CREATE TABLE `pay_platform_config` ( -- ---------------------------- -- Records of pay_platform_config -- ---------------------------- -INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '132456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0', NULL); +INSERT INTO `pay_platform_config` VALUES (0, 'http://127.0.0.1', 'HMAC_SHA256', '123456', 'http://127.0.0.1/h5/#/result/success', 'http://127.0.0.1/h5/#/result/success', 30, 0, '2024-01-02 20:23:19', 1757299137932677120, '2024-02-13 15:08:51', 3, b'0', NULL); -- ---------------------------- -- Table structure for pay_reconcile_detail @@ -2997,7 +3279,7 @@ CREATE TABLE `pay_union_pay_config` ( -- ---------------------------- -- Records of pay_union_pay_config -- ---------------------------- -INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0', NULL); +INSERT INTO `pay_union_pay_config` VALUES (0, '123456', b'1', 'https://qra.95516.com/pay/gateway', 'ServerUrl/callback/pay/union', 'wap,app,web,qrcode,barcode,jsapi,b2b', NULL, NULL, 'RSA2', b'0', NULL, NULL, NULL, NULL, b'1', 'ServerUrl/return/pay/union', 0, '2024-03-06 22:56:22', 1399985191002447872, '2024-03-12 23:30:18', 11, b'0', 2000); -- ---------------------------- -- Table structure for pay_union_pay_record @@ -3268,13 +3550,14 @@ CREATE TABLE `pay_wechat_pay_config` ( `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', `single_limit` int(11) NULL DEFAULT NULL COMMENT '支付限额', + `allocation` bit(1) NULL DEFAULT NULL COMMENT '是否支付分账', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信支付配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_wechat_pay_config -- ---------------------------- -INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', '0', NULL, 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', NULL, '0', 'wap,app,jsapi,qrcode,barcode', 0, '0000-00-00 00:00:00', 2024, '0000-00-00 00:00:00', 2024, b'1', NULL); +INSERT INTO `pay_wechat_pay_config` VALUES (0, '123', '123', b'1', 'ServerUrl/callback/pay/wechat', 'ServerUrl/pay/wechat', 'apiV2', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', 'E0jIzPNngkpkZYL19H3vFQ==', b'0', 'wap,app,jsapi,qrcode,barcode', NULL, 0, '2024-04-18 09:15:47', 1399985191002447872, '2024-04-18 09:16:22', 2025, b'0', 2000, b'1'); -- ---------------------------- -- Table structure for pay_wechat_pay_record diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index 1cf85d06..36d281a6 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -1,4 +1,13 @@ # CHANGELOG +## [v2.0.5] +- 新增: 支持支付宝分账功能 +- 新增: 支持微信分账功能 +- 新增: 分账接收者和分账组管理 +- 新增: 支持分账结果同步功能 +- 新增: 支付通道配置中支持是否支持分账 +- 新增: SDK支持分账接口 +- 优化: 收银台演示支持设置是否分账 +- fix: 修复创建支付订单报错时, 订单保存数据不完整 ## [v2.0.4] - 新增: 首页驾驶舱功能: 各通道收入和支付情况 - 新增: 云闪付支持对账功能 diff --git a/_doc/Task.md b/_doc/Task.md index c9722284..677454e8 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,5 +1,5 @@ ## 单商户 -2.0.5: 分账初版 +2.0.4: 分账初版 - [x] 支付通道配置是否支持分账 - [x] 分账接收方管理 - [x] 管理 @@ -17,6 +17,7 @@ - [x] 分账同步 - [x] 修复创建支付订单报错时, 订单保存数据不完整 - [x] 收银台演示支持传输分账标识 +- [x] SDK支持分账接口 2.0.6: 去除组合支付, 一系列代码优化 - [ ] 去除组合支付和场景,降低逻辑的的复杂度 diff --git a/daxpay-single-demo/pom.xml b/daxpay-single-demo/pom.xml index 44976351..4ef01839 100644 --- a/daxpay-single-demo/pom.xml +++ b/daxpay-single-demo/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform dax-pay - 2.0.4 + 2.0.5 daxpay-single-demo @@ -36,7 +36,7 @@ cn.bootx.platform daxpay-single-sdk - 2.0.4 + 2.0.5 diff --git a/daxpay-single-sdk/pom.xml b/daxpay-single-sdk/pom.xml index a399ccf3..bce5744e 100644 --- a/daxpay-single-sdk/pom.xml +++ b/daxpay-single-sdk/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single-sdk - 2.0.4 + 2.0.5 jar diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/divide/DivideOrderModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/allocation/AllocationModel.java similarity index 45% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/divide/DivideOrderModel.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/allocation/AllocationModel.java index efc5275f..4d55416b 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/divide/DivideOrderModel.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/allocation/AllocationModel.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.sdk.model.divide; +package cn.bootx.platform.daxpay.sdk.model.allocation; import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; import lombok.Getter; @@ -6,15 +6,12 @@ import lombok.Setter; import lombok.ToString; /** - * 分账结果(目前未支持) + * 分账结果 * @author xxm - * @since 2024/2/7 + * @since 2024/4/18 */ @Getter @Setter @ToString -public class DivideOrderModel extends DaxPayResponseModel { - - /** 分账状态 */ - private String status; +public class AllocationModel extends DaxPayResponseModel { } diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/divide/DivideOrderParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/allocation/AllocationParam.java similarity index 52% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/divide/DivideOrderParam.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/allocation/AllocationParam.java index c049bfa9..b29eae45 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/divide/DivideOrderParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/allocation/AllocationParam.java @@ -1,6 +1,6 @@ -package cn.bootx.platform.daxpay.sdk.param.divide; +package cn.bootx.platform.daxpay.sdk.param.allocation; -import cn.bootx.platform.daxpay.sdk.model.divide.DivideOrderModel; +import cn.bootx.platform.daxpay.sdk.model.allocation.AllocationModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.lang.TypeReference; @@ -15,27 +15,38 @@ import lombok.Setter; */ @Getter @Setter -public class DivideOrderParam extends DaxPayRequest { +public class AllocationParam extends DaxPayRequest { - /** 支付ID */ + /** 支付单ID */ private Long paymentId; /** 业务号 */ private String businessNo; + /** 分账单号(保证唯一) */ + private String allocationNo; + + /** 分账描述 */ + private String description; + + /** + * 分账组ID, 不传输分账组使用默认分账组进行分账 + */ + private Long allocationGroupId; + /** * 方法请求路径 */ @Override public String path() { - return "/unipay/divide"; + return "/unipay/allocation"; } /** * 将请求返回结果反序列化为实体类 */ @Override - public DaxPayResult toModel(String json) { - return JSONUtil.toBean(json, new TypeReference>() {}, false); + public DaxPayResult toModel(String json) { + return JSONUtil.toBean(json, new TypeReference>() {}, false); } } diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java index 52cedd14..313ef355 100644 --- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/payment/PayAllocationTest.java @@ -3,9 +3,11 @@ package cn.bootx.platform.daxpay.sdk.payment; import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; import cn.bootx.platform.daxpay.sdk.code.PayWayEnum; import cn.bootx.platform.daxpay.sdk.code.SignTypeEnum; +import cn.bootx.platform.daxpay.sdk.model.allocation.AllocationModel; import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.allocation.AllocationParam; import cn.bootx.platform.daxpay.sdk.param.pay.SimplePayParam; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.util.RandomUtil; @@ -31,7 +33,7 @@ public class PayAllocationTest { } /** - * 异步通道测试 + * 创建用于分账的订单 */ @Test public void simplePay() { @@ -51,5 +53,21 @@ public class PayAllocationTest { PayOrderModel data = execute.getData(); System.out.println(data); } + /** + * 开启分账 + */ + @Test + public void allocation() { + // 分账参数 + AllocationParam param = new AllocationParam(); + param.setAllocationNo("A"+ RandomUtil.randomNumbers(5)); + param.setDescription("测试分账"); + param.setAllocationGroupId(1L); + param.setClientIp("127.0.0.1"); + param.setPaymentId(1L); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + } } diff --git a/daxpay-single/daxpay-single-admin/pom.xml b/daxpay-single/daxpay-single-admin/pom.xml index af007f5c..ee5458a0 100644 --- a/daxpay-single/daxpay-single-admin/pom.xml +++ b/daxpay-single/daxpay-single-admin/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.4 + 2.0.5 daxpay-single-admin diff --git a/daxpay-single/daxpay-single-core/pom.xml b/daxpay-single/daxpay-single-core/pom.xml index a6abf109..b8b8a89d 100644 --- a/daxpay-single/daxpay-single-core/pom.xml +++ b/daxpay-single/daxpay-single-core/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.4 + 2.0.5 daxpay-single-core diff --git a/daxpay-single/daxpay-single-gateway/pom.xml b/daxpay-single/daxpay-single-gateway/pom.xml index 69ce8c08..cbe7a88b 100644 --- a/daxpay-single/daxpay-single-gateway/pom.xml +++ b/daxpay-single/daxpay-single-gateway/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.4 + 2.0.5 daxpay-single-gateway diff --git a/daxpay-single/daxpay-single-service/pom.xml b/daxpay-single/daxpay-single-service/pom.xml index 4c477fa9..e1d68017 100644 --- a/daxpay-single/daxpay-single-service/pom.xml +++ b/daxpay-single/daxpay-single-service/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.4 + 2.0.5 daxpay-single-service diff --git a/daxpay-single/daxpay-single-start/pom.xml b/daxpay-single/daxpay-single-start/pom.xml index 09fc29bd..5819e843 100644 --- a/daxpay-single/daxpay-single-start/pom.xml +++ b/daxpay-single/daxpay-single-start/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform daxpay-single - 2.0.4 + 2.0.5 daxpay-single-start diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index 6d6d2448..853435b7 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -65,7 +65,7 @@ bootx: swagger: enabled: true author: bootx - version: 2.0.4 + version: 2.0.5 title: 开源支付平台-单商户 description: 开源支付平台-单商户版 # 多模块扫码 @@ -168,7 +168,7 @@ dax-pay: server-url: http://localhost:9000 # 前端h5地址 front-h5-url: http://pay1.bootx.cn/h5/# - # 签名秘钥 + # 签名秘钥, 需要与系统中配置一致 sign-secret: 123456 # 签名方式 sign-type: hmac_sha256 diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml index 1122a67c..58c32865 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-prod.yml @@ -65,7 +65,7 @@ bootx: swagger: enabled: false author: bootx - version: 2.0.4 + version: 2.0.5 title: 开源支付平台-单商户 description: 开源支付平台-单商户版 # 缓存 diff --git a/daxpay-single/pom.xml b/daxpay-single/pom.xml index f9219df4..b2002d11 100644 --- a/daxpay-single/pom.xml +++ b/daxpay-single/pom.xml @@ -6,7 +6,7 @@ cn.bootx.platform dax-pay - 2.0.4 + 2.0.5 daxpay-single diff --git a/pom.xml b/pom.xml index 9934756d..ce30bdd4 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ cn.bootx.platform dax-pay pom - 2.0.4 + 2.0.5 daxpay-single @@ -30,7 +30,7 @@ 1.3.6.2 - 2.0.4 + 2.0.5 1.7.30 3.16.8 -- Gitee From d83023de9b1e298be50f7259186acf0c7754bf6d Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Thu, 18 Apr 2024 11:18:10 +0800 Subject: [PATCH 45/45] =?UTF-8?q?doc=20=E6=9B=B4=E6=96=B0Dromara=20?= =?UTF-8?q?=E6=88=90=E5=91=98=E9=A1=B9=E7=9B=AElogo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 260 +++++++++++++++++------------------------------------- 1 file changed, 81 insertions(+), 179 deletions(-) diff --git a/README.md b/README.md index 92613a82..dc67d714 100644 --- a/README.md +++ b/README.md @@ -221,184 +221,86 @@ public class SimplePayOrderTest { Apache License Version 2.0 -# 🚀Dromara成员项目 +## 📚 Dromara 成员项目 - - -

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

-- Gitee