提交 dfb730d9 authored 作者: aiqingguo's avatar aiqingguo

违约结算单支付

上级 8f60e4ee
package com.clx.performance.controller.payment; package com.clx.performance.controller.payment;
import com.clx.performance.param.pay.NotifyString; import com.clx.performance.param.pay.NotifyString;
import com.clx.performance.service.breakcontract.BreakContractMqHandlerService;
import com.clx.performance.service.settle.SettlementMqHandlerService; import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Objects; import java.util.Objects;
...@@ -19,8 +21,11 @@ import java.util.Objects; ...@@ -19,8 +21,11 @@ import java.util.Objects;
@Api(tags = "承运端-支付回调") @Api(tags = "承运端-支付回调")
@AllArgsConstructor @AllArgsConstructor
public class PayNotifyController { public class PayNotifyController {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
private final SettlementMqHandlerService settlementMqHandlerService; @Autowired
private BreakContractMqHandlerService breakContractMqHandlerService;
@ApiOperation(value = "用户支付完成回调接口", notes = " <br>By:胡宁宁") @ApiOperation(value = "用户支付完成回调接口", notes = " <br>By:胡宁宁")
@RequestMapping(value = "/userPayNotify", method = RequestMethod.POST) @RequestMapping(value = "/userPayNotify", method = RequestMethod.POST)
...@@ -51,9 +56,13 @@ public class PayNotifyController { ...@@ -51,9 +56,13 @@ public class PayNotifyController {
return new Result<>(); return new Result<>();
} }
if (notify.getCode() != 0) { if (notify.getCode() != 0) {
breakContractMqHandlerService.paySuccess(notify.getOrderNo());
// 支付失败处理 // 支付失败处理
log.info("支付失败处理 唯一id {}", notify.getOrderNo()); log.info("支付失败处理 唯一id {}", notify.getOrderNo());
} else { } else {
breakContractMqHandlerService.payFail(notify.getOrderNo());
// 支付支付成功处理 // 支付支付成功处理
log.info(" 支付支付成功处理 唯一id {}", notify.getOrderNo()); log.info(" 支付支付成功处理 唯一id {}", notify.getOrderNo());
} }
......
...@@ -8,6 +8,9 @@ import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContra ...@@ -8,6 +8,9 @@ import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContra
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
import java.util.List;
/** /**
* @author liruixin * @author liruixin
* Date 2023-10-24 * Date 2023-10-24
...@@ -15,8 +18,13 @@ import com.msl.common.dao.BaseDao; ...@@ -15,8 +18,13 @@ import com.msl.common.dao.BaseDao;
*/ */
public interface BreakContractSettlementDriverDao extends BaseDao<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> { public interface BreakContractSettlementDriverDao extends BaseDao<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> {
boolean updateSettlementStatus(BreakContractSettlementDriver item);
Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo); Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo);
IPage<BreakContractSettlementDriver> pageCarrierBreakContractSettlementDriverList(PageCarrierBreakContractSettlementDriverParam param); IPage<BreakContractSettlementDriver> pageCarrierBreakContractSettlementDriverList(PageCarrierBreakContractSettlementDriverParam param);
List<BreakContractSettlementDriver> listUnpay(LocalDateTime beginTime);
} }
...@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao; import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
import com.clx.performance.mapper.breakcontract.BreakContractSettlementDriverMapper; import com.clx.performance.mapper.breakcontract.BreakContractSettlementDriverMapper;
import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver; import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam; import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
...@@ -13,6 +15,8 @@ import com.msl.common.dao.impl.BaseDaoImpl; ...@@ -13,6 +15,8 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -22,6 +26,14 @@ import java.util.Objects; ...@@ -22,6 +26,14 @@ import java.util.Objects;
*/ */
@Repository @Repository
public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> implements BreakContractSettlementDriverDao { public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> implements BreakContractSettlementDriverDao {
@Override
public boolean updateSettlementStatus(BreakContractSettlementDriver item) {
return update(lUdWrapper()
.eq(BreakContractSettlementDriver::getId, item.getId())
.set(BreakContractSettlementDriver::getSettleStatus, item.getSettleStatus())
);
}
@Override @Override
public Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo) { public Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo) {
return Optional.of(settlementNo) return Optional.of(settlementNo)
...@@ -47,4 +59,12 @@ public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContr ...@@ -47,4 +59,12 @@ public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContr
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query); return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
} }
@Override
public List<BreakContractSettlementDriver> listUnpay(LocalDateTime beginTime) {
return list(lQrWrapper()
.eq(BreakContractSettlementDriver::getSettleStatus, BreakContractSettlementDriverEnum.SettleStatus.NO.getCode())
.gt(BreakContractSettlementDriver::getCreateTime, beginTime)
);
}
} }
package com.clx.performance.job;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.service.breakcontract.BreakContractJobHandlerService;
import com.clx.performance.utils.JobHandlerService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
@Slf4j
@Component
public class BreakContractSettlementJob {
@Autowired
private JobHandlerService jobHandlerService;
@Autowired
private BreakContractSettlementDriverDao breakContractSettlementDriverDao;
@Autowired
private BreakContractJobHandlerService breakContractJobHandlerService;
/**
* 违约结算单支付 (每10分钟)
* @Scheduled(cron = "0 0/10 * * * ?")
*/
@XxlJob("breakContractSettlementPay")
public void breakContractSettlementPay() {
LocalDateTime beginTime = LocalDateTime.now().minusHours(1);
jobHandlerService.handler("违约结算单-支付", ()->{
List<BreakContractSettlementDriver> list = breakContractSettlementDriverDao.listUnpay(beginTime);
log.info("违约结算单支付,数量:{}", list.size());
for (BreakContractSettlementDriver item : list) {
jobHandlerService.subHandler("违约结算单-支付", item.getId(), breakContractJobHandlerService::pay);
}
});
}
}
package com.clx.performance.service.breakcontract;
public interface BreakContractJobHandlerService {
void pay(Integer settlementId);
}
...@@ -9,4 +9,7 @@ public interface BreakContractMqHandlerService { ...@@ -9,4 +9,7 @@ public interface BreakContractMqHandlerService {
void driverRecordAdd(BreakContractDriverRecordAddMqParam mq); void driverRecordAdd(BreakContractDriverRecordAddMqParam mq);
void paySuccess(String settlementNo);
void payFail(String settlementNo);
} }
package com.clx.performance.service.impl.breakcontract;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.service.breakcontract.BreakContractJobHandlerService;
import com.clx.performance.service.payment.PayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j
@Service
public class BreakContractJobHandlerServiceImpl implements BreakContractJobHandlerService {
@Autowired
private BreakContractSettlementDriverDao breakContractSettlementDriverDao;
@Autowired
private PayService payService;
@Override
public void pay(Integer settlementId){
BreakContractSettlementDriver breakContractSettlementDriver = breakContractSettlementDriverDao.getEntityByKey(settlementId).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(breakContractSettlementDriver.getSettleStatus(), BreakContractSettlementDriverEnum.SettleStatus.YES)){
return;
}
pay(breakContractSettlementDriver);
}
/**
* 支付
*/
private void pay(BreakContractSettlementDriver settlement){
// 车主
if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.DRIVER.getCode())){
payService.driverPay(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().intValue());
}
// 平台
else if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())) {
payService.payDriver(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().intValue());
}
}
}
...@@ -113,7 +113,7 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler ...@@ -113,7 +113,7 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
settlement.setChildNo(detail.getChildNo()); settlement.setChildNo(detail.getChildNo());
settlement.setFigure(detail.getFigure()); settlement.setFigure(detail.getFigure());
settlement.setBreakContractRemark(detail.getBreakContractRemark()); settlement.setBreakContractRemark(detail.getBreakContractRemark());
settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.YES.getCode()); settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.NO.getCode());
settlement.setCreateBy(detail.getCreateBy()); settlement.setCreateBy(detail.getCreateBy());
settlement.setCreateName(detail.getCreateName()); settlement.setCreateName(detail.getCreateName());
settlement.setSettlePlatform(BreakContractSettlementDriverEnum.SettlePlatform.MSL.getCode()); settlement.setSettlePlatform(BreakContractSettlementDriverEnum.SettlePlatform.MSL.getCode());
...@@ -124,9 +124,6 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler ...@@ -124,9 +124,6 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
breakContractSettlementDriverDao.saveEntity(settlement); breakContractSettlementDriverDao.saveEntity(settlement);
// 支付
pay(settlement);
//保存结算单日志----创建结算单 //保存结算单日志----创建结算单
breakContractSettlementLogService.saveBreakSettlementLog(settlementNo, breakContractSettlementLogService.saveBreakSettlementLog(settlementNo,
BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(), BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
...@@ -151,7 +148,36 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler ...@@ -151,7 +148,36 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
// 平台 // 平台
else if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())) { else if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())) {
payService.payDriver(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().intValue()); payService.payDriver(settlement.getSettlementNo(), settlement.getTruckOwnUserNo(), settlement.getFigure().intValue());
}
}
@Override
public void paySuccess(String settlementNo){
log.info("违约结算单支付回调, settlementNo:{}", settlementNo);
BreakContractSettlementDriver breakContractSettlementDriver = breakContractSettlementDriverDao.selectBySettlementNo(settlementNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(breakContractSettlementDriver.getSettleStatus(), BreakContractSettlementDriverEnum.SettleStatus.YES.getCode())){
log.info("违约结算单支付回调, 结算单已支付, settlementNo:{}", settlementNo);
return;
}
breakContractSettlementDriver.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.YES.getCode());
breakContractSettlementDriverDao.updateSettlementStatus(breakContractSettlementDriver);
//保存结算单日志
breakContractSettlementLogService.saveBreakSettlementLog(settlementNo,
BreakContractSettlementLogEnum.Type.COMPLETED.getCode(),BreakContractSettlementLogEnum.Type.COMPLETED.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),0L,"系统");
}
@Override
public void payFail(String settlementNo) {
log.info("违约结算单支付失败回调, settlementNo:{}", settlementNo);
BreakContractSettlementDriver breakContractSettlementDriver = breakContractSettlementDriverDao.selectBySettlementNo(settlementNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(breakContractSettlementDriver.getSettleStatus(), BreakContractSettlementDriverEnum.SettleStatus.YES.getCode())){
log.info("违约结算单支付失败回调, 结算单已支付, settlementNo:{}", settlementNo);
return;
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论