提交 6daa7ada authored 作者: hzh's avatar hzh

退款部分功能实现

上级 9c21d0d8
package org.dromara.order.controller;
import lombok.RequiredArgsConstructor;
import org.dromara.common.web.core.BaseController;
import org.dromara.order.service.IOrderRefundService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 订单退款
* 前端访问路由地址为:/order/orderRefund
*
* @author hzh
* @date 2024-12-31
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/orderRefund")
public class OrderRefundController extends BaseController {
private final IOrderRefundService orderRefundService;
}
package org.dromara.order.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 订单退款对象 biz_order_refund
*
* @author hzh
* @date 2024-12-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_order_refund")
public class OrderRefund extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 订单编号
*/
private String orderNo;
/**
* 订单支付编号
*/
private String orderPayNo;
/**
* 微信支付订单号
*/
private String transactionId;
/**
* 微信退款单号
*/
private String orderRefundNo;
/**
* 微信支付退款单号
*/
private String refundId;
/**
* 退款原因
*/
private String reason;
/**
* 退款金额
*/
private BigDecimal amount;
/**
* 退款渠道
*/
private String channel;
/**
* 退款入账账户
*/
private String userReceivedAccount;
/**
* 退款成功时间
*/
private String successTime;
/**
* 退款创建时间
*/
private String refundCreateTime;
/**
* 【资金账户】 退款所使用资金对应的资金账户类型
*/
private String fundsAccount;
/**
* 用户实际支付金额
*/
private BigDecimal payerTotal;
/**
* 用户退款金额
*/
private BigDecimal payerRefund;
/**
* 应结退款金额
*/
private BigDecimal settlementRefund;
/**
* 应结订单金额
*/
private BigDecimal settlementTotal;
/**
* 优惠退款金额
*/
private BigDecimal discountRefund;
/**
* 手续费退款金额
*/
private BigDecimal refundFee;
/**
* 退款明文信息
*/
private String info;
/**
* 退款状态
*/
private String status;
/**
* 备注
*/
private String remark;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.order.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.order.domain.OrderRefund;
import java.math.BigDecimal;
/**
* 订单退款业务对象 biz_order_refund
*
* @author hzh
* @date 2024-12-31
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderRefund.class, reverseConvertGenerate = false)
public class OrderRefundBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 用户id
*/
@NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long userId;
/**
* 订单编号
*/
@NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderNo;
/**
* 订单支付编号
*/
@NotBlank(message = "订单支付编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderPayNo;
/**
* 微信支付订单号
*/
@NotBlank(message = "微信支付订单号不能为空", groups = {AddGroup.class, EditGroup.class})
private String transactionId;
/**
* 微信退款单号
*/
@NotBlank(message = "微信退款单号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderRefundNo;
/**
* 微信支付退款单号
*/
@NotBlank(message = "微信支付退款单号不能为空", groups = {AddGroup.class, EditGroup.class})
private String refundId;
/**
* 退款原因
*/
@NotBlank(message = "退款原因不能为空", groups = {AddGroup.class, EditGroup.class})
private String reason;
/**
* 退款金额
*/
@NotNull(message = "退款金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal amount;
/**
* 退款渠道
*/
@NotBlank(message = "退款渠道不能为空", groups = {AddGroup.class, EditGroup.class})
private String channel;
/**
* 退款入账账户
*/
@NotBlank(message = "退款入账账户不能为空", groups = {AddGroup.class, EditGroup.class})
private String userReceivedAccount;
/**
* 退款成功时间
*/
@NotBlank(message = "退款成功时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String successTime;
/**
* 退款创建时间
*/
@NotBlank(message = "退款创建时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String refundCreateTime;
/**
* 【资金账户】 退款所使用资金对应的资金账户类型
*/
@NotBlank(message = "【资金账户】 退款所使用资金对应的资金账户类型不能为空", groups = {AddGroup.class, EditGroup.class})
private String fundsAccount;
/**
* 用户实际支付金额
*/
@NotNull(message = "用户实际支付金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal payerTotal;
/**
* 用户退款金额
*/
@NotNull(message = "用户退款金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal payerRefund;
/**
* 应结退款金额
*/
@NotNull(message = "应结退款金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal settlementRefund;
/**
* 应结订单金额
*/
@NotNull(message = "应结订单金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal settlementTotal;
/**
* 优惠退款金额
*/
@NotNull(message = "优惠退款金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal discountRefund;
/**
* 手续费退款金额
*/
@NotNull(message = "手续费退款金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal refundFee;
/**
* 退款明文信息
*/
@NotBlank(message = "退款明文信息不能为空", groups = {AddGroup.class, EditGroup.class})
private String info;
/**
* 退款状态
*/
@NotBlank(message = "退款状态不能为空", groups = {AddGroup.class, EditGroup.class})
private String status;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = {AddGroup.class, EditGroup.class})
private String remark;
}
package org.dromara.order.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.order.domain.OrderRefund;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 订单退款视图对象 biz_order_refund
*
* @author hzh
* @date 2024-12-31
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderRefund.class)
public class OrderRefundVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long userId;
/**
* 订单编号
*/
@ExcelProperty(value = "订单编号")
private String orderNo;
/**
* 订单支付编号
*/
@ExcelProperty(value = "订单支付编号")
private String orderPayNo;
/**
* 微信支付订单号
*/
@ExcelProperty(value = "微信支付订单号")
private String transactionId;
/**
* 微信退款单号
*/
@ExcelProperty(value = "微信退款单号")
private String orderRefundNo;
/**
* 微信支付退款单号
*/
@ExcelProperty(value = "微信支付退款单号")
private String refundId;
/**
* 退款原因
*/
@ExcelProperty(value = "退款原因")
private String reason;
/**
* 退款金额
*/
@ExcelProperty(value = "退款金额")
private BigDecimal amount;
/**
* 退款渠道
*/
@ExcelProperty(value = "退款渠道")
private String channel;
/**
* 退款入账账户
*/
@ExcelProperty(value = "退款入账账户")
private String userReceivedAccount;
/**
* 退款成功时间
*/
@ExcelProperty(value = "退款成功时间")
private String successTime;
/**
* 退款创建时间
*/
@ExcelProperty(value = "退款创建时间")
private String refundCreateTime;
/**
* 【资金账户】 退款所使用资金对应的资金账户类型
*/
@ExcelProperty(value = "【资金账户】 退款所使用资金对应的资金账户类型")
private String fundsAccount;
/**
* 用户实际支付金额
*/
@ExcelProperty(value = "用户实际支付金额")
private BigDecimal payerTotal;
/**
* 用户退款金额
*/
@ExcelProperty(value = "用户退款金额")
private BigDecimal payerRefund;
/**
* 应结退款金额
*/
@ExcelProperty(value = "应结退款金额")
private BigDecimal settlementRefund;
/**
* 应结订单金额
*/
@ExcelProperty(value = "应结订单金额")
private BigDecimal settlementTotal;
/**
* 优惠退款金额
*/
@ExcelProperty(value = "优惠退款金额")
private BigDecimal discountRefund;
/**
* 手续费退款金额
*/
@ExcelProperty(value = "手续费退款金额")
private BigDecimal refundFee;
/**
* 退款明文信息
*/
@ExcelProperty(value = "退款明文信息")
private String info;
/**
* 退款状态
*/
@ExcelProperty(value = "退款状态")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}
package org.dromara.order.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.order.domain.OrderRefund;
import org.dromara.order.domain.vo.OrderRefundVo;
/**
* 订单退款Mapper接口
*
* @author hzh
* @date 2024-12-31
*/
public interface OrderRefundMapper extends BaseMapperPlus<OrderRefund, OrderRefundVo> {
}
package org.dromara.order.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.order.domain.OrderRefund;
import org.dromara.order.domain.bo.OrderRefundBo;
import org.dromara.order.domain.vo.OrderRefundVo;
/**
* 订单退款Service接口
*
* @author hzh
* @date 2024-12-31
*/
public interface IOrderRefundService extends IBaseService<OrderRefundVo, OrderRefundBo, OrderRefund> {
}
package org.dromara.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.order.domain.OrderRefund;
import org.dromara.order.domain.bo.OrderRefundBo;
import org.dromara.order.domain.vo.OrderRefundVo;
import org.dromara.order.mapper.OrderRefundMapper;
import org.dromara.order.service.IOrderRefundService;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* 订单退款Service业务层处理
*
* @author hzh
* @date 2024-12-31
*/
@RequiredArgsConstructor
@Service
public class OrderRefundServiceImpl extends AbstractBaseService<OrderRefundVo, OrderRefundBo, OrderRefund> implements IOrderRefundService {
private final OrderRefundMapper baseMapper;
@Override
public BaseMapperPlus<OrderRefund, OrderRefundVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<OrderRefund> buildQueryWrapper(OrderRefundBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OrderRefund> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, OrderRefund::getUserId, bo.getUserId());
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), OrderRefund::getOrderNo, bo.getOrderNo());
lqw.eq(StringUtils.isNotBlank(bo.getOrderPayNo()), OrderRefund::getOrderPayNo, bo.getOrderPayNo());
lqw.eq(StringUtils.isNotBlank(bo.getTransactionId()), OrderRefund::getTransactionId, bo.getTransactionId());
lqw.eq(StringUtils.isNotBlank(bo.getOrderRefundNo()), OrderRefund::getOrderRefundNo, bo.getOrderRefundNo());
lqw.eq(StringUtils.isNotBlank(bo.getRefundId()), OrderRefund::getRefundId, bo.getRefundId());
lqw.eq(StringUtils.isNotBlank(bo.getReason()), OrderRefund::getReason, bo.getReason());
lqw.eq(bo.getAmount() != null, OrderRefund::getAmount, bo.getAmount());
lqw.eq(StringUtils.isNotBlank(bo.getChannel()), OrderRefund::getChannel, bo.getChannel());
lqw.eq(StringUtils.isNotBlank(bo.getUserReceivedAccount()), OrderRefund::getUserReceivedAccount, bo.getUserReceivedAccount());
lqw.eq(StringUtils.isNotBlank(bo.getSuccessTime()), OrderRefund::getSuccessTime, bo.getSuccessTime());
lqw.eq(StringUtils.isNotBlank(bo.getRefundCreateTime()), OrderRefund::getRefundCreateTime, bo.getRefundCreateTime());
lqw.eq(StringUtils.isNotBlank(bo.getFundsAccount()), OrderRefund::getFundsAccount, bo.getFundsAccount());
lqw.eq(bo.getPayerTotal() != null, OrderRefund::getPayerTotal, bo.getPayerTotal());
lqw.eq(bo.getPayerRefund() != null, OrderRefund::getPayerRefund, bo.getPayerRefund());
lqw.eq(bo.getSettlementRefund() != null, OrderRefund::getSettlementRefund, bo.getSettlementRefund());
lqw.eq(bo.getSettlementTotal() != null, OrderRefund::getSettlementTotal, bo.getSettlementTotal());
lqw.eq(bo.getDiscountRefund() != null, OrderRefund::getDiscountRefund, bo.getDiscountRefund());
lqw.eq(bo.getRefundFee() != null, OrderRefund::getRefundFee, bo.getRefundFee());
lqw.eq(StringUtils.isNotBlank(bo.getInfo()), OrderRefund::getInfo, bo.getInfo());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OrderRefund::getStatus, bo.getStatus());
return lqw;
}
}
<?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="org.dromara.order.mapper.OrderRefundMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论