Commit 3d6c49b3 by 程裕兵

feat:refund

parent 99bddebf
package com.jiejing.fitness.finance.service.pay.convert; package com.jiejing.fitness.finance.service.pay.convert;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.jiejing.common.exception.BizException;
import com.jiejing.common.utils.convert.BeanUtil; import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.enums.finance.BrandCashierTransStateEnum; import com.jiejing.fitness.enums.finance.BrandCashierTransStateEnum;
import com.jiejing.fitness.enums.finance.BrandCashierTransTypeEnum; 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;
import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO.CheckRefundCodeEnum; import com.jiejing.fitness.finance.api.merchant.vo.StudioMerchantRefundVO.CheckRefundCodeEnum;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord; 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.pay.params.StudioMerchantRefundParams;
import com.jiejing.fitness.finance.service.utils.FeeUtil; import com.jiejing.fitness.finance.service.utils.FeeUtil;
import com.jiejing.fitness.finance.service.utils.MoneyUtil; import com.jiejing.fitness.finance.service.utils.MoneyUtil;
...@@ -99,7 +101,7 @@ public class RefundConvert { ...@@ -99,7 +101,7 @@ public class RefundConvert {
case PROCESS: case PROCESS:
return BrandCashierTransStateEnum.REFUNDING; return BrandCashierTransStateEnum.REFUNDING;
default: default:
return null; throw new BizException(FinanceErrorEnums.NOT_SUPPORT_TYPE);
} }
} }
...@@ -129,4 +131,28 @@ public class RefundConvert { ...@@ -129,4 +131,28 @@ public class RefundConvert {
return StudioMerchantRefundVO.builder().code(code.getCode()).failMessage(code.getMessage()).build(); 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 { ...@@ -112,16 +112,15 @@ public class RefundServiceImpl implements RefundService {
StudioMerchantRefundVO checkResult = this.checkBeforeMerchantRefund(params); StudioMerchantRefundVO checkResult = this.checkBeforeMerchantRefund(params);
if (CheckRefundCodeEnum.isFail(checkResult.getCode())) { if (CheckRefundCodeEnum.isFail(checkResult.getCode())) {
StudioCashierRecord toModify = RefundConvert.convertRefundFail(refund, checkResult); this.refundCallback(RefundConvert.convertRefundEvent(refund, checkResult));
studioCashierRecordRpService.updateById(toModify);
return checkResult; return checkResult;
} }
RefundPayRequest request = RefundConvert.convert(params, refund); RefundPayRequest request = RefundConvert.convert(params, refund);
RefundVO vo = payRpcService.refund(request); RefundVO vo = payRpcService.refund(request);
StudioCashierRecord toModify = RefundConvert.convertRefund(refund, vo); this.refundCallback(RefundConvert.convertRefundEvent(refund, vo));
studioCashierRecordRpService.updateById(toModify);
return RefundConvert.convertRefundVO(refund, vo); return RefundConvert.convertRefundVO(refund, vo);
} }
...@@ -147,18 +146,25 @@ public class RefundServiceImpl implements RefundService { ...@@ -147,18 +146,25 @@ public class RefundServiceImpl implements RefundService {
} }
private void doAfterRefund(RefundEvent event, StudioCashierRecord record) { private void doAfterRefund(RefundEvent event, StudioCashierRecord record) {
if (!TransStateEnums.SUCCESS.getCode().equals(event.getRefundState())) { TransStateEnums state = TransStateEnums.getByCode(event.getRefundState());
return; 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()); List<Long> targetIds = this.getAdminIds(record.getStudioId());
if (CollectionUtil.isEmpty(targetIds)) { if (CollectionUtil.isEmpty(targetIds)) {
return; return;
} }
List<Map<String, Object>> paramList = targetIds.stream().map(targetId -> { List<Map<String, Object>> paramList = targetIds.stream().map(targetId -> {
Map<String, Object> paramMap = new HashMap<>(1); Map<String, Object> paramMap = new HashMap<>(1);
paramMap.put("targetId", targetId); paramMap.put("targetId", targetId);
...@@ -174,7 +180,7 @@ public class RefundServiceImpl implements RefundService { ...@@ -174,7 +180,7 @@ public class RefundServiceImpl implements RefundService {
event.setCovertTarget(true); event.setCovertTarget(true);
event.setEventId(IdWorker.getId()); event.setEventId(IdWorker.getId());
event.setSourceId(record.getStudioId()); event.setSourceId(record.getStudioId());
event.setBizType("CASHIER_REFUND_SUCCESS"); event.setBizType(bizType);
event.setParams(paramList); event.setParams(paramList);
EventAgent.of(SendCommonMsgEvent.class).triggerEvent(event); 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