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

违约结算单支付

上级 8f60e4ee
package com.clx.performance.controller.payment;
import com.clx.performance.param.pay.NotifyString;
import com.clx.performance.service.breakcontract.BreakContractMqHandlerService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
......@@ -19,8 +21,11 @@ import java.util.Objects;
@Api(tags = "承运端-支付回调")
@AllArgsConstructor
public class PayNotifyController {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
private final SettlementMqHandlerService settlementMqHandlerService;
@Autowired
private BreakContractMqHandlerService breakContractMqHandlerService;
@ApiOperation(value = "用户支付完成回调接口", notes = " <br>By:胡宁宁")
@RequestMapping(value = "/userPayNotify", method = RequestMethod.POST)
......@@ -51,9 +56,13 @@ public class PayNotifyController {
return new Result<>();
}
if (notify.getCode() != 0) {
breakContractMqHandlerService.paySuccess(notify.getOrderNo());
// 支付失败处理
log.info("支付失败处理 唯一id {}", notify.getOrderNo());
} else {
breakContractMqHandlerService.payFail(notify.getOrderNo());
// 支付支付成功处理
log.info(" 支付支付成功处理 唯一id {}", notify.getOrderNo());
}
......
......@@ -8,6 +8,9 @@ import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContra
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author liruixin
* Date 2023-10-24
......@@ -15,8 +18,13 @@ import com.msl.common.dao.BaseDao;
*/
public interface BreakContractSettlementDriverDao extends BaseDao<BreakContractSettlementDriverMapper, BreakContractSettlementDriver, Integer> {
boolean updateSettlementStatus(BreakContractSettlementDriver item);
Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo);
IPage<BreakContractSettlementDriver> pageCarrierBreakContractSettlementDriverList(PageCarrierBreakContractSettlementDriverParam param);
List<BreakContractSettlementDriver> listUnpay(LocalDateTime beginTime);
}
......@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.breakcontract.BreakContractSettlementDriverDao;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
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.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam;
import com.msl.common.base.Optional;
......@@ -13,6 +15,8 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
......@@ -22,6 +26,14 @@ import java.util.Objects;
*/
@Repository
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
public Optional<BreakContractSettlementDriver> selectBySettlementNo(String settlementNo) {
return Optional.of(settlementNo)
......@@ -47,4 +59,12 @@ public class BreakContractSettlementDriverDaoImpl extends BaseDaoImpl<BreakContr
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 {
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
settlement.setChildNo(detail.getChildNo());
settlement.setFigure(detail.getFigure());
settlement.setBreakContractRemark(detail.getBreakContractRemark());
settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.YES.getCode());
settlement.setSettleStatus(BreakContractSettlementDriverEnum.SettleStatus.NO.getCode());
settlement.setCreateBy(detail.getCreateBy());
settlement.setCreateName(detail.getCreateName());
settlement.setSettlePlatform(BreakContractSettlementDriverEnum.SettlePlatform.MSL.getCode());
......@@ -124,9 +124,6 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
breakContractSettlementDriverDao.saveEntity(settlement);
// 支付
pay(settlement);
//保存结算单日志----创建结算单
breakContractSettlementLogService.saveBreakSettlementLog(settlementNo,
BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
......@@ -151,7 +148,36 @@ public class BreakContractMqHandlerServiceImpl implements BreakContractMqHandler
// 平台
else if (Objects.equals(settlement.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())) {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论