Commit 3d6c49b3 by 程裕兵

feat:refund

parent 99bddebf
package com.jiejing.fitness.finance.service.pay.convert;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.jiejing.common.exception.BizException;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.enums.finance.BrandCashierTransStateEnum;
import com.jiejing.fitness.enums.finance.BrandCashierTransTypeEnum;
import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO;
import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO.CheckRefundCodeEnum;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.service.enums.FinanceErrorEnums;
import com.jiejing.fitness.finance.service.pay.params.StudioMerchantRefundParams;
import com.jiejing.fitness.finance.service.utils.FeeUtil;
import com.jiejing.fitness.finance.service.utils.MoneyUtil;
......@@ -99,7 +101,7 @@ public class RefundConvert {
case PROCESS:
return BrandCashierTransStateEnum.REFUNDING;
default:
return null;
throw new BizException(FinanceErrorEnums.NOT_SUPPORT_TYPE);
}
}
......@@ -129,4 +131,28 @@ public class RefundConvert {
return StudioMerchantRefundVO.builder().code(code.getCode()).failMessage(code.getMessage()).build();
}
public static RefundEvent convertRefundEvent(StudioCashierRecord refund, StudioMerchantRefundVO vo) {
return RefundEvent.builder()
.id(refund.getId())
.transNo(refund.getTransNo())
.thirdTransNo(vo.getThirdTransNo())
.refundState(convertTransState(vo.getRefundState()).getCode())
.failMessage(vo.getFailMessage())
.successTime(vo.getSuccessTime())
.updateTime(new Date())
.build();
}
public static RefundEvent convertRefundEvent(StudioCashierRecord refund, RefundVO vo) {
return RefundEvent.builder()
.id(refund.getId())
.transNo(refund.getTransNo())
.thirdTransNo(vo.getThirdTransNo())
.refundState(convertTransState(vo.getRefundState()).getCode())
.failMessage(vo.getFailMessage())
.successTime(vo.getSuccessTime())
.updateTime(new Date())
.build();
}
}
......@@ -112,16 +112,15 @@ public class RefundServiceImpl implements RefundService {
StudioMerchantRefundVO checkResult = this.checkBeforeMerchantRefund(params);
if (CheckRefundCodeEnum.isFail(checkResult.getCode())) {
StudioCashierRecord toModify = RefundConvert.convertRefundFail(refund, checkResult);
studioCashierRecordRpService.updateById(toModify);
this.refundCallback(RefundConvert.convertRefundEvent(refund, checkResult));
return checkResult;
}
RefundPayRequest request = RefundConvert.convert(params, refund);
RefundVO vo = payRpcService.refund(request);
StudioCashierRecord toModify = RefundConvert.convertRefund(refund, vo);
studioCashierRecordRpService.updateById(toModify);
this.refundCallback(RefundConvert.convertRefundEvent(refund, vo));
return RefundConvert.convertRefundVO(refund, vo);
}
......@@ -147,18 +146,25 @@ public class RefundServiceImpl implements RefundService {
}
private void doAfterRefund(RefundEvent event, StudioCashierRecord record) {
if (!TransStateEnums.SUCCESS.getCode().equals(event.getRefundState())) {
return;
TransStateEnums state = TransStateEnums.getByCode(event.getRefundState());
switch (state) {
case SUCCESS:
executor.execute(() -> this.sendRefundMessage(event, record, "CASHIER_REFUND_SUCCESS"));
break;
case FAIL:
executor.execute(() -> this.sendRefundMessage(event, record, "CASHIER_REFUND_FAIL"));
break;
default:
break;
}
executor.execute(() -> this.sendRefundSuccessMessage(event, record));
}
private void sendRefundSuccessMessage(RefundEvent e, StudioCashierRecord record) {
private void sendRefundMessage(RefundEvent e, StudioCashierRecord record, String bizType) {
List<Long> targetIds = this.getAdminIds(record.getStudioId());
if (CollectionUtil.isEmpty(targetIds)) {
return;
}
List<Map<String, Object>> paramList = targetIds.stream().map(targetId -> {
Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("targetId", targetId);
......@@ -174,7 +180,7 @@ public class RefundServiceImpl implements RefundService {
event.setCovertTarget(true);
event.setEventId(IdWorker.getId());
event.setSourceId(record.getStudioId());
event.setBizType("CASHIER_REFUND_SUCCESS");
event.setBizType(bizType);
event.setParams(paramList);
EventAgent.of(SendCommonMsgEvent.class).triggerEvent(event);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment