主订单退款完成
This commit is contained in:
parent
24ed9cc666
commit
bd5dbb500d
|
|
@ -9,10 +9,7 @@ import com.ghy.common.core.domain.AjaxResult;
|
||||||
import com.ghy.common.core.page.PageDomain;
|
import com.ghy.common.core.page.PageDomain;
|
||||||
import com.ghy.common.core.page.TableDataInfo;
|
import com.ghy.common.core.page.TableDataInfo;
|
||||||
import com.ghy.common.core.page.TableSupport;
|
import com.ghy.common.core.page.TableSupport;
|
||||||
import com.ghy.common.enums.BusinessType;
|
import com.ghy.common.enums.*;
|
||||||
import com.ghy.common.enums.ImgType;
|
|
||||||
import com.ghy.common.enums.PayStatus;
|
|
||||||
import com.ghy.common.enums.RefundType;
|
|
||||||
import com.ghy.common.utils.ExceptionUtil;
|
import com.ghy.common.utils.ExceptionUtil;
|
||||||
import com.ghy.common.utils.StringUtils;
|
import com.ghy.common.utils.StringUtils;
|
||||||
import com.ghy.common.utils.poi.ExcelUtil;
|
import com.ghy.common.utils.poi.ExcelUtil;
|
||||||
|
|
@ -857,11 +854,14 @@ public class OrderMasterController extends BaseController {
|
||||||
Assert.isTrue(paid, "订单未支付");
|
Assert.isTrue(paid, "订单未支付");
|
||||||
Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员");
|
Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员");
|
||||||
|
|
||||||
// 先改状态 后面出错就回滚
|
// 改主订单的订单状态和支付状态
|
||||||
orderMasterService.updatePayStatus(orderMasterId, PayStatus.REVERSING.getCode());
|
orderMasterService.updateStatus(orderMasterId, OrderStatus.CANCEL.code());
|
||||||
|
orderMasterService.updatePayStatus(orderMasterId, PayStatus.REFUND.getCode());
|
||||||
|
// 改子订单的订单状态和支付状态
|
||||||
OrderDetail odUpdate = new OrderDetail();
|
OrderDetail odUpdate = new OrderDetail();
|
||||||
odUpdate.setOrderMasterId(orderMasterId);
|
odUpdate.setOrderMasterId(orderMasterId);
|
||||||
odUpdate.setPayStatus(PayStatus.REVERSING.getCode());
|
odUpdate.setPayStatus(PayStatus.REFUND.getCode());
|
||||||
|
odUpdate.setOrderStatus(OrderStatus.CANCEL.code());
|
||||||
orderDetailService.updateByOrderMasterId(odUpdate);
|
orderDetailService.updateByOrderMasterId(odUpdate);
|
||||||
|
|
||||||
// 主订单金额=订单原价+加价
|
// 主订单金额=订单原价+加价
|
||||||
|
|
@ -881,6 +881,10 @@ public class OrderMasterController extends BaseController {
|
||||||
PayStatus.REFUNDING.getCode().equals(fd.getPayStatus()) ||
|
PayStatus.REFUNDING.getCode().equals(fd.getPayStatus()) ||
|
||||||
PayStatus.REVERSING.getCode().equals(fd.getPayStatus())) {
|
PayStatus.REVERSING.getCode().equals(fd.getPayStatus())) {
|
||||||
payMoney = payMoney.subtract(fd.getPayMoney());
|
payMoney = payMoney.subtract(fd.getPayMoney());
|
||||||
|
} else if (PayStatus.PAID.getCode().equals(fd.getPayStatus()) ||
|
||||||
|
PayStatus.PAYED_ADD.getCode().equals(fd.getPayStatus())) {
|
||||||
|
// 修改子单状态
|
||||||
|
financialDetailService.updatePayStatus(fd.getId(), PayStatus.REVERSING.getCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -892,11 +896,14 @@ public class OrderMasterController extends BaseController {
|
||||||
JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt, RefundType.ROM);
|
JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), reverseAmt, RefundType.ROM);
|
||||||
if (AdapayStatusEnum.succeeded.code.equals(response.getString("status")) ||
|
if (AdapayStatusEnum.succeeded.code.equals(response.getString("status")) ||
|
||||||
AdapayStatusEnum.pending.code.equals(response.getString("status"))) {
|
AdapayStatusEnum.pending.code.equals(response.getString("status"))) {
|
||||||
// TODO 保存reverseId
|
// 主订单退款 直接修改主财务单状态为退款中
|
||||||
return AjaxResult.success();
|
String reverseId = response.getString("id");
|
||||||
|
financialMaster.setPayStatus(PayStatus.REVERSING.getCode());
|
||||||
|
financialMaster.setReverseId(reverseId);
|
||||||
|
financialMasterService.updateFinancialMaster(financialMaster);
|
||||||
} else {
|
} else {
|
||||||
// TODO 重试
|
logger.error("FM[{}]撤销支付失败: {}", financialMaster.getId(), response.toJSONString());
|
||||||
return AjaxResult.error(response.getString("error_msg"));
|
|
||||||
}
|
}
|
||||||
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -411,6 +411,6 @@ public class OrderMasterServiceImpl implements OrderMasterService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundSucceeded(String reverseId) {
|
public void refundSucceeded(String reverseId) {
|
||||||
// TODO
|
financialMasterService.refundSucceeded(reverseId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ public class FinancialMaster extends BaseEntity {
|
||||||
@Excel(name = "Adapay的唯一支付ID", cellType = Excel.ColumnType.STRING)
|
@Excel(name = "Adapay的唯一支付ID", cellType = Excel.ColumnType.STRING)
|
||||||
private String paymentId;
|
private String paymentId;
|
||||||
|
|
||||||
|
@Excel(name = "Adapay的撤销支付ID", cellType = Excel.ColumnType.STRING)
|
||||||
|
private String reverseId;
|
||||||
|
|
||||||
private List<Long> ids;
|
private List<Long> ids;
|
||||||
|
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
|
||||||
|
|
@ -77,4 +77,11 @@ public interface FinancialMasterMapper {
|
||||||
FinancialMaster selectByPaymentId(String paymentId);
|
FinancialMaster selectByPaymentId(String paymentId);
|
||||||
|
|
||||||
List<FinancialMaster> selectByOrderMasterIds(@Param(value = "orderMasterIds") Set<Long> orderMasterIds);
|
List<FinancialMaster> selectByOrderMasterIds(@Param(value = "orderMasterIds") Set<Long> orderMasterIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销支付成功
|
||||||
|
*
|
||||||
|
* @param reverseId 撤销支付ID
|
||||||
|
*/
|
||||||
|
void refundSucceeded(@Param("reverseId") String reverseId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,4 +98,6 @@ public interface FinancialMasterService {
|
||||||
* @param paymentId 支付ID
|
* @param paymentId 支付ID
|
||||||
*/
|
*/
|
||||||
FinancialMaster selectByPaymentId(String paymentId);
|
FinancialMaster selectByPaymentId(String paymentId);
|
||||||
|
|
||||||
|
void refundSucceeded(String reverseId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@ package com.ghy.payment.service.impl;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.ghy.common.adapay.model.AdapayStatusEnum;
|
import com.ghy.common.adapay.model.AdapayStatusEnum;
|
||||||
import com.ghy.common.core.text.Convert;
|
import com.ghy.common.core.text.Convert;
|
||||||
|
import com.ghy.common.enums.PayStatus;
|
||||||
import com.ghy.common.enums.RefundType;
|
import com.ghy.common.enums.RefundType;
|
||||||
import com.ghy.payment.domain.FinancialChangeRecord;
|
import com.ghy.payment.domain.FinancialChangeRecord;
|
||||||
import com.ghy.payment.mapper.FinancialChangeRecordMapper;
|
import com.ghy.payment.mapper.FinancialChangeRecordMapper;
|
||||||
import com.ghy.payment.service.AdapayService;
|
import com.ghy.payment.service.AdapayService;
|
||||||
import com.ghy.payment.service.FinancialChangeRecordService;
|
import com.ghy.payment.service.FinancialChangeRecordService;
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
@ -23,6 +25,7 @@ import java.util.StringJoiner;
|
||||||
/**
|
/**
|
||||||
* @author clunt
|
* @author clunt
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordService {
|
public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordService {
|
||||||
|
|
||||||
|
|
@ -141,7 +144,10 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe
|
||||||
FinancialChangeRecord update = new FinancialChangeRecord();
|
FinancialChangeRecord update = new FinancialChangeRecord();
|
||||||
update.setId(fcr.getId());
|
update.setId(fcr.getId());
|
||||||
update.setReverseId(response.getString("id"));
|
update.setReverseId(response.getString("id"));
|
||||||
|
update.setPayStatus(PayStatus.REFUNDING.getCode());
|
||||||
update(update);
|
update(update);
|
||||||
|
} else {
|
||||||
|
log.error("改价单退款失败: {}", response.toJSONString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,11 @@ public class FinancialMasterServiceImpl implements FinancialMasterService {
|
||||||
return financialMasterMapper.selectByPaymentId(paymentId);
|
return financialMasterMapper.selectByPaymentId(paymentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refundSucceeded(String reverseId) {
|
||||||
|
financialMasterMapper.refundSucceeded(reverseId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<FinancialMaster> selectByOrderMasterIds(Set<Long> orderMasterIds) {
|
public List<FinancialMaster> selectByOrderMasterIds(Set<Long> orderMasterIds) {
|
||||||
if (CollectionUtils.isEmpty(orderMasterIds)) {
|
if (CollectionUtils.isEmpty(orderMasterIds)) {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
<result property="payStatus" column="pay_status"/>
|
<result property="payStatus" column="pay_status"/>
|
||||||
<result property="payTime" column="pay_time"/>
|
<result property="payTime" column="pay_time"/>
|
||||||
<result property="paymentId" column="payment_id"/>
|
<result property="paymentId" column="payment_id"/>
|
||||||
|
<result property="reverseId" column="reverse_id"/>
|
||||||
<result property="createBy" column="create_by"/>
|
<result property="createBy" column="create_by"/>
|
||||||
<result property="createTime" column="create_time"/>
|
<result property="createTime" column="create_time"/>
|
||||||
<result property="updateBy" column="update_by"/>
|
<result property="updateBy" column="update_by"/>
|
||||||
|
|
@ -27,7 +28,7 @@
|
||||||
|
|
||||||
<sql id="selectFinancialMaster">
|
<sql id="selectFinancialMaster">
|
||||||
SELECT id, dept_id, code, order_master_id, order_master_code, total_money, discount_money, pay_money, server_money,
|
SELECT id, dept_id, code, order_master_id, order_master_code, total_money, discount_money, pay_money, server_money,
|
||||||
pay_type, pay_status, pay_time, payment_id, create_by, create_time, update_by, update_time, remark
|
pay_type, pay_status, pay_time, payment_id, reverse_id, create_by, create_time, update_by, update_time, remark
|
||||||
FROM financial_master
|
FROM financial_master
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|
@ -102,6 +103,7 @@
|
||||||
<if test="payTime != null">pay_time = #{payTime},</if>
|
<if test="payTime != null">pay_time = #{payTime},</if>
|
||||||
<if test="payMoney != null">pay_money = #{payMoney},</if>
|
<if test="payMoney != null">pay_money = #{payMoney},</if>
|
||||||
<if test="paymentId != null and paymentId != ''">payment_id = #{paymentId},</if>
|
<if test="paymentId != null and paymentId != ''">payment_id = #{paymentId},</if>
|
||||||
|
<if test="reverseId != null and reverseId != ''">reverse_id = #{reverseId},</if>
|
||||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||||
update_time = SYSDATE()
|
update_time = SYSDATE()
|
||||||
</set>
|
</set>
|
||||||
|
|
@ -131,6 +133,13 @@
|
||||||
WHERE code = #{orderMasterCode}
|
WHERE code = #{orderMasterCode}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="refundSucceeded">
|
||||||
|
UPDATE financial_master SET
|
||||||
|
pay_status = 3 ,
|
||||||
|
update_time = SYSDATE()
|
||||||
|
WHERE reverse_id = #{reverseId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<insert id="insertFinancialMaster" parameterType="com.ghy.payment.domain.FinancialMaster" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertFinancialMaster" parameterType="com.ghy.payment.domain.FinancialMaster" useGeneratedKeys="true" keyProperty="id">
|
||||||
INSERT INTO financial_master(
|
INSERT INTO financial_master(
|
||||||
<if test="deptId != null">dept_id,</if>
|
<if test="deptId != null">dept_id,</if>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue