mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-09-20 12:01:55 +08:00
1:优化商户管理页面BUG
2:优化应用关闭页面 3:完成支付订单CURD 以及单元测试 4:将 Element UI 从 2.15.0 升级至 2.15.6
This commit is contained in:
@@ -18,13 +18,11 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -170,6 +168,14 @@ public class PayAppController {
|
||||
ExcelUtils.write(response, "支付应用信息.xls", "数据", PayAppExcelVO.class, datas);
|
||||
}
|
||||
|
||||
@GetMapping("/list-merchant-id")
|
||||
@ApiOperation("根据商户 ID 查询支付应用信息")
|
||||
@ApiImplicitParam(name = "merchantId", value = "商户ID", required = true, example = "1", dataTypeClass = Long.class)
|
||||
@PreAuthorize("@ss.hasPermission('pay:merchant:query')")
|
||||
public CommonResult<List<PayAppRespVO>> getMerchantListByName(@RequestParam String merchantId) {
|
||||
List<PayAppDO> appListDO = appService.getListByMerchantId(merchantId);
|
||||
return success(PayAppConvert.INSTANCE.convertList(appListDO));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@@ -77,9 +77,9 @@ public class PayMerchantController {
|
||||
|
||||
@GetMapping("/list-name")
|
||||
@ApiOperation("根据商户名称获得支付商户信息列表")
|
||||
@ApiImplicitParam(name = "name", value = "商户名称", required = true, example = "芋道", dataTypeClass = Long.class)
|
||||
@ApiImplicitParam(name = "name", value = "商户名称", example = "芋道", dataTypeClass = Long.class)
|
||||
@PreAuthorize("@ss.hasPermission('pay:merchant:query')")
|
||||
public CommonResult<List<PayMerchantRespVO>> getMerchantListByName(@RequestParam("name") String name) {
|
||||
public CommonResult<List<PayMerchantRespVO>> getMerchantListByName(@RequestParam(required = false) String name) {
|
||||
List<PayMerchantDO> merchantListDO = merchantService.getMerchantListByName(name);
|
||||
return success(PayMerchantConvert.INSTANCE.convertList(merchantListDO));
|
||||
}
|
||||
|
@@ -1,8 +1,12 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.annotations.*;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ApiModel("支付商户信息 Response VO")
|
||||
@Data
|
||||
@@ -16,4 +20,11 @@ public class PayMerchantRespVO extends PayMerchantBaseVO {
|
||||
@ApiModelProperty(value = "创建时间", required = true)
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
* 例如说,M233666999
|
||||
* 只有新增时插入,不允许修改
|
||||
*/
|
||||
private String no;
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,187 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.*;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.convert.order.PayOrderConvert;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderExtensionService;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderService;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||
|
||||
/**
|
||||
* 支付订单 controller 组件
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Api(tags = "支付订单")
|
||||
@RestController
|
||||
@RequestMapping("/pay/order")
|
||||
@Validated
|
||||
public class PayOrderController {
|
||||
|
||||
/**
|
||||
* 订单 service 组件
|
||||
*/
|
||||
@Resource
|
||||
private PayOrderService orderService;
|
||||
|
||||
/**
|
||||
* 订单扩展 service 组件
|
||||
*/
|
||||
@Resource
|
||||
private PayOrderExtensionService orderExtensionService;
|
||||
|
||||
/**
|
||||
* 商户 service 组件
|
||||
*/
|
||||
@Resource
|
||||
private PayMerchantService merchantService;
|
||||
|
||||
/**
|
||||
* 应用 service 组件
|
||||
*/
|
||||
@Resource
|
||||
private PayAppService appService;
|
||||
|
||||
@GetMapping("/get")
|
||||
@ApiOperation("获得支付订单")
|
||||
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
|
||||
@PreAuthorize("@ss.hasPermission('pay:order:query')")
|
||||
public CommonResult<PayOrderDetailsRespVO> getOrder(@RequestParam("id") Long id) {
|
||||
PayOrderDO order = orderService.getOrder(id);
|
||||
if (ObjectUtil.isNull(order)) {
|
||||
return success(new PayOrderDetailsRespVO());
|
||||
}
|
||||
|
||||
PayMerchantDO merchantDO = merchantService.getMerchant(order.getMerchantId());
|
||||
PayAppDO appDO = appService.getApp(order.getAppId());
|
||||
PayChannelEnum channelEnum = PayChannelEnum.getByCode(order.getChannelCode());
|
||||
|
||||
PayOrderDetailsRespVO respVO = PayOrderConvert.INSTANCE.orderDetailConvert(order);
|
||||
respVO.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户");
|
||||
respVO.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用");
|
||||
respVO.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道");
|
||||
|
||||
PayOrderExtensionDO extensionDO = orderExtensionService.getOrderExtension(order.getSuccessExtensionId());
|
||||
if (ObjectUtil.isNotNull(extensionDO)) {
|
||||
respVO.setPayOrderExtension(PayOrderConvert.INSTANCE.orderDetailExtensionConvert(extensionDO));
|
||||
}
|
||||
|
||||
return success(respVO);
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("获得支付订单列表")
|
||||
@ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
|
||||
@PreAuthorize("@ss.hasPermission('pay:order:query')")
|
||||
public CommonResult<List<PayOrderRespVO>> getOrderList(@RequestParam("ids") Collection<Long> ids) {
|
||||
List<PayOrderDO> list = orderService.getOrderList(ids);
|
||||
return success(PayOrderConvert.INSTANCE.convertList(list));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("获得支付订单分页")
|
||||
@PreAuthorize("@ss.hasPermission('pay:order:query')")
|
||||
public CommonResult<PageResult<PayOrderPageItemRespVO>> getOrderPage(@Valid PayOrderPageReqVO pageVO) {
|
||||
PageResult<PayOrderDO> pageResult = orderService.getOrderPage(pageVO);
|
||||
if (CollectionUtil.isEmpty(pageResult.getList())) {
|
||||
return success(new PageResult<>(pageResult.getTotal()));
|
||||
}
|
||||
|
||||
// 处理商户ID数据
|
||||
Map<Long, PayMerchantDO> merchantMap = merchantService.getMerchantMap(
|
||||
CollectionUtils.convertList(pageResult.getList(), PayOrderDO::getMerchantId));
|
||||
// 处理应用ID数据
|
||||
Map<Long, PayAppDO> appMap = appService.getAppMap(
|
||||
CollectionUtils.convertList(pageResult.getList(), PayOrderDO::getAppId));
|
||||
|
||||
List<PayOrderPageItemRespVO> pageList = new ArrayList<>(pageResult.getList().size());
|
||||
pageResult.getList().forEach(c -> {
|
||||
PayMerchantDO merchantDO = merchantMap.get(c.getMerchantId());
|
||||
PayAppDO appDO = appMap.get(c.getAppId());
|
||||
PayChannelEnum channelEnum = PayChannelEnum.getByCode(c.getChannelCode());
|
||||
|
||||
PayOrderPageItemRespVO orderItem = PayOrderConvert.INSTANCE.pageConvertItemPage(c);
|
||||
orderItem.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户");
|
||||
orderItem.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用");
|
||||
orderItem.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道");
|
||||
pageList.add(orderItem);
|
||||
});
|
||||
return success(new PageResult<>(pageList, pageResult.getTotal()));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@ApiOperation("导出支付订单Excel")
|
||||
@PreAuthorize("@ss.hasPermission('pay:order:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportOrderExcel(@Valid PayOrderExportReqVO exportReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
|
||||
List<PayOrderDO> list = orderService.getOrderList(exportReqVO);
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
ExcelUtils.write(response, "支付订单.xls", "数据",
|
||||
PayOrderExcelVO.class, new ArrayList<>());
|
||||
}
|
||||
|
||||
// 处理商户ID数据
|
||||
Map<Long, PayMerchantDO> merchantMap = merchantService.getMerchantMap(
|
||||
CollectionUtils.convertList(list, PayOrderDO::getMerchantId));
|
||||
// 处理应用ID数据
|
||||
Map<Long, PayAppDO> appMap = appService.getAppMap(
|
||||
CollectionUtils.convertList(list, PayOrderDO::getAppId));
|
||||
// 处理扩展订单数据
|
||||
Map<Long, PayOrderExtensionDO> orderExtensionMap = orderExtensionService
|
||||
.getOrderExtensionMap(CollectionUtils.convertList(list, PayOrderDO::getSuccessExtensionId));
|
||||
|
||||
List<PayOrderExcelVO> excelDatum = new ArrayList<>(list.size());
|
||||
list.forEach(c -> {
|
||||
PayMerchantDO merchantDO = merchantMap.get(c.getMerchantId());
|
||||
PayAppDO appDO = appMap.get(c.getAppId());
|
||||
PayChannelEnum channelEnum = PayChannelEnum.getByCode(c.getChannelCode());
|
||||
PayOrderExtensionDO orderExtensionDO = orderExtensionMap.get(c.getSuccessExtensionId());
|
||||
|
||||
PayOrderExcelVO excelItem = PayOrderConvert.INSTANCE.excelConvert(c);
|
||||
excelItem.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户");
|
||||
excelItem.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用");
|
||||
excelItem.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道");
|
||||
excelItem.setNo(ObjectUtil.isNotNull(orderExtensionDO) ? orderExtensionDO.getNo() : "");
|
||||
excelDatum.add(excelItem);
|
||||
});
|
||||
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "支付订单.xls", "数据", PayOrderExcelVO.class, excelDatum);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,108 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
/**
|
||||
* 支付订单
|
||||
* Base VO,提供给添加、修改、详细的子 VO 使用
|
||||
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Data
|
||||
public class PayOrderBaseVO {
|
||||
|
||||
@ApiModelProperty(value = "商户编号", required = true)
|
||||
@NotNull(message = "商户编号不能为空")
|
||||
private Long merchantId;
|
||||
|
||||
@ApiModelProperty(value = "应用编号", required = true)
|
||||
@NotNull(message = "应用编号不能为空")
|
||||
private Long appId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编号")
|
||||
private Long channelId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编码")
|
||||
private String channelCode;
|
||||
|
||||
@ApiModelProperty(value = "商户订单编号", required = true)
|
||||
@NotNull(message = "商户订单编号不能为空")
|
||||
private String merchantOrderId;
|
||||
|
||||
@ApiModelProperty(value = "商品标题", required = true)
|
||||
@NotNull(message = "商品标题不能为空")
|
||||
private String subject;
|
||||
|
||||
@ApiModelProperty(value = "商品描述", required = true)
|
||||
@NotNull(message = "商品描述不能为空")
|
||||
private String body;
|
||||
|
||||
@ApiModelProperty(value = "异步通知地址", required = true)
|
||||
@NotNull(message = "异步通知地址不能为空")
|
||||
private String notifyUrl;
|
||||
|
||||
@ApiModelProperty(value = "通知商户支付结果的回调状态", required = true)
|
||||
@NotNull(message = "通知商户支付结果的回调状态不能为空")
|
||||
private Integer notifyStatus;
|
||||
|
||||
@ApiModelProperty(value = "支付金额,单位:分", required = true)
|
||||
@NotNull(message = "支付金额,单位:分不能为空")
|
||||
private Long amount;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
|
||||
@ApiModelProperty(value = "支付状态", required = true)
|
||||
@NotNull(message = "支付状态不能为空")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty(value = "用户 IP", required = true)
|
||||
@NotNull(message = "用户 IP不能为空")
|
||||
private String userIp;
|
||||
|
||||
@ApiModelProperty(value = "订单失效时间", required = true)
|
||||
@NotNull(message = "订单失效时间不能为空")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private Date expireTime;
|
||||
|
||||
@ApiModelProperty(value = "订单支付成功时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private Date successTime;
|
||||
|
||||
@ApiModelProperty(value = "订单支付通知时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private Date notifyTime;
|
||||
|
||||
@ApiModelProperty(value = "支付成功的订单拓展单编号")
|
||||
private Long successExtensionId;
|
||||
|
||||
@ApiModelProperty(value = "退款状态", required = true)
|
||||
@NotNull(message = "退款状态不能为空")
|
||||
private Integer refundStatus;
|
||||
|
||||
@ApiModelProperty(value = "退款次数", required = true)
|
||||
@NotNull(message = "退款次数不能为空")
|
||||
private Integer refundTimes;
|
||||
|
||||
@ApiModelProperty(value = "退款总金额,单位:分", required = true)
|
||||
@NotNull(message = "退款总金额,单位:分不能为空")
|
||||
private Long refundAmount;
|
||||
|
||||
@ApiModelProperty(value = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
||||
@ApiModelProperty(value = "渠道订单号")
|
||||
private String channelOrderNo;
|
||||
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 支付订单详细信息,由支付订单和支付订单扩展信息组成
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@ApiModel("支付订单详细信息 Response VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class PayOrderDetailsRespVO extends PayOrderBaseVO {
|
||||
|
||||
@ApiModelProperty(value = "支付订单编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "商户名称")
|
||||
private String merchantName;
|
||||
|
||||
@ApiModelProperty(value = "应用名称")
|
||||
private String appName;
|
||||
|
||||
@ApiModelProperty(value = "渠道编号名称")
|
||||
private String channelCodeName;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 支付订单扩展
|
||||
*/
|
||||
private PayOrderExtension payOrderExtension;
|
||||
|
||||
@Data
|
||||
@ApiModel("支付订单扩展")
|
||||
public static class PayOrderExtension {
|
||||
|
||||
@ApiModelProperty(value = "支付订单号")
|
||||
private String no;
|
||||
|
||||
@ApiModelProperty(value = "支付渠道的额外参数")
|
||||
private String channelExtras;
|
||||
|
||||
@ApiModelProperty(value = "支付异步通知的内容")
|
||||
private String channelNotifyData;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,91 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants;
|
||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
|
||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 支付订单Excel VO
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Data
|
||||
public class PayOrderExcelVO {
|
||||
|
||||
@ExcelProperty("支付订单编号")
|
||||
private Long id;
|
||||
|
||||
@ExcelProperty(value = "商户名称")
|
||||
private String merchantName;
|
||||
|
||||
@ExcelProperty(value = "应用名称")
|
||||
private String appName;
|
||||
|
||||
@ExcelProperty("商品标题")
|
||||
private String subject;
|
||||
|
||||
@ExcelProperty("商户订单编号")
|
||||
private String merchantOrderId;
|
||||
|
||||
@ExcelProperty("渠道订单号")
|
||||
private String channelOrderNo;
|
||||
|
||||
@ExcelProperty(value = "支付订单号")
|
||||
private String no;
|
||||
|
||||
@ExcelProperty("支付金额,单位:元")
|
||||
private String amount;
|
||||
|
||||
@ExcelProperty("渠道手续金额,单位:元")
|
||||
private String channelFeeAmount;
|
||||
|
||||
@ExcelProperty("渠道手续费,单位:百分比")
|
||||
private String channelFeeRate;
|
||||
|
||||
@DictFormat(SysDictTypeConstants.PAY_ORDER_STATUS)
|
||||
@ExcelProperty(value = "支付状态", converter = DictConvert.class)
|
||||
private Integer status;
|
||||
|
||||
@DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS)
|
||||
@ExcelProperty(value = "通知商户支付结果的回调状态", converter = DictConvert.class)
|
||||
private Integer notifyStatus;
|
||||
|
||||
@ExcelProperty("异步通知地址")
|
||||
private String notifyUrl;
|
||||
|
||||
@ExcelProperty("创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ExcelProperty("订单支付成功时间")
|
||||
private Date successTime;
|
||||
|
||||
@ExcelProperty("订单失效时间")
|
||||
private Date expireTime;
|
||||
|
||||
@ExcelProperty("订单支付通知时间")
|
||||
private Date notifyTime;
|
||||
|
||||
@ExcelProperty(value = "渠道编号名称")
|
||||
private String channelCodeName;
|
||||
|
||||
@ExcelProperty("用户 IP")
|
||||
private String userIp;
|
||||
|
||||
@DictFormat(SysDictTypeConstants.PAY_ORDER_REFUND_STATUS)
|
||||
@ExcelProperty(value = "退款状态", converter = DictConvert.class)
|
||||
private Integer refundStatus;
|
||||
|
||||
@ExcelProperty("退款次数")
|
||||
private Integer refundTimes;
|
||||
|
||||
@ExcelProperty("退款总金额,单位:元")
|
||||
private String refundAmount;
|
||||
|
||||
@ExcelProperty("商品描述")
|
||||
private String body;
|
||||
|
||||
}
|
@@ -0,0 +1,112 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
/**
|
||||
* 支付订单 Excel 导出 Request VO
|
||||
* @author aquan
|
||||
*/
|
||||
@ApiModel(value = "支付订单 Excel 导出 Request VO", description = "参数和 PayOrderPageReqVO 是一致的")
|
||||
@Data
|
||||
public class PayOrderExportReqVO {
|
||||
|
||||
@ApiModelProperty(value = "商户编号")
|
||||
private Long merchantId;
|
||||
|
||||
@ApiModelProperty(value = "应用编号")
|
||||
private Long appId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编号")
|
||||
private Long channelId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编码")
|
||||
private String channelCode;
|
||||
|
||||
@ApiModelProperty(value = "商户订单编号")
|
||||
private String merchantOrderId;
|
||||
|
||||
@ApiModelProperty(value = "商品标题")
|
||||
private String subject;
|
||||
|
||||
@ApiModelProperty(value = "商品描述")
|
||||
private String body;
|
||||
|
||||
@ApiModelProperty(value = "异步通知地址")
|
||||
private String notifyUrl;
|
||||
|
||||
@ApiModelProperty(value = "通知商户支付结果的回调状态")
|
||||
private Integer notifyStatus;
|
||||
|
||||
@ApiModelProperty(value = "支付金额,单位:分")
|
||||
private Long amount;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
|
||||
@ApiModelProperty(value = "支付状态")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty(value = "用户 IP")
|
||||
private String userIp;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单失效时间")
|
||||
private Date beginExpireTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单失效时间")
|
||||
private Date endExpireTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单支付成功时间")
|
||||
private Date beginSuccessTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单支付成功时间")
|
||||
private Date endSuccessTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单支付通知时间")
|
||||
private Date beginNotifyTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单支付通知时间")
|
||||
private Date endNotifyTime;
|
||||
|
||||
@ApiModelProperty(value = "支付成功的订单拓展单编号")
|
||||
private Long successExtensionId;
|
||||
|
||||
@ApiModelProperty(value = "退款状态")
|
||||
private Integer refundStatus;
|
||||
|
||||
@ApiModelProperty(value = "退款次数")
|
||||
private Integer refundTimes;
|
||||
|
||||
@ApiModelProperty(value = "退款总金额,单位:分")
|
||||
private Long refundAmount;
|
||||
|
||||
@ApiModelProperty(value = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
||||
@ApiModelProperty(value = "渠道订单号")
|
||||
private String channelOrderNo;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始创建时间")
|
||||
private Date beginCreateTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束创建时间")
|
||||
private Date endCreateTime;
|
||||
|
||||
}
|
@@ -0,0 +1,41 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 支付订单分页 Request VO
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@ApiModel("支付订单分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class PayOrderPageItemRespVO extends PayOrderBaseVO {
|
||||
|
||||
@ApiModelProperty(value = "支付订单编号", required = true)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "创建时间", required = true)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "商户名称")
|
||||
private String merchantName;
|
||||
|
||||
@ApiModelProperty(value = "应用名称")
|
||||
private String appName;
|
||||
|
||||
@ApiModelProperty(value = "渠道名称")
|
||||
private String channelCodeName;
|
||||
|
||||
@ApiModelProperty(value = "支付订单号")
|
||||
private String no;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,118 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
/**
|
||||
* 支付订单分页 Request VO
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@ApiModel("支付订单分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class PayOrderPageReqVO extends PageParam {
|
||||
|
||||
@ApiModelProperty(value = "商户编号")
|
||||
private Long merchantId;
|
||||
|
||||
@ApiModelProperty(value = "应用编号")
|
||||
private Long appId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编号")
|
||||
private Long channelId;
|
||||
|
||||
@ApiModelProperty(value = "渠道编码")
|
||||
private String channelCode;
|
||||
|
||||
@ApiModelProperty(value = "商户订单编号")
|
||||
private String merchantOrderId;
|
||||
|
||||
@ApiModelProperty(value = "商品标题")
|
||||
private String subject;
|
||||
|
||||
@ApiModelProperty(value = "商品描述")
|
||||
private String body;
|
||||
|
||||
@ApiModelProperty(value = "异步通知地址")
|
||||
private String notifyUrl;
|
||||
|
||||
@ApiModelProperty(value = "通知商户支付结果的回调状态")
|
||||
private Integer notifyStatus;
|
||||
|
||||
@ApiModelProperty(value = "支付金额,单位:分")
|
||||
private Long amount;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续费,单位:百分比")
|
||||
private Double channelFeeRate;
|
||||
|
||||
@ApiModelProperty(value = "渠道手续金额,单位:分")
|
||||
private Long channelFeeAmount;
|
||||
|
||||
@ApiModelProperty(value = "支付状态")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty(value = "用户 IP")
|
||||
private String userIp;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单失效时间")
|
||||
private Date beginExpireTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单失效时间")
|
||||
private Date endExpireTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单支付成功时间")
|
||||
private Date beginSuccessTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单支付成功时间")
|
||||
private Date endSuccessTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始订单支付通知时间")
|
||||
private Date beginNotifyTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束订单支付通知时间")
|
||||
private Date endNotifyTime;
|
||||
|
||||
@ApiModelProperty(value = "支付成功的订单拓展单编号")
|
||||
private Long successExtensionId;
|
||||
|
||||
@ApiModelProperty(value = "退款状态")
|
||||
private Integer refundStatus;
|
||||
|
||||
@ApiModelProperty(value = "退款次数")
|
||||
private Integer refundTimes;
|
||||
|
||||
@ApiModelProperty(value = "退款总金额,单位:分")
|
||||
private Long refundAmount;
|
||||
|
||||
@ApiModelProperty(value = "渠道用户编号")
|
||||
private String channelUserId;
|
||||
|
||||
@ApiModelProperty(value = "渠道订单号")
|
||||
private String channelOrderNo;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "开始创建时间")
|
||||
private Date beginCreateTime;
|
||||
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@ApiModelProperty(value = "结束创建时间")
|
||||
private Date endCreateTime;
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 支付订单 Response VO
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@ApiModel("支付订单 Response VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class PayOrderRespVO extends PayOrderBaseVO {
|
||||
|
||||
@ApiModelProperty(value = "支付订单编号", required = true)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "创建时间", required = true)
|
||||
private Date createTime;
|
||||
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.convert.order;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.*;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 支付订单 Convert
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayOrderConvert {
|
||||
|
||||
PayOrderConvert INSTANCE = Mappers.getMapper(PayOrderConvert.class);
|
||||
|
||||
|
||||
|
||||
PayOrderRespVO convert(PayOrderDO bean);
|
||||
|
||||
/**
|
||||
* 订单DO 转换为 详细订单 RespVO
|
||||
*
|
||||
* @param bean 订单DO
|
||||
* @return 详细订单 RespVO
|
||||
*/
|
||||
PayOrderDetailsRespVO orderDetailConvert(PayOrderDO bean);
|
||||
|
||||
/**
|
||||
* 订单扩展DO 转换为 详细订单扩展 RespVO
|
||||
*
|
||||
* @param bean 订单扩展DO
|
||||
* @return 详细订单扩展 RespVO
|
||||
*/
|
||||
@Mappings({
|
||||
@Mapping(target = "channelExtras"
|
||||
, expression = "java(bean.getChannelExtras() != null ? bean.getChannelExtras().toString():null)")
|
||||
})
|
||||
PayOrderDetailsRespVO.PayOrderExtension orderDetailExtensionConvert(PayOrderExtensionDO bean);
|
||||
|
||||
List<PayOrderRespVO> convertList(List<PayOrderDO> list);
|
||||
|
||||
PageResult<PayOrderRespVO> convertPage(PageResult<PayOrderDO> page);
|
||||
|
||||
List<PayOrderExcelVO> convertList02(List<PayOrderDO> list);
|
||||
|
||||
/**
|
||||
* 订单DO转自定义分页对象
|
||||
*
|
||||
* @param bean 订单DO
|
||||
* @return 分页对象
|
||||
*/
|
||||
PayOrderPageItemRespVO pageConvertItemPage(PayOrderDO bean);
|
||||
|
||||
/**
|
||||
* 订单DO 转 订单导出excel VO
|
||||
*
|
||||
* @param bean 订单 DO
|
||||
* @return 订单导出excel VO
|
||||
*/
|
||||
default PayOrderExcelVO excelConvert(PayOrderDO bean) {
|
||||
if (bean == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
PayOrderExcelVO payOrderExcelVO = new PayOrderExcelVO();
|
||||
|
||||
payOrderExcelVO.setId(bean.getId());
|
||||
payOrderExcelVO.setSubject(bean.getSubject());
|
||||
payOrderExcelVO.setMerchantOrderId(bean.getMerchantOrderId());
|
||||
payOrderExcelVO.setChannelOrderNo(bean.getChannelOrderNo());
|
||||
payOrderExcelVO.setStatus(bean.getStatus());
|
||||
payOrderExcelVO.setNotifyStatus(bean.getNotifyStatus());
|
||||
payOrderExcelVO.setNotifyUrl(bean.getNotifyUrl());
|
||||
payOrderExcelVO.setCreateTime(bean.getCreateTime());
|
||||
payOrderExcelVO.setSuccessTime(bean.getSuccessTime());
|
||||
payOrderExcelVO.setExpireTime(bean.getExpireTime());
|
||||
payOrderExcelVO.setNotifyTime(bean.getNotifyTime());
|
||||
payOrderExcelVO.setUserIp(bean.getUserIp());
|
||||
payOrderExcelVO.setRefundStatus(bean.getRefundStatus());
|
||||
payOrderExcelVO.setRefundTimes(bean.getRefundTimes());
|
||||
payOrderExcelVO.setBody(bean.getBody());
|
||||
|
||||
BigDecimal multiple = new BigDecimal(100);
|
||||
|
||||
payOrderExcelVO.setAmount(BigDecimal.valueOf(bean.getAmount())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
payOrderExcelVO.setChannelFeeAmount(BigDecimal.valueOf(bean.getChannelFeeAmount())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
payOrderExcelVO.setChannelFeeRate(java.math.BigDecimal.valueOf(bean.getChannelFeeRate())
|
||||
.multiply(multiple).toString());
|
||||
payOrderExcelVO.setRefundAmount(BigDecimal.valueOf(bean.getRefundAmount())
|
||||
.divide(multiple, 2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
return payOrderExcelVO;
|
||||
}
|
||||
}
|
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -14,11 +15,18 @@ import java.util.List;
|
||||
/**
|
||||
* 支付应用信息 Mapper
|
||||
*
|
||||
* @author 芋艿
|
||||
* @author aquan
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayAppMapper extends BaseMapperX<PayAppDO> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param reqVO 支付应用信息分页查询条件
|
||||
* @param merchantIds 商户 ID 集合
|
||||
* @return 支付应用信息
|
||||
*/
|
||||
default PageResult<PayAppDO> selectPage(PayAppPageReqVO reqVO, Collection<Long> merchantIds) {
|
||||
return selectPage(reqVO, new QueryWrapperX<PayAppDO>()
|
||||
.likeIfPresent("name", reqVO.getName())
|
||||
@@ -31,6 +39,13 @@ public interface PayAppMapper extends BaseMapperX<PayAppDO> {
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @param reqVO 支付应用信息 Excel 导出查询条件
|
||||
* @param merchantIds 商户 ID 集合
|
||||
* @return 支付应用信息
|
||||
*/
|
||||
default List<PayAppDO> selectList(PayAppExportReqVO reqVO, Collection<Long> merchantIds) {
|
||||
return selectList(new QueryWrapperX<PayAppDO>()
|
||||
.likeIfPresent("name", reqVO.getName())
|
||||
@@ -43,4 +58,14 @@ public interface PayAppMapper extends BaseMapperX<PayAppDO> {
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 商户 ID 查询支付应用信息
|
||||
* @param merchantId 商户 ID
|
||||
* @return 支付应用信息列表
|
||||
*/
|
||||
default List<PayAppDO> getListByMerchantId(String merchantId){
|
||||
return selectList(new LambdaQueryWrapper<PayAppDO>()
|
||||
.select(PayAppDO::getId, PayAppDO::getName)
|
||||
.eq(PayAppDO::getMerchantId, merchantId));
|
||||
}
|
||||
}
|
||||
|
@@ -6,8 +6,6 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerch
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@@ -49,6 +47,7 @@ public interface PayMerchantMapper extends BaseMapperX<PayMerchantDO> {
|
||||
* @return 商户集合
|
||||
*/
|
||||
default List<PayMerchantDO> getMerchantListByName(String merchantName) {
|
||||
return this.selectList(new LambdaQueryWrapper<PayMerchantDO>().like(PayMerchantDO::getName, merchantName));
|
||||
return this.selectList(new QueryWrapperX<PayMerchantDO>()
|
||||
.likeIfPresent("name", merchantName));
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,16 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order;
|
||||
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 支付订单 Mapper
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayOrderExtensionMapper extends BaseMapperX<PayOrderExtensionDO> {
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,52 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 支付订单
|
||||
* Mapper
|
||||
*
|
||||
* @author 芋艿
|
||||
*/
|
||||
@Mapper
|
||||
public interface PayOrderMapper extends BaseMapperX<PayOrderDO> {
|
||||
|
||||
default PageResult<PayOrderDO> selectPage(PayOrderPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new QueryWrapperX<PayOrderDO>()
|
||||
.eqIfPresent("merchant_id", reqVO.getMerchantId())
|
||||
.eqIfPresent("app_id", reqVO.getAppId())
|
||||
.eqIfPresent("channel_id", reqVO.getChannelId())
|
||||
.eqIfPresent("channel_code", reqVO.getChannelCode())
|
||||
.likeIfPresent("merchant_order_id", reqVO.getMerchantOrderId())
|
||||
.eqIfPresent("notify_status", reqVO.getNotifyStatus())
|
||||
.eqIfPresent("status", reqVO.getStatus())
|
||||
.eqIfPresent("refund_status", reqVO.getRefundStatus())
|
||||
.likeIfPresent("channel_order_no", reqVO.getChannelOrderNo())
|
||||
.betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
default List<PayOrderDO> selectList(PayOrderExportReqVO reqVO) {
|
||||
return selectList(new QueryWrapperX<PayOrderDO>()
|
||||
.eqIfPresent("merchant_id", reqVO.getMerchantId())
|
||||
.eqIfPresent("app_id", reqVO.getAppId())
|
||||
.eqIfPresent("channel_id", reqVO.getChannelId())
|
||||
.eqIfPresent("channel_code", reqVO.getChannelCode())
|
||||
.likeIfPresent("merchant_order_id", reqVO.getMerchantOrderId())
|
||||
.eqIfPresent("notify_status", reqVO.getNotifyStatus())
|
||||
.eqIfPresent("status", reqVO.getStatus())
|
||||
.eqIfPresent("refund_status", reqVO.getRefundStatus())
|
||||
.likeIfPresent("channel_order_no", reqVO.getChannelOrderNo())
|
||||
.betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
}
|
@@ -1,12 +1,17 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.app;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.*;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppPageReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppUpdateReqVO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 支付应用信息 Service 接口
|
||||
@@ -77,5 +82,22 @@ public interface PayAppService {
|
||||
*/
|
||||
void updateAppStatus(Long id, Integer status);
|
||||
|
||||
/**
|
||||
* 根据商户 ID 获得支付应用信息列表,
|
||||
*
|
||||
* @param merchantId 商户 ID
|
||||
* @return 支付应用信息列表
|
||||
*/
|
||||
List<PayAppDO> getListByMerchantId(String merchantId);
|
||||
|
||||
/**
|
||||
* 获得指定编号的商户 Map
|
||||
*
|
||||
* @param appIdList 应用编号集合
|
||||
* @return 商户 Map
|
||||
*/
|
||||
default Map<Long, PayAppDO> getAppMap(Collection<Long> appIdList) {
|
||||
List<PayAppDO> list = this.getAppList(appIdList);
|
||||
return CollectionUtils.convertMap(list, PayAppDO::getId);
|
||||
}
|
||||
}
|
||||
|
@@ -10,7 +10,6 @@ import cn.iocoder.yudao.adminserver.modules.pay.convert.app.PayAppConvert;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.merchant.PayMerchantMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO;
|
||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||
@@ -22,7 +21,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*;
|
||||
import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.PAY_APP_NOT_FOUND;
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
|
||||
@@ -134,6 +133,16 @@ public class PayAppServiceImpl implements PayAppService {
|
||||
appMapper.updateById(app);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据商户 ID 获得支付应用信息列表,
|
||||
*
|
||||
* @param merchantId 商户 ID
|
||||
* @return 支付应用信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<PayAppDO> getListByMerchantId(String merchantId) {
|
||||
return appMapper.getListByMerchantId(merchantId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查商户是否存在
|
||||
|
@@ -0,0 +1,48 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.order;
|
||||
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 支付订单 Service 接口
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
public interface PayOrderExtensionService {
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 支付订单
|
||||
*/
|
||||
PayOrderExtensionDO getOrderExtension(Long id);
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
* 列表
|
||||
*
|
||||
* @param ids 编号
|
||||
* @return 支付订单
|
||||
* 列表
|
||||
*/
|
||||
List<PayOrderExtensionDO> getOrderExtensionList(Collection<Long> ids);
|
||||
|
||||
|
||||
/**
|
||||
* 根据订单成功的 扩展订单ID 查询所有的扩展订单转 成 map 返回
|
||||
*
|
||||
* @param successExtensionIdList 订单 ID 集合
|
||||
* @return 订单扩展 map 集合
|
||||
*/
|
||||
default Map<Long, PayOrderExtensionDO> getOrderExtensionMap(Collection<Long> successExtensionIdList) {
|
||||
List<PayOrderExtensionDO> list = this.getOrderExtensionList(successExtensionIdList);
|
||||
return CollectionUtils.convertMap(list, PayOrderExtensionDO::getId);
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,57 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.order;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 支付订单
|
||||
* Service 接口
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
public interface PayOrderService {
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 支付订单
|
||||
*/
|
||||
PayOrderDO getOrder(Long id);
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
* 列表
|
||||
*
|
||||
* @param ids 编号
|
||||
* @return 支付订单
|
||||
* 列表
|
||||
*/
|
||||
List<PayOrderDO> getOrderList(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
* 分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 支付订单
|
||||
* 分页
|
||||
*/
|
||||
PageResult<PayOrderDO> getOrderPage(PayOrderPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得支付订单
|
||||
* 列表, 用于 Excel 导出
|
||||
*
|
||||
* @param exportReqVO 查询条件
|
||||
* @return 支付订单
|
||||
* 列表
|
||||
*/
|
||||
List<PayOrderDO> getOrderList(PayOrderExportReqVO exportReqVO);
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.order.impl;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderExtensionMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderExtensionService;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 支付订单 Service 实现类
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class PayOrderExtensionServiceImpl implements PayOrderExtensionService {
|
||||
|
||||
@Resource
|
||||
private PayOrderExtensionMapper orderExtensionMapper;
|
||||
|
||||
@Override
|
||||
public PayOrderExtensionDO getOrderExtension(Long id) {
|
||||
return orderExtensionMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayOrderExtensionDO> getOrderExtensionList(Collection<Long> ids) {
|
||||
return orderExtensionMapper.selectBatchIds(ids);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.order.impl;
|
||||
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderService;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 支付订单 Service 实现类
|
||||
*
|
||||
* @author aquan
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class PayOrderServiceImpl implements PayOrderService {
|
||||
|
||||
@Resource
|
||||
private PayOrderMapper orderMapper;
|
||||
|
||||
@Override
|
||||
public PayOrderDO getOrder(Long id) {
|
||||
return orderMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayOrderDO> getOrderList(Collection<Long> ids) {
|
||||
return orderMapper.selectBatchIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<PayOrderDO> getOrderPage(PayOrderPageReqVO pageReqVO) {
|
||||
return orderMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayOrderDO> getOrderList(PayOrderExportReqVO exportReqVO) {
|
||||
return orderMapper.selectList(exportReqVO);
|
||||
}
|
||||
|
||||
}
|
@@ -22,4 +22,19 @@ public interface SysDictTypeConstants {
|
||||
String SMS_SEND_STATUS = "sys_sms_send_status"; // 短信发送状态
|
||||
String SMS_RECEIVE_STATUS = "sys_sms_receive_status"; // 短信接收状态
|
||||
|
||||
/**
|
||||
* 支付-订单-订单状态
|
||||
*/
|
||||
String PAY_ORDER_STATUS = "pay_order_status";
|
||||
|
||||
/**
|
||||
* 支付-订单-订单回调商户状态
|
||||
*/
|
||||
String PAY_ORDER_NOTIFY_STATUS = "pay_order_notify_status";
|
||||
|
||||
/**
|
||||
* 支付-订单-订单退款状态
|
||||
*/
|
||||
String PAY_ORDER_REFUND_STATUS = "pay_order_refund_status";
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,196 @@
|
||||
package cn.iocoder.yudao.adminserver.modules.pay.service.order;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderMapper;
|
||||
import cn.iocoder.yudao.adminserver.modules.pay.service.order.impl.PayOrderServiceImpl;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderNotifyStatusEnum;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderStatusEnum;
|
||||
import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayRefundTypeEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* {@link PayOrderServiceImpl} 的单元测试类
|
||||
*
|
||||
* @author 芋艿
|
||||
*/
|
||||
@Import(PayOrderServiceImpl.class)
|
||||
public class PayOrderServiceTest extends BaseDbUnitTest {
|
||||
|
||||
@Resource
|
||||
private PayOrderServiceImpl orderService;
|
||||
|
||||
@Resource
|
||||
private PayOrderMapper orderMapper;
|
||||
|
||||
public String generateNo() {
|
||||
return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999);
|
||||
}
|
||||
|
||||
@Test // TODO 请修改 null 为需要的值
|
||||
public void testGetOrderPage() {
|
||||
|
||||
String merchantOrderId = generateNo();
|
||||
String channelOrderId = generateNo();
|
||||
|
||||
// mock 数据
|
||||
PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到
|
||||
o.setMerchantId(1L);
|
||||
o.setAppId(1L);
|
||||
o.setChannelId(1L);
|
||||
o.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
||||
o.setMerchantOrderId(merchantOrderId);
|
||||
o.setSubject("灿灿子的炸弹猫");
|
||||
o.setBody("斌斌子送给灿灿子的炸弹猫");
|
||||
o.setNotifyUrl("https://hc.com/lbh");
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setAmount(10000L);
|
||||
o.setChannelFeeRate(0.01);
|
||||
o.setChannelFeeAmount(1L);
|
||||
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0));
|
||||
o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2));
|
||||
o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
|
||||
o.setSuccessExtensionId(1L);
|
||||
o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
o.setRefundTimes(0);
|
||||
o.setRefundAmount(0L);
|
||||
o.setChannelUserId("1008611");
|
||||
o.setChannelOrderNo(channelOrderId);
|
||||
o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
|
||||
});
|
||||
orderMapper.insert(dbOrder);
|
||||
// 测试 merchantId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantId(2L)));
|
||||
// 测试 appId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setAppId(2L)));
|
||||
// 测试 channelId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelId(2L)));
|
||||
// 测试 channelCode 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelCode(PayChannelEnum.ALIPAY_APP.getCode())));
|
||||
// 测试 merchantOrderId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantOrderId(generateNo())));
|
||||
// 测试 notifyStatus 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setNotifyStatus(PayOrderNotifyStatusEnum.FAILURE.getStatus())));
|
||||
// 测试 status 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus())));
|
||||
// 测试 refundStatus 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus())));
|
||||
// 测试 createTime 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10,
|
||||
1))));
|
||||
// 准备参数
|
||||
PayOrderPageReqVO reqVO = new PayOrderPageReqVO();
|
||||
reqVO.setMerchantId(1L);
|
||||
reqVO.setAppId(1L);
|
||||
reqVO.setChannelId(1L);
|
||||
reqVO.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
||||
reqVO.setMerchantOrderId(merchantOrderId);
|
||||
reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
reqVO.setBeginCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
reqVO.setEndCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
|
||||
// 调用
|
||||
PageResult<PayOrderDO> pageResult = orderService.getOrderPage(reqVO);
|
||||
// 断言
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(dbOrder, pageResult.getList().get(0));
|
||||
// assertEquals(0, dbOrder.getUpdateTime().compareTo(pageResult.getList().get(0).getUpdateTime()));
|
||||
}
|
||||
|
||||
@Test // TODO 请修改 null 为需要的值
|
||||
public void testGetOrderList() {
|
||||
// mock 数据
|
||||
String merchantOrderId = generateNo();
|
||||
String channelOrderId = generateNo();
|
||||
PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到
|
||||
o.setMerchantId(1L);
|
||||
o.setAppId(1L);
|
||||
o.setChannelId(1L);
|
||||
o.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
||||
o.setMerchantOrderId(merchantOrderId);
|
||||
o.setSubject("灿灿子的炸弹猫");
|
||||
o.setBody("斌斌子送给灿灿子的炸弹猫");
|
||||
o.setNotifyUrl("https://hc.com/lbh");
|
||||
o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
o.setAmount(10000L);
|
||||
o.setChannelFeeRate(0.01);
|
||||
o.setChannelFeeAmount(1L);
|
||||
o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
o.setUserIp("127.0.0.1");
|
||||
o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0));
|
||||
o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2));
|
||||
o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
|
||||
o.setSuccessExtensionId(1L);
|
||||
o.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
o.setRefundTimes(0);
|
||||
o.setRefundAmount(0L);
|
||||
o.setChannelUserId("1008611");
|
||||
o.setChannelOrderNo(channelOrderId);
|
||||
o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15));
|
||||
|
||||
});
|
||||
orderMapper.insert(dbOrder);
|
||||
// 测试 merchantId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantId(2L)));
|
||||
// 测试 appId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setAppId(2L)));
|
||||
// 测试 channelId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelId(2L)));
|
||||
// 测试 channelCode 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelCode(PayChannelEnum.ALIPAY_APP.getCode())));
|
||||
// 测试 merchantOrderId 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantOrderId(generateNo())));
|
||||
// 测试 notifyStatus 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setNotifyStatus(PayOrderNotifyStatusEnum.FAILURE.getStatus())));
|
||||
// 测试 status 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus())));
|
||||
// 测试 refundStatus 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus())));
|
||||
// 测试 createTime 不匹配
|
||||
orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10,
|
||||
1))));
|
||||
// 准备参数
|
||||
PayOrderExportReqVO reqVO = new PayOrderExportReqVO();
|
||||
reqVO.setMerchantId(1L);
|
||||
reqVO.setAppId(1L);
|
||||
reqVO.setChannelId(1L);
|
||||
reqVO.setChannelCode(PayChannelEnum.WX_PUB.getCode());
|
||||
reqVO.setMerchantOrderId(merchantOrderId);
|
||||
reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus());
|
||||
reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus());
|
||||
reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus());
|
||||
reqVO.setBeginCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
reqVO.setEndCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0));
|
||||
|
||||
// 调用
|
||||
List<PayOrderDO> list = orderService.getOrderList(reqVO);
|
||||
// 断言
|
||||
assertEquals(1, list.size());
|
||||
assertPojoEquals(dbOrder, list.get(0));
|
||||
}
|
||||
|
||||
}
|
@@ -28,4 +28,5 @@ DELETE FROM "sys_social_user";
|
||||
-- pay 开头的 DB
|
||||
DELETE FROM pay_merchant;
|
||||
DELETE FROM pay_app;
|
||||
DELETE FROM pay_channel
|
||||
DELETE FROM pay_channel;
|
||||
delete from pay_order;
|
||||
|
@@ -1,198 +1,211 @@
|
||||
-- inf 开头的 DB
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_config" (
|
||||
"id" int NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"group" varchar(50) NOT NULL,
|
||||
"type" tinyint NOT NULL,
|
||||
"name" varchar(100) NOT NULL DEFAULT '',
|
||||
"key" varchar(100) NOT NULL DEFAULT '',
|
||||
"value" varchar(500) NOT NULL DEFAULT '',
|
||||
"sensitive" bit NOT NULL,
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "inf_config"
|
||||
(
|
||||
"id" int NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"group" varchar(50) NOT NULL,
|
||||
"type" tinyint NOT NULL,
|
||||
"name" varchar(100) NOT NULL DEFAULT '',
|
||||
"key" varchar(100) NOT NULL DEFAULT '',
|
||||
"value" varchar(500) NOT NULL DEFAULT '',
|
||||
"sensitive" bit NOT NULL,
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '参数配置表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_file" (
|
||||
"id" varchar(188) NOT NULL,
|
||||
"type" varchar(63) DEFAULT NULL,
|
||||
"content" blob NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "inf_file"
|
||||
(
|
||||
"id" varchar(188) NOT NULL,
|
||||
"type" varchar(63) DEFAULT NULL,
|
||||
"content" blob NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '文件表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_job" (
|
||||
"id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号',
|
||||
"name" varchar(32) NOT NULL COMMENT '任务名称',
|
||||
"status" tinyint(4) NOT NULL COMMENT '任务状态',
|
||||
"handler_name" varchar(64) NOT NULL COMMENT '处理器的名字',
|
||||
"handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数',
|
||||
CREATE TABLE IF NOT EXISTS "inf_job"
|
||||
(
|
||||
"id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号',
|
||||
"name" varchar(32) NOT NULL COMMENT '任务名称',
|
||||
"status" tinyint(4) NOT NULL COMMENT '任务状态',
|
||||
"handler_name" varchar(64) NOT NULL COMMENT '处理器的名字',
|
||||
"handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数',
|
||||
"cron_expression" varchar(32) NOT NULL COMMENT 'CRON 表达式',
|
||||
"retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
|
||||
"retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔',
|
||||
"monitor_timeout" int(11) NOT NULL DEFAULT '0' COMMENT '监控超时时间',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
||||
"retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
|
||||
"retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔',
|
||||
"monitor_timeout" int(11) NOT NULL DEFAULT '0' COMMENT '监控超时时间',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT='定时任务表';
|
||||
) COMMENT ='定时任务表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_job_log" (
|
||||
"id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号',
|
||||
"job_id" bigint(20) NOT NULL COMMENT '任务编号',
|
||||
"handler_name" varchar(64) NOT NULL COMMENT '处理器的名字',
|
||||
"handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数',
|
||||
"execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行',
|
||||
"begin_time" datetime NOT NULL COMMENT '开始执行时间',
|
||||
"end_time" datetime DEFAULT NULL COMMENT '结束执行时间',
|
||||
"duration" int(11) DEFAULT NULL COMMENT '执行时长',
|
||||
"status" tinyint(4) NOT NULL COMMENT '任务状态',
|
||||
"result" varchar(4000) DEFAULT '' COMMENT '结果数据',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
||||
CREATE TABLE IF NOT EXISTS "inf_job_log"
|
||||
(
|
||||
"id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号',
|
||||
"job_id" bigint(20) NOT NULL COMMENT '任务编号',
|
||||
"handler_name" varchar(64) NOT NULL COMMENT '处理器的名字',
|
||||
"handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数',
|
||||
"execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行',
|
||||
"begin_time" datetime NOT NULL COMMENT '开始执行时间',
|
||||
"end_time" datetime DEFAULT NULL COMMENT '结束执行时间',
|
||||
"duration" int(11) DEFAULT NULL COMMENT '执行时长',
|
||||
"status" tinyint(4) NOT NULL COMMENT '任务状态',
|
||||
"result" varchar(4000) DEFAULT '' COMMENT '结果数据',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE COMMENT '是否删除',
|
||||
PRIMARY KEY ("id")
|
||||
)COMMENT='定时任务日志表';
|
||||
) COMMENT ='定时任务日志表';
|
||||
|
||||
-- sys 开头的 DB
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_dept" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(30) NOT NULL DEFAULT '',
|
||||
"parent_id" bigint NOT NULL DEFAULT '0',
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"leader" varchar(20) DEFAULT NULL,
|
||||
"phone" varchar(11) DEFAULT NULL,
|
||||
"email" varchar(50) DEFAULT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "sys_dept"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(30) NOT NULL DEFAULT '',
|
||||
"parent_id" bigint NOT NULL DEFAULT '0',
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"leader" varchar(20) DEFAULT NULL,
|
||||
"phone" varchar(11) DEFAULT NULL,
|
||||
"email" varchar(50) DEFAULT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '部门表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_dict_data" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"label" varchar(100) NOT NULL DEFAULT '',
|
||||
"value" varchar(100) NOT NULL DEFAULT '',
|
||||
"dict_type" varchar(100) NOT NULL DEFAULT '',
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "sys_dict_data"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"label" varchar(100) NOT NULL DEFAULT '',
|
||||
"value" varchar(100) NOT NULL DEFAULT '',
|
||||
"dict_type" varchar(100) NOT NULL DEFAULT '',
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '字典数据表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_role" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(100) NOT NULL,
|
||||
"sort" int NOT NULL,
|
||||
"data_scope" tinyint NOT NULL DEFAULT '1',
|
||||
CREATE TABLE IF NOT EXISTS "sys_role"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(100) NOT NULL,
|
||||
"sort" int NOT NULL,
|
||||
"data_scope" tinyint NOT NULL DEFAULT '1',
|
||||
"data_scope_dept_ids" varchar(500) NOT NULL DEFAULT '',
|
||||
"status" tinyint NOT NULL,
|
||||
"type" tinyint NOT NULL,
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
"status" tinyint NOT NULL,
|
||||
"type" tinyint NOT NULL,
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '角色信息表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_role_menu" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"role_id" bigint NOT NULL,
|
||||
"menu_id" bigint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
CREATE TABLE IF NOT EXISTS "sys_role_menu"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"role_id" bigint NOT NULL,
|
||||
"menu_id" bigint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '角色和菜单关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_menu" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(50) NOT NULL,
|
||||
"permission" varchar(100) NOT NULL DEFAULT '',
|
||||
"menu_type" tinyint NOT NULL,
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"parent_id" bigint NOT NULL DEFAULT '0',
|
||||
"path" varchar(200) DEFAULT '',
|
||||
"icon" varchar(100) DEFAULT '#',
|
||||
"component" varchar(255) DEFAULT NULL,
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "sys_menu"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(50) NOT NULL,
|
||||
"permission" varchar(100) NOT NULL DEFAULT '',
|
||||
"menu_type" tinyint NOT NULL,
|
||||
"sort" int NOT NULL DEFAULT '0',
|
||||
"parent_id" bigint NOT NULL DEFAULT '0',
|
||||
"path" varchar(200) DEFAULT '',
|
||||
"icon" varchar(100) DEFAULT '#',
|
||||
"component" varchar(255) DEFAULT NULL,
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '菜单权限表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_user_role" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"user_id" bigint NOT NULL,
|
||||
"role_id" bigint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp DEFAULT NULL,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
"deleted" bit DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_user_role"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"user_id" bigint NOT NULL,
|
||||
"role_id" bigint NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp DEFAULT NULL,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
"deleted" bit DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '用户和角色关联表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_dict_type" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(100) NOT NULL DEFAULT '',
|
||||
"type" varchar(100) NOT NULL DEFAULT '',
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "sys_dict_type"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(100) NOT NULL DEFAULT '',
|
||||
"type" varchar(100) NOT NULL DEFAULT '',
|
||||
"status" tinyint NOT NULL DEFAULT '0',
|
||||
"remark" varchar(500) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '字典类型表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_user_session` (
|
||||
`id` varchar(32) NOT NULL,
|
||||
`user_id` bigint DEFAULT NULL,
|
||||
"user_type" tinyint NOT NULL,
|
||||
`username` varchar(50) NOT NULL DEFAULT '',
|
||||
`user_ip` varchar(50) DEFAULT NULL,
|
||||
`user_agent` varchar(512) DEFAULT NULL,
|
||||
`session_timeout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '' ,
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS `sys_user_session`
|
||||
(
|
||||
`id` varchar(32) NOT NULL,
|
||||
`user_id` bigint DEFAULT NULL,
|
||||
"user_type" tinyint NOT NULL,
|
||||
`username` varchar(50) NOT NULL DEFAULT '',
|
||||
`user_ip` varchar(50) DEFAULT NULL,
|
||||
`user_agent` varchar(512) DEFAULT NULL,
|
||||
`session_timeout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (`id`)
|
||||
) COMMENT '用户在线 Session';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_post" (
|
||||
CREATE TABLE IF NOT EXISTS "sys_post"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"code" varchar(64) NOT NULL,
|
||||
"name" varchar(50) NOT NULL,
|
||||
@@ -207,39 +220,42 @@ CREATE TABLE IF NOT EXISTS "sys_post" (
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '岗位信息表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_notice" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"title" varchar(50) NOT NULL COMMENT '公告标题',
|
||||
"content" text NOT NULL COMMENT '公告内容',
|
||||
"notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)',
|
||||
"status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_notice"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"title" varchar(50) NOT NULL COMMENT '公告标题',
|
||||
"content" text NOT NULL COMMENT '公告内容',
|
||||
"notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)',
|
||||
"status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)',
|
||||
"creator" varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
"updater" varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
"deleted" bit NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '通知公告表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_login_log` (
|
||||
CREATE TABLE IF NOT EXISTS `sys_login_log`
|
||||
(
|
||||
`id` bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
`log_type` bigint(4) NOT NULL,
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint NOT NULL,
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint NOT NULL,
|
||||
`trace_id` varchar(64) NOT NULL DEFAULT '',
|
||||
`username` varchar(50) NOT NULL DEFAULT '',
|
||||
`result` tinyint(4) NOT NULL,
|
||||
`user_ip` varchar(50) NOT NULL,
|
||||
`user_agent` varchar(512) NOT NULL,
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) COMMENT ='系统访问记录';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_operate_log` (
|
||||
CREATE TABLE IF NOT EXISTS `sys_operate_log`
|
||||
(
|
||||
`id` bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
`trace_id` varchar(64) NOT NULL DEFAULT '',
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
@@ -259,242 +275,290 @@ CREATE TABLE IF NOT EXISTS `sys_operate_log` (
|
||||
`result_code` int(11) NOT NULL DEFAULT '0',
|
||||
`result_msg` varchar(512) DEFAULT '',
|
||||
`result_data` varchar(4000) DEFAULT '',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`updater` varchar(64) DEFAULT '',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) COMMENT ='操作日志记录';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_user" (
|
||||
"id" bigint not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"username" varchar(30) not null,
|
||||
"password" varchar(100) not null default '',
|
||||
"nickname" varchar(30) not null,
|
||||
"remark" varchar(500) default null,
|
||||
"dept_id" bigint default null,
|
||||
"post_ids" varchar(255) default null,
|
||||
"email" varchar(50) default '',
|
||||
"mobile" varchar(11) default '',
|
||||
"sex" tinyint default '0',
|
||||
"avatar" varchar(100) default '',
|
||||
"status" tinyint not null default '0',
|
||||
"login_ip" varchar(50) default '',
|
||||
"login_date" timestamp default null,
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
CREATE TABLE IF NOT EXISTS "sys_user"
|
||||
(
|
||||
"id" bigint not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"username" varchar(30) not null,
|
||||
"password" varchar(100) not null default '',
|
||||
"nickname" varchar(30) not null,
|
||||
"remark" varchar(500) default null,
|
||||
"dept_id" bigint default null,
|
||||
"post_ids" varchar(255) default null,
|
||||
"email" varchar(50) default '',
|
||||
"mobile" varchar(11) default '',
|
||||
"sex" tinyint default '0',
|
||||
"avatar" varchar(100) default '',
|
||||
"status" tinyint not null default '0',
|
||||
"login_ip" varchar(50) default '',
|
||||
"login_date" timestamp default null,
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
primary key ("id")
|
||||
) comment '用户信息表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_api_access_log" (
|
||||
"id" bigint not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"trace_id" varchar(64) not null default '',
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint not null default '0',
|
||||
"application_name" varchar(50) not null,
|
||||
"request_method" varchar(16) not null default '',
|
||||
"request_url" varchar(255) not null default '',
|
||||
"request_params" varchar(8000) not null default '',
|
||||
"user_ip" varchar(50) not null,
|
||||
"user_agent" varchar(512) not null,
|
||||
"begin_time" timestamp not null,
|
||||
"end_time" timestamp not null,
|
||||
"duration" integer not null,
|
||||
"result_code" integer not null default '0',
|
||||
"result_msg" varchar(512) default '',
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
primary key ("id")
|
||||
CREATE TABLE IF NOT EXISTS "inf_api_access_log"
|
||||
(
|
||||
"id" bigint not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"trace_id" varchar(64) not null default '',
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint not null default '0',
|
||||
"application_name" varchar(50) not null,
|
||||
"request_method" varchar(16) not null default '',
|
||||
"request_url" varchar(255) not null default '',
|
||||
"request_params" varchar(8000) not null default '',
|
||||
"user_ip" varchar(50) not null,
|
||||
"user_agent" varchar(512) not null,
|
||||
"begin_time" timestamp not null,
|
||||
"end_time" timestamp not null,
|
||||
"duration" integer not null,
|
||||
"result_code" integer not null default '0',
|
||||
"result_msg" varchar(512) default '',
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
primary key ("id")
|
||||
) COMMENT 'API 访问日志表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "inf_api_error_log" (
|
||||
"id" integer not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"trace_id" varchar(64) not null,
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint not null default '0',
|
||||
"application_name" varchar(50) not null,
|
||||
"request_method" varchar(16) not null,
|
||||
"request_url" varchar(255) not null,
|
||||
"request_params" varchar(8000) not null,
|
||||
"user_ip" varchar(50) not null,
|
||||
"user_agent" varchar(512) not null,
|
||||
"exception_time" timestamp not null,
|
||||
"exception_name" varchar(128) not null default '',
|
||||
"exception_message" clob not null,
|
||||
"exception_root_cause_message" clob not null,
|
||||
"exception_stack_trace" clob not null,
|
||||
"exception_class_name" varchar(512) not null,
|
||||
"exception_file_name" varchar(512) not null,
|
||||
"exception_method_name" varchar(512) not null,
|
||||
"exception_line_number" integer not null,
|
||||
"process_status" tinyint not null,
|
||||
"process_time" timestamp default null,
|
||||
"process_user_id" bigint default '0',
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
primary key ("id")
|
||||
CREATE TABLE IF NOT EXISTS "inf_api_error_log"
|
||||
(
|
||||
"id" integer not null GENERATED BY DEFAULT AS IDENTITY,
|
||||
"trace_id" varchar(64) not null,
|
||||
"user_id" bigint not null default '0',
|
||||
"user_type" tinyint not null default '0',
|
||||
"application_name" varchar(50) not null,
|
||||
"request_method" varchar(16) not null,
|
||||
"request_url" varchar(255) not null,
|
||||
"request_params" varchar(8000) not null,
|
||||
"user_ip" varchar(50) not null,
|
||||
"user_agent" varchar(512) not null,
|
||||
"exception_time" timestamp not null,
|
||||
"exception_name" varchar(128) not null default '',
|
||||
"exception_message" clob not null,
|
||||
"exception_root_cause_message" clob not null,
|
||||
"exception_stack_trace" clob not null,
|
||||
"exception_class_name" varchar(512) not null,
|
||||
"exception_file_name" varchar(512) not null,
|
||||
"exception_method_name" varchar(512) not null,
|
||||
"exception_line_number" integer not null,
|
||||
"process_status" tinyint not null,
|
||||
"process_time" timestamp default null,
|
||||
"process_user_id" bigint default '0',
|
||||
"creator" varchar(64) default '',
|
||||
"create_time" timestamp not null default current_timestamp,
|
||||
"updater" varchar(64) default '',
|
||||
"update_time" timestamp not null default current_timestamp,
|
||||
"deleted" bit not null default false,
|
||||
primary key ("id")
|
||||
) COMMENT '系统异常日志';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_channel" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"signature" varchar(10) NOT NULL,
|
||||
"code" varchar(63) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"api_key" varchar(63) NOT NULL,
|
||||
"api_secret" varchar(63) DEFAULT NULL,
|
||||
"callback_url" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_channel"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"signature" varchar(10) NOT NULL,
|
||||
"code" varchar(63) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"api_key" varchar(63) NOT NULL,
|
||||
"api_secret" varchar(63) DEFAULT NULL,
|
||||
"callback_url" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '短信渠道';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_template" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"type" tinyint NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"code" varchar(63) NOT NULL,
|
||||
"name" varchar(63) NOT NULL,
|
||||
"content" varchar(255) NOT NULL,
|
||||
"params" varchar(255) NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"api_template_id" varchar(63) NOT NULL,
|
||||
"channel_id" bigint NOT NULL,
|
||||
"channel_code" varchar(63) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_template"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"type" tinyint NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"code" varchar(63) NOT NULL,
|
||||
"name" varchar(63) NOT NULL,
|
||||
"content" varchar(255) NOT NULL,
|
||||
"params" varchar(255) NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"api_template_id" varchar(63) NOT NULL,
|
||||
"channel_id" bigint NOT NULL,
|
||||
"channel_code" varchar(63) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '短信模板';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_log" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"channel_id" bigint NOT NULL,
|
||||
"channel_code" varchar(63) NOT NULL,
|
||||
"template_id" bigint NOT NULL,
|
||||
"template_code" varchar(63) NOT NULL,
|
||||
"template_type" tinyint NOT NULL,
|
||||
"template_content" varchar(255) NOT NULL,
|
||||
"template_params" varchar(255) NOT NULL,
|
||||
"api_template_id" varchar(63) NOT NULL,
|
||||
"mobile" varchar(11) NOT NULL,
|
||||
"user_id" bigint DEFAULT '0',
|
||||
"user_type" tinyint DEFAULT '0',
|
||||
"send_status" tinyint NOT NULL DEFAULT '0',
|
||||
"send_time" timestamp DEFAULT NULL,
|
||||
"send_code" int DEFAULT NULL,
|
||||
"send_msg" varchar(255) DEFAULT NULL,
|
||||
"api_send_code" varchar(63) DEFAULT NULL,
|
||||
"api_send_msg" varchar(255) DEFAULT NULL,
|
||||
"api_request_id" varchar(255) DEFAULT NULL,
|
||||
"api_serial_no" varchar(255) DEFAULT NULL,
|
||||
"receive_status" tinyint NOT NULL DEFAULT '0',
|
||||
"receive_time" timestamp DEFAULT NULL,
|
||||
"api_receive_code" varchar(63) DEFAULT NULL,
|
||||
"api_receive_msg" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_log"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"channel_id" bigint NOT NULL,
|
||||
"channel_code" varchar(63) NOT NULL,
|
||||
"template_id" bigint NOT NULL,
|
||||
"template_code" varchar(63) NOT NULL,
|
||||
"template_type" tinyint NOT NULL,
|
||||
"template_content" varchar(255) NOT NULL,
|
||||
"template_params" varchar(255) NOT NULL,
|
||||
"api_template_id" varchar(63) NOT NULL,
|
||||
"mobile" varchar(11) NOT NULL,
|
||||
"user_id" bigint DEFAULT '0',
|
||||
"user_type" tinyint DEFAULT '0',
|
||||
"send_status" tinyint NOT NULL DEFAULT '0',
|
||||
"send_time" timestamp DEFAULT NULL,
|
||||
"send_code" int DEFAULT NULL,
|
||||
"send_msg" varchar(255) DEFAULT NULL,
|
||||
"api_send_code" varchar(63) DEFAULT NULL,
|
||||
"api_send_msg" varchar(255) DEFAULT NULL,
|
||||
"api_request_id" varchar(255) DEFAULT NULL,
|
||||
"api_serial_no" varchar(255) DEFAULT NULL,
|
||||
"receive_status" tinyint NOT NULL DEFAULT '0',
|
||||
"receive_time" timestamp DEFAULT NULL,
|
||||
"api_receive_code" varchar(63) DEFAULT NULL,
|
||||
"api_receive_msg" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '短信日志';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_error_code" (
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"type" tinyint NOT NULL DEFAULT '0',
|
||||
"application_name" varchar(50) NOT NULL,
|
||||
"code" int NOT NULL DEFAULT '0',
|
||||
"message" varchar(512) NOT NULL DEFAULT '',
|
||||
"memo" varchar(512) DEFAULT '',
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_error_code"
|
||||
(
|
||||
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"type" tinyint NOT NULL DEFAULT '0',
|
||||
"application_name" varchar(50) NOT NULL,
|
||||
"code" int NOT NULL DEFAULT '0',
|
||||
"message" varchar(512) NOT NULL DEFAULT '',
|
||||
"memo" varchar(512) DEFAULT '',
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '错误码表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_social_user" (
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"user_id" bigint NOT NULL,
|
||||
"user_type" tinyint NOT NULL DEFAULT '0',
|
||||
"type" tinyint NOT NULL,
|
||||
"openid" varchar(32) NOT NULL,
|
||||
"token" varchar(256) DEFAULT NULL,
|
||||
"union_id" varchar(32) NOT NULL,
|
||||
"raw_token_info" varchar(1024) NOT NULL,
|
||||
"nickname" varchar(32) NOT NULL,
|
||||
"avatar" varchar(255) DEFAULT NULL,
|
||||
"raw_user_info" varchar(1024) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "sys_social_user"
|
||||
(
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"user_id" bigint NOT NULL,
|
||||
"user_type" tinyint NOT NULL DEFAULT '0',
|
||||
"type" tinyint NOT NULL,
|
||||
"openid" varchar(32) NOT NULL,
|
||||
"token" varchar(256) DEFAULT NULL,
|
||||
"union_id" varchar(32) NOT NULL,
|
||||
"raw_token_info" varchar(1024) NOT NULL,
|
||||
"nickname" varchar(32) NOT NULL,
|
||||
"avatar" varchar(255) DEFAULT NULL,
|
||||
"raw_user_info" varchar(1024) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"deleted" bit NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '社交用户';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pay_merchant" (
|
||||
CREATE TABLE IF NOT EXISTS "pay_merchant"
|
||||
(
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"no" varchar(32) NOT NULL,
|
||||
"name" varchar(64) NOT NULL,
|
||||
"short_name" varchar(64) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
"no" varchar(32) NOT NULL,
|
||||
"name" varchar(64) NOT NULL,
|
||||
"short_name" varchar(64) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT '支付商户信息';
|
||||
) COMMENT '支付商户信息';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pay_app" (
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(64) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
`pay_notify_url` varchar(1024) NOT NULL,
|
||||
`refund_notify_url`varchar(1024) NOT NULL,
|
||||
`merchant_id`bigint(20) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
CREATE TABLE IF NOT EXISTS "pay_app"
|
||||
(
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"name" varchar(64) NOT NULL,
|
||||
"status" tinyint NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
`pay_notify_url` varchar(1024) NOT NULL,
|
||||
`refund_notify_url` varchar(1024) NOT NULL,
|
||||
`merchant_id` bigint(20) NOT NULL,
|
||||
"creator" varchar(64) DEFAULT '',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) DEFAULT '',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT = '支付应用信息';
|
||||
|
||||
CREATE TABLE "pay_channel" (
|
||||
CREATE TABLE "pay_channel"
|
||||
(
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
"code" varchar(32) NOT NULL ,
|
||||
"status" tinyint(4) NOT NULL ,
|
||||
"remark" varchar(255) DEFAULT NULL ,
|
||||
"fee_rate" double NOT NULL DEFAULT 0 ,
|
||||
"merchant_id" bigint(20) NOT NULL ,
|
||||
"app_id" bigint(20) NOT NULL ,
|
||||
"config" varchar(10240) NOT NULL ,
|
||||
"creator" varchar(64) NULL DEFAULT '' ,
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ,
|
||||
"updater" varchar(64) NULL DEFAULT '' ,
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
"code" varchar(32) NOT NULL,
|
||||
"status" tinyint(4) NOT NULL,
|
||||
"remark" varchar(255) DEFAULT NULL,
|
||||
"fee_rate" double NOT NULL DEFAULT 0,
|
||||
"merchant_id" bigint(20) NOT NULL,
|
||||
"app_id" bigint(20) NOT NULL,
|
||||
"config" varchar(10240) NOT NULL,
|
||||
"creator" varchar(64) NULL DEFAULT '',
|
||||
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updater" varchar(64) NULL DEFAULT '',
|
||||
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
"deleted" bit(1) NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT = '支付渠道';
|
||||
|
||||
CREATE TABLE `pay_order`
|
||||
(
|
||||
"id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||
`merchant_id` bigint(20) NOT NULL,
|
||||
`app_id` bigint(20) NOT NULL,
|
||||
`channel_id` bigint(20) DEFAULT NULL,
|
||||
`channel_code` varchar(32) DEFAULT NULL,
|
||||
`merchant_order_id` varchar(64) NOT NULL,
|
||||
`subject` varchar(32) NOT NULL,
|
||||
`body` varchar(128) NOT NULL,
|
||||
`notify_url` varchar(1024) NOT NULL,
|
||||
`notify_status` tinyint(4) NOT NULL,
|
||||
`amount` bigint(20) NOT NULL,
|
||||
`channel_fee_rate` double DEFAULT 0,
|
||||
`channel_fee_amount` bigint(20) DEFAULT 0,
|
||||
`status` tinyint(4) NOT NULL,
|
||||
`user_ip` varchar(50) NOT NULL,
|
||||
`expire_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`success_time` datetime(0) DEFAULT CURRENT_TIMESTAMP,
|
||||
`notify_time` datetime(0) DEFAULT CURRENT_TIMESTAMP,
|
||||
`success_extension_id` bigint(20) DEFAULT NULL COMMENT '支付成功的订单拓展单编号',
|
||||
`refund_status` tinyint(4) NOT NULL,
|
||||
`refund_times` tinyint(4) NOT NULL,
|
||||
`refund_amount` bigint(20) NOT NULL,
|
||||
`channel_user_id` varchar(255) DEFAULT NULL,
|
||||
`channel_order_no` varchar(64) DEFAULT NULL,
|
||||
`creator` varchar(64) DEFAULT '',
|
||||
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updater` varchar(64) DEFAULT '' ,
|
||||
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted` bit(1) NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY ("id")
|
||||
) COMMENT = '支付订单';
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user