提交 49250ebf authored 作者: YunaiV's avatar YunaiV

1. 增加支付交易分页 API 接口

上级 efaeb5b3
......@@ -51,6 +51,19 @@ public class QueryWrapperX<T> extends QueryWrapper<T> {
return this;
}
public QueryWrapperX<T> betweenIfPresent(String column, Object val1, Object val2) {
if (val1 != null && val2 != null) {
return (QueryWrapperX<T>) super.between(column, val1, val2);
}
if (val1 != null) {
return (QueryWrapperX<T>) ge(column, val1);
}
if (val2 != null) {
return (QueryWrapperX<T>) le(column, val2);
}
return this;
}
// ========== 重写父类方法,方便链式调用 ==========
@Override
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -72,6 +72,12 @@
<artifactId>promotion-service-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- 支付服务 -->
<groupId>cn.iocoder.mall</groupId>
<artifactId>pay-service-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Registry 和 Config 相关 -->
<dependency>
......
package cn.iocoder.mall.managementweb.client.pay.transaction;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.rpc.transaction.PayTransactionRpc;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionPageReqDTO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionRespDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
@Service
public class PayTransactionClient {
@DubboReference(version = "${dubbo.consumer.PayTransactionRpc.version}")
private PayTransactionRpc payTransactionRpc;
public PageResult<PayTransactionRespDTO> pagePayTransaction(PayTransactionPageReqDTO pageReqDTO) {
CommonResult<PageResult<PayTransactionRespDTO>> pagePayTransactionResult = payTransactionRpc.pagePayTransaction(pageReqDTO);
pagePayTransactionResult.checkError();
return pagePayTransactionResult.getData();
}
}
### /product-spu/page 成功(全部)
GET {{baseUrl}}/pay/transaction/page?pageNo=1&pageSize=10
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
dubbo-tag: {{dubboTag}}
###
package cn.iocoder.mall.managementweb.controller.pay;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionPageReqVO;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionRespVO;
import cn.iocoder.mall.managementweb.service.pay.transaction.PayTransactionService;
import cn.iocoder.security.annotations.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import static cn.iocoder.common.framework.vo.CommonResult.success;
@Api("支付交易单 API")
@RestController
@RequestMapping("/pay/transaction")
@Validated
@Slf4j
public class PayTransactionController {
@Autowired
private PayTransactionService payTransactionService;
@GetMapping("/page")
@RequiresPermissions("pay:transaction:page")
@ApiOperation("获得交易支付单分页")
public CommonResult<PageResult<PayTransactionRespVO>> pagePayTransaction(PayTransactionPageReqVO pageReqVO) {
// 执行查询
return success(payTransactionService.pagePayTransaction(pageReqVO));
}
}
package cn.iocoder.mall.managementweb.controller.pay.vo.transaction;
import cn.iocoder.common.framework.vo.PageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ApiModel("支付交易分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class PayTransactionPageReqVO extends PageParam {
@ApiModelProperty(value = "创建时间(开始)", example = "2019-10-10 11:12:13")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createBeginTime;
@ApiModelProperty(value = "创建时间(结束)", example = "2019-10-10 11:12:13")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createEndTime;
@ApiModelProperty(value = "创建时间()", example = "2019-10-10 11:12:13")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date paymentBeginTime;
@ApiModelProperty(value = "创建时间()", example = "2019-10-10 11:12:13")
private Date paymentEndTime;
@ApiModelProperty(value = "支付状态", example = "1", notes = "参见 PayTransactionStatusEnum 枚举")
private Integer status;
@ApiModelProperty(value = "是否退款", example = "true")
private Boolean hasRefund;
@ApiModelProperty(value = "支付渠道", example = "1", notes = "参见 PayChannelEnum 枚举")
private Integer payChannel;
@ApiModelProperty(value = "商品标题", example = "芋头")
private String orderSubject;
}
package cn.iocoder.mall.pay.api.bo.transaction;
package cn.iocoder.mall.managementweb.controller.pay.vo.transaction;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
@ApiModel("支付交易 BO")
@ApiModel("支付交易单 Response VO")
@Data
@Accessors(chain = true)
public class PayTransactionBO implements Serializable {
public class PayTransactionRespVO {
@ApiModelProperty(value = "交易编号", required = true, example = "POd4RC6a")
private Integer id;
@ApiModelProperty(value = "用户编号", required = true, example = "1024")
private Integer userId;
@ApiModelProperty(value = "应用编号", required = true, example = "POd4RC6a")
private String appId;
......@@ -43,45 +45,30 @@ public class PayTransactionBO implements Serializable {
@ApiModelProperty(value = "交易过期时间", required = true)
private Date expireTime;
/**
* 回调业务线完成时间
*/
@ApiModelProperty(value = "回调业务线完成时间")
private Date finishTime;
/**
* 成功支付的交易拓展编号
*/
@ApiModelProperty(value = "成功支付的交易拓展编号", example = "1024")
private Integer extensionId;
/**
* 支付成功的支付渠道
*
* @see cn.iocoder.mall.pay.api.constant.PayChannelEnum
*/
@ApiModelProperty(value = "支付成功的支付渠道", example = "1", notes = "参见 PayChannelEnum 枚举")
private Integer payChannel;
/**
* 第三方支付成功的时间
*/
@ApiModelProperty(value = "第三方支付成功的时间")
private Date paymentTime;
/**
* 收到第三方系统通知的时间
*
* 一般情况下,即第三方系统的异步通知
*/
@ApiModelProperty(value = "收到第三方系统通知的时间")
private Date notifyTime;
/**
* 第三方的流水号
*/
@ApiModelProperty(value = "第三方的流水号", example = "11122233344444")
private String tradeNo;
/**
* 创建时间
*/
@ApiModelProperty(value = "添加时间", required = true)
private Date createTime;
// ========== 退款相关 ==========
/**
* 退款总金额
*/
@ApiModelProperty(value = "退款总金额,单位:分", example = "100")
private Integer refundTotal;
}
package cn.iocoder.mall.managementweb.convert.pay.transaction;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionPageReqVO;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionRespVO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionPageReqDTO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PayTransactionConvert {
PayTransactionConvert INSTANCE = Mappers.getMapper(PayTransactionConvert.class);
PayTransactionPageReqDTO convert(PayTransactionPageReqVO bean);
PageResult<PayTransactionRespVO> convertPage(PageResult<PayTransactionRespDTO> bean);
}
package cn.iocoder.mall.managementweb.service.pay.transaction;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.managementweb.client.pay.transaction.PayTransactionClient;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionPageReqVO;
import cn.iocoder.mall.managementweb.controller.pay.vo.transaction.PayTransactionRespVO;
import cn.iocoder.mall.managementweb.convert.pay.transaction.PayTransactionConvert;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionRespDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PayTransactionService {
@Autowired
private PayTransactionClient payTransactionClient;
public PageResult<PayTransactionRespVO> pagePayTransaction(PayTransactionPageReqVO pageReqVO) {
PageResult<PayTransactionRespDTO> payTransactionPage = payTransactionClient.pagePayTransaction(
PayTransactionConvert.INSTANCE.convert(pageReqVO));
return PayTransactionConvert.INSTANCE.convertPage(payTransactionPage);
}
}
......@@ -66,6 +66,8 @@ dubbo:
version: 1.0.0
ProductRecommendRpc:
version: 1.0.0
PayTransactionRpc:
version: 1.0.0
# Swagger 配置项
swagger:
......
package cn.iocoder.mall.pay.api;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.pay.api.bo.transaction.PayTransactionBO;
import cn.iocoder.mall.pay.api.bo.transaction.PayTransactionPageBO;
import cn.iocoder.mall.pay.api.bo.transaction.PayTransactionSubmitBO;
import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionCreateDTO;
import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionGetDTO;
import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionPageDTO;
import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionSubmitDTO;
import java.util.Collection;
import java.util.List;
public interface PayTransactionService {
List<PayTransactionBO> getTransactionList(Collection<Integer> ids);
PayTransactionPageBO getTransactionPage(PayTransactionPageDTO payTransactionPageDTO);
CommonResult cancelTransaction(); // TODO 1. params 2. result
}
package cn.iocoder.mall.pay.api.bo.transaction;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* 支付交易 Page BO
*/
@Data
@Accessors(chain = true)
public class PayTransactionPageBO implements Serializable {
/**
* 支付交易数组
*/
private List<PayTransactionBO> list;
/**
* 总量
*/
private Integer total;
}
package cn.iocoder.mall.pay.application.controller.admins;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.pay.api.PayTransactionService;
import cn.iocoder.mall.pay.api.bo.transaction.PayTransactionPageBO;
import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionPageDTO;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.format.annotation.DateTimeFormat;
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 java.util.Date;
import static cn.iocoder.common.framework.vo.CommonResult.success;
@RestController
@RequestMapping("admins/transaction")
public class AdminsPayTransactionController {
@Reference(validation = "true", version = "${dubbo.provider.PayTransactionService.version}")
private PayTransactionService payTransactionService;
@GetMapping("/page")
public CommonResult<PayTransactionPageBO> page(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@RequestParam(value = "createBeginTime", required = false) Date createBeginTime,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@RequestParam(value = "createEndTime", required = false) Date createEndTime,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@RequestParam(value = "paymentBeginTime", required = false) Date paymentBeginTime,
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@RequestParam(value = "paymentEndTime", required = false) Date paymentEndTime,
@RequestParam(value = "status", required = false) Integer status,
@RequestParam(value = "hasRefund", required = false) Boolean hasRefund,
@RequestParam(value = "payChannel", required = false) Integer payChannel,
@RequestParam(value = "orderSubject", required = false) String orderSubject,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
PayTransactionPageDTO payTransactionPageDTO = new PayTransactionPageDTO()
.setCreateBeginTime(createBeginTime).setCreateEndTime(createEndTime)
.setPaymentBeginTime(paymentBeginTime).setPaymentEndTime(paymentEndTime)
.setStatus(status).setHasRefund(hasRefund)
.setPayChannel(payChannel).setOrderSubject(orderSubject)
.setPageNo(pageNo).setPageSize(pageSize);
// 执行查询
return success(payTransactionService.getTransactionPage(payTransactionPageDTO));
}
}
......@@ -38,46 +38,4 @@ import java.util.List;
@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.PayTransactionService.version}")
public class PayTransactionServiceImpl implements PayTransactionService {
public PayTransactionDO getTransaction(Integer id) {
return payTransactionMapper.selectById(id);
}
public int updateTransactionPriceTotalIncr(Integer id, Integer incr) {
return payTransactionMapper.updateForRefundTotal(id, incr);
}
public PayTransactionExtensionDO getPayTransactionExtension(Integer id) {
return payTransactionExtensionMapper.selectById(id);
}
@Override
public List<PayTransactionBO> getTransactionList(Collection<Integer> ids) {
return PayTransactionConvert.INSTANCE.convertList(payTransactionMapper.selectListByIds(ids));
}
@Override
public PayTransactionPageBO getTransactionPage(PayTransactionPageDTO payTransactionPageDTO) {
PayTransactionPageBO payTransactionPage = new PayTransactionPageBO();
// 查询分页数据
int offset = (payTransactionPageDTO.getPageNo() - 1) * payTransactionPageDTO.getPageSize();
payTransactionPage.setList(PayTransactionConvert.INSTANCE.convertList(payTransactionMapper.selectListByPage(
payTransactionPageDTO.getCreateBeginTime(), payTransactionPageDTO.getCreateEndTime(),
payTransactionPageDTO.getPaymentBeginTime(), payTransactionPageDTO.getPaymentEndTime(),
payTransactionPageDTO.getStatus(), payTransactionPageDTO.getHasRefund(),
payTransactionPageDTO.getPayChannel(), payTransactionPageDTO.getOrderSubject(),
offset, payTransactionPageDTO.getPageSize())));
// 查询分页总数
payTransactionPage.setTotal(payTransactionMapper.selectCountByPage(
payTransactionPageDTO.getCreateBeginTime(), payTransactionPageDTO.getCreateEndTime(),
payTransactionPageDTO.getPaymentBeginTime(), payTransactionPageDTO.getPaymentEndTime(),
payTransactionPageDTO.getStatus(), payTransactionPageDTO.getHasRefund(),
payTransactionPageDTO.getPayChannel(), payTransactionPageDTO.getOrderSubject()));
return payTransactionPage;
}
@Override // TODO 芋艿,后面去实现
public CommonResult cancelTransaction() {
return null;
}
}
......@@ -2,24 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductAttrMapper">
<sql id="FIELDS">
id, name, status, create_time
</sql>
<!--<select id="selectList" resultType="ProductCategoryDO">-->
<!--SELECT-->
<!--<include refid="FIELDS" />-->
<!--FROM product_category-->
<!--WHERE deleted = 0-->
<!--</select>-->
<select id="selectById" parameterType="Integer" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByName" parameterType="String" resultType="ProductAttrDO">
SELECT
......@@ -102,4 +84,4 @@
</where>
</select>
</mapper>
\ No newline at end of file
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>onemall</artifactId>
<groupId>cn.iocoder.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>system</artifactId>
<name>system</name>
<packaging>pom</packaging>
<modules>
<!-- <module>system-sdk</module>-->
<!-- <module>system-service-api</module>-->
<!-- <module>system-service-impl</module>-->
<module>system-rest</module>
<module>system-biz</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>mall-dependencies</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
spring:
# Application 的配置项
application:
name: system-application
# Profile 的配置项
profiles:
active: local
# TODO 小范 TO 芋艿,这个临时加了个
qiniu:
bucket: xx
access-key: xx
secret-key: xx
package cn.iocoder.mall.payservice.rpc.transaction;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.rpc.transaction.dto.*;
/**
......@@ -40,4 +41,12 @@ public interface PayTransactionRpc {
*/
CommonResult<Boolean> updatePayTransactionSuccess(PayTransactionSuccessReqDTO successReqDTO);
/**
* 获得交易支付单分页
*
* @param pageReqDTO 分页条件
* @return 交易支付单分页
*/
CommonResult<PageResult<PayTransactionRespDTO>> pagePayTransaction(PayTransactionPageReqDTO pageReqDTO);
}
package cn.iocoder.mall.pay.api.dto.transaction;
package cn.iocoder.mall.payservice.rpc.transaction.dto;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 支付交易分页 DTO
* 支付交易分页 Request DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class PayTransactionPageDTO {
public class PayTransactionPageReqDTO extends PageParam {
/**
* 创建时间(开始)
......@@ -48,9 +50,4 @@ public class PayTransactionPageDTO {
*/
private String orderSubject;
@NotNull(message = "页码不能为空")
private Integer pageNo;
@NotNull(message = "每页条数不能为空")
private Integer pageSize;
}
package cn.iocoder.mall.payservice.convert.transaction;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.dal.mysql.dataobject.transaction.PayTransactionDO;
import cn.iocoder.mall.payservice.dal.mysql.dataobject.transaction.PayTransactionExtensionDO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionCreateReqDTO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionRespDTO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionSubmitReqDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
......@@ -19,4 +22,7 @@ public interface PayTransactionConvert {
PayTransactionRespDTO convert(PayTransactionDO bean);
@Mapping(source = "records", target = "list")
PageResult<PayTransactionRespDTO> convertPage(IPage<PayTransactionDO> bean);
}
......@@ -79,6 +79,7 @@ public class PayTransactionDO extends DeletableDO {
* 支付成功的支付渠道
*/
private Integer payChannel;
/**
* 第三方支付成功的时间
*/
......@@ -91,17 +92,12 @@ public class PayTransactionDO extends DeletableDO {
* 第三方的流水号
*/
private String tradeNo;
// ========== 退款相关 ==========
/**
* 退款总金额
*/
private Integer refundTotal;
/**
* 创建时间
*/
private Date createTime;
/**
* 最后更新时间
*/
private Date updateTime;
}
package cn.iocoder.mall.payservice.dal.mysql.mapper.transaction;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.mybatis.core.util.PageUtil;
import cn.iocoder.mall.payservice.dal.mysql.dataobject.transaction.PayTransactionDO;
import cn.iocoder.mall.payservice.rpc.transaction.dto.PayTransactionPageReqDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface PayTransactionMapper extends BaseMapper<PayTransactionDO> {
//
// UPDATE `transaction`
// SET refund_total = refund_total + ${refundTotalIncr}
// WHERE price >= refund_total + ${refundTotalIncr}
//
// int updateForRefundTotal(@Param("id") Integer id,
// @Param("refundTotalIncr") Integer refundTotalIncr);
// <if test="createBeginTime != null">
// AND create_time >= #{createBeginTime}
// </if>
// <if test="createEndTime != null">
// AND #{createEndTime} >= create_time
// </if>
// <if test="paymentBeginTime != null">
// AND payment_time >= #{paymentBeginTime}
// </if>
// <if test="paymentEndTime != null">
// AND #{paymentEndTime} >= payment_time
// </if>
// <if test="status != null">
// AND status = #{status}
// </if>
// <if test="hasRefund == true">
// AND refund_total > 0
// </if>
// <if test="hasRefund == false">
// AND refund_total = 0
// </if>
// <if test="payChannel != null">
// AND pay_channel = #{payChannel}
// </if>
// <if test="orderSubject != null">
// order_subject LIKE "%"#{orderSubject}"%"
// </if>
// default IPage<PayTransactionDO> selectPage(TransactionPageBO pageBO) {
// return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
// new QueryWrapperX<PayTransactionDO>());
// }
default IPage<PayTransactionDO> selectPage(PayTransactionPageReqDTO pageReqDTO) {
QueryWrapperX<PayTransactionDO> query = new QueryWrapperX<PayTransactionDO>()
.betweenIfPresent("create_time", pageReqDTO.getCreateBeginTime(), pageReqDTO.getPaymentEndTime())
.betweenIfPresent("payment_time", pageReqDTO.getPaymentBeginTime(), pageReqDTO.getPaymentEndTime())
.eqIfPresent("status", pageReqDTO.getStatus())
.eqIfPresent("payChannel", pageReqDTO.getPayChannel())
.likeIfPresent("order_subject", pageReqDTO.getOrderSubject());
if (pageReqDTO.getHasRefund() != null) {
if (pageReqDTO.getHasRefund()) {
query.gt("refund_total", 0);
} else {
query.eq("refund_total", 0);
}
}
return selectPage(PageUtil.build(pageReqDTO), query);
}
default int update(PayTransactionDO entity, Integer whereStatus) {
return update(entity, new QueryWrapper<PayTransactionDO>()
......@@ -59,4 +42,6 @@ public interface PayTransactionMapper extends BaseMapper<PayTransactionDO> {
.eq("order_id", orderId));
}
int updatePriceTotalIncr(@Param("id") Integer id, @Param("refundTotalIncr") Integer refundTotalIncr);
}
package cn.iocoder.mall.payservice.rpc.transaction;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.rpc.transaction.dto.*;
import cn.iocoder.mall.payservice.service.transaction.PayTransactionService;
import org.apache.dubbo.config.annotation.DubboService;
......@@ -35,4 +36,9 @@ public class PayTransactionRpcImpl implements PayTransactionRpc {
successReqDTO.getParams()));
}
@Override
public CommonResult<PageResult<PayTransactionRespDTO>> pagePayTransaction(PayTransactionPageReqDTO pageReqDTO) {
return success(payTransactionService.pagePayTransaction(pageReqDTO));
}
}
package cn.iocoder.mall.payservice.service.transaction;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.rpc.transaction.dto.*;
/**
......@@ -43,4 +44,21 @@ public interface PayTransactionService {
*/
Boolean updateTransactionPaySuccess(Integer payChannel, String params);
/**
* 获得交易支付单分页
*
* @param pageReqDTO 分页条件
* @return 交易支付单分页
*/
PageResult<PayTransactionRespDTO> pagePayTransaction(PayTransactionPageReqDTO pageReqDTO);
/**
* 增加交易支付单的退款总金额
*
* @param payTransactionId 支付交易单
* @param incr 新增的退款金额
* @return 是否增加成功
*/
boolean updateTransactionPriceTotalIncr(Integer payTransactionId, Integer incr);
}
......@@ -4,6 +4,7 @@ import cn.iocoder.common.framework.exception.util.ServiceExceptionUtil;
import cn.iocoder.common.framework.util.DateUtil;
import cn.iocoder.common.framework.util.MathUtil;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.payservice.client.thirdpay.AbstractThirdPayClient;
import cn.iocoder.mall.payservice.client.thirdpay.ThirdPayClientFactory;
import cn.iocoder.mall.payservice.client.thirdpay.dto.ThirdPayTransactionSuccessRespDTO;
......@@ -18,6 +19,7 @@ import cn.iocoder.mall.payservice.rpc.transaction.dto.*;
import cn.iocoder.mall.payservice.service.app.PayAppService;
import cn.iocoder.mall.payservice.service.notify.PayNotifyService;
import cn.iocoder.mall.payservice.service.transaction.PayTransactionService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -165,6 +167,17 @@ public class PayTransactionServiceImpl implements PayTransactionService {
return true;
}
@Override
public PageResult<PayTransactionRespDTO> pagePayTransaction(PayTransactionPageReqDTO pageReqDTO) {
IPage<PayTransactionDO> payTransactionDOPage = payTransactionMapper.selectPage(pageReqDTO);
return PayTransactionConvert.INSTANCE.convertPage(payTransactionDOPage);
}
@Override
public boolean updateTransactionPriceTotalIncr(Integer payTransactionId, Integer incr) {
return payTransactionMapper.updatePriceTotalIncr(payTransactionId, incr) > 0;
}
private String generateTransactionCode() {
// wx
// 2014
......@@ -183,4 +196,6 @@ public class PayTransactionServiceImpl implements PayTransactionService {
;
}
// CommonResult cancelTransaction(); // TODO 1. params 2. result
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.payservice.dal.mysql.mapper.transaction.PayTransactionMapper">
<update id="updatePriceTotalIncr">
UPDATE pay_transaction
SET refund_total = refund_total + ${refundTotalIncr}
WHERE id = #{id}
AND price >= refund_total + ${refundTotalIncr}
</update>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论