登录返回店铺授权过期日期
This commit is contained in:
@@ -46,6 +46,8 @@ public class TbCreditBuyerOrderServiceImpl extends ServiceImpl<TbCreditBuyerOrde
|
||||
@Resource
|
||||
private TbCreditBuyerMapper tbCreditBuyerMapper;
|
||||
@Resource
|
||||
private TbCreditBuyerOrderMapper tbCreditBuyerOrderMapper;
|
||||
@Resource
|
||||
private TbCreditPaymentRecordMapper tbCreditPaymentRecordMapper;
|
||||
@Resource
|
||||
private MpOrderInfoService mpOrderInfoService;
|
||||
@@ -320,39 +322,103 @@ public class TbCreditBuyerOrderServiceImpl extends ServiceImpl<TbCreditBuyerOrde
|
||||
return true;
|
||||
}
|
||||
// 2.部分还款/已还款,删除挂账订单+红冲还款记录,并把已还款金额退回余额或挂账额度
|
||||
if ("partial".equals(dto.getStatus()) || "paid".equals(dto.getStatus())) {
|
||||
// 已还款金额小于退款金额,需要把已还款金额退回余额
|
||||
if (NumberUtil.isLessOrEqual(dto.getPaidAmount(), refundAmount)) {
|
||||
creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), dto.getPaidAmount()));
|
||||
// 这部分需要返回到额度
|
||||
BigDecimal subAmount = NumberUtil.sub(refundAmount, dto.getPaidAmount());
|
||||
// creditBuyer.setCreditAmount(NumberUtil.add(creditBuyer.getCreditAmount(), subAmount));
|
||||
// 已还款金额进行冲红
|
||||
TbCreditPaymentRecord record = new TbCreditPaymentRecord();
|
||||
record.setCreditBuyerId(creditBuyerId);
|
||||
record.setOrderId(orderId);
|
||||
record.setRepaymentAmount(NumberUtil.sub(BigDecimal.ZERO, dto.getPaidAmount()));
|
||||
record.setPaymentMethod("挂账退款");
|
||||
record.setPaymentTime(new Date());
|
||||
record.setRemark(StrUtil.format("挂账订单:{}申请退款¥{}元,还款部分¥{}元已归还至账户余额,剩余¥{}元已归还至挂账额度。", orderInfo.getOrderNo(), refundAmount, dto.getPaidAmount(), subAmount));
|
||||
record.setCreateTime(new Date());
|
||||
tbCreditPaymentRecordMapper.insert(record);
|
||||
tbCreditBuyerService.updateById(creditBuyer);
|
||||
return true;
|
||||
}
|
||||
// 已还款金额大于退款金额,需要把已还款金额退回余额
|
||||
creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), refundAmount));
|
||||
// 已还款金额小于退款金额,需要把已还款金额退回余额,实时恢复挂账额度,然后进行自动还款
|
||||
if (NumberUtil.isLessOrEqual(dto.getPaidAmount(), refundAmount)) {
|
||||
creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), dto.getPaidAmount()));
|
||||
// 这部分需要返回到额度
|
||||
// BigDecimal subAmount = NumberUtil.sub(refundAmount, dto.getPaidAmount());
|
||||
// creditBuyer.setCreditAmount(NumberUtil.add(creditBuyer.getCreditAmount(), subAmount));
|
||||
// 已还款金额进行冲红
|
||||
TbCreditPaymentRecord record = new TbCreditPaymentRecord();
|
||||
record.setCreditBuyerId(creditBuyerId);
|
||||
record.setOrderId(orderId);
|
||||
record.setRepaymentAmount(NumberUtil.sub(BigDecimal.ZERO, refundAmount));
|
||||
record.setRepaymentAmount(NumberUtil.sub(BigDecimal.ZERO, dto.getPaidAmount()));
|
||||
record.setPaymentMethod("挂账退款");
|
||||
record.setPaymentTime(new Date());
|
||||
record.setRemark(StrUtil.format("挂账订单:{}申请退款¥{}元,还款部分¥{}元已归还至账户余额。", orderInfo.getOrderNo(), refundAmount, refundAmount));
|
||||
record.setRemark(StrUtil.format("挂账订单:{},申请退款¥{}元,还款部分¥{}元已归还至账户余额,挂账额度已恢复。", orderInfo.getOrderNo(), refundAmount, dto.getPaidAmount()));
|
||||
record.setCreateTime(new Date());
|
||||
tbCreditPaymentRecordMapper.insert(record);
|
||||
tbCreditBuyerService.updateById(creditBuyer);
|
||||
// 回置挂账订单数据
|
||||
dto.setPaidAmount(NumberUtil.sub(dto.getPaidAmount(), refundAmount));
|
||||
if (NumberUtil.equals(dto.getPaidAmount(), BigDecimal.ZERO)) {
|
||||
dto.setStatus("unpaid");
|
||||
} else if (NumberUtil.isGreater(dto.getPaidAmount(), BigDecimal.ZERO) && NumberUtil.isLess(dto.getPaidAmount(), dto.getPayAmount())) {
|
||||
dto.setStatus("partial");
|
||||
}
|
||||
dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), dto.getPaidAmount()));
|
||||
tbCreditBuyerOrderMapper.update(
|
||||
Wrappers.<TbCreditBuyerOrder>lambdaUpdate()
|
||||
.eq(TbCreditBuyerOrder::getId, dto.getId())
|
||||
.set(TbCreditBuyerOrder::getPaidAmount, dto.getPaidAmount())
|
||||
.set(TbCreditBuyerOrder::getStatus, dto.getStatus()));
|
||||
|
||||
} else {
|
||||
// 1.把退款归还至余额
|
||||
creditBuyer.setAccountBalance(NumberUtil.add(creditBuyer.getAccountBalance(), refundAmount));
|
||||
// 2.保存挂账退款记录
|
||||
TbCreditPaymentRecord record = new TbCreditPaymentRecord();
|
||||
record.setCreditBuyerId(creditBuyerId);
|
||||
record.setOrderId(orderId);
|
||||
record.setRepaymentAmount(refundAmount);
|
||||
record.setPaymentMethod("挂账退款");
|
||||
record.setPaymentTime(new Date());
|
||||
record.setRemark(StrUtil.format("挂账订单:{},申请退款¥{}元,退款金额¥{}元已归还至账户余额,挂账额度已恢复。", orderInfo.getOrderNo(), refundAmount, refundAmount));
|
||||
record.setCreateTime(new Date());
|
||||
tbCreditPaymentRecordMapper.insert(record);
|
||||
tbCreditBuyerService.updateById(creditBuyer);
|
||||
// 3.修正挂账订单已还款数据
|
||||
dto.setPaidAmount(NumberUtil.sub(dto.getPaidAmount(), refundAmount));
|
||||
if (NumberUtil.equals(dto.getPaidAmount(), BigDecimal.ZERO)) {
|
||||
dto.setStatus("unpaid");
|
||||
} else if (NumberUtil.isGreater(dto.getPaidAmount(), BigDecimal.ZERO) && NumberUtil.isLess(dto.getPaidAmount(), dto.getPayAmount())) {
|
||||
dto.setStatus("partial");
|
||||
}
|
||||
dto.setUnpaidAmount(NumberUtil.sub(dto.getPayAmount(), dto.getPaidAmount()));
|
||||
tbCreditBuyerOrderMapper.update(
|
||||
Wrappers.<TbCreditBuyerOrder>lambdaUpdate()
|
||||
.eq(TbCreditBuyerOrder::getId, dto.getId())
|
||||
.set(TbCreditBuyerOrder::getPaidAmount, dto.getPaidAmount())
|
||||
.set(TbCreditBuyerOrder::getStatus, dto.getStatus()));
|
||||
// 4.自动还款
|
||||
BigDecimal accountBalance = creditBuyer.getAccountBalance();
|
||||
BigDecimal sub = NumberUtil.sub(creditBuyer.getAccountBalance(), dto.getUnpaidAmount());
|
||||
// 4.1.可以还清
|
||||
if (NumberUtil.isGreaterOrEqual(sub, BigDecimal.ZERO)) {
|
||||
creditBuyer.setAccountBalance(sub);
|
||||
tbCreditBuyerOrderMapper.update(
|
||||
Wrappers.<TbCreditBuyerOrder>lambdaUpdate()
|
||||
.eq(TbCreditBuyerOrder::getId, dto.getId())
|
||||
.set(TbCreditBuyerOrder::getPaidAmount, NumberUtil.add(dto.getPaidAmount(), dto.getUnpaidAmount()))
|
||||
.set(TbCreditBuyerOrder::getStatus, "paid"));
|
||||
TbCreditPaymentRecord auto = new TbCreditPaymentRecord();
|
||||
auto.setCreditBuyerId(creditBuyerId);
|
||||
auto.setOrderId(orderId);
|
||||
auto.setRepaymentAmount(dto.getUnpaidAmount());
|
||||
auto.setPaymentMethod("自动还款");
|
||||
auto.setPaymentTime(new Date());
|
||||
auto.setRemark(StrUtil.format("挂账订单:{},已挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, dto.getUnpaidAmount()));
|
||||
auto.setCreateTime(new Date());
|
||||
tbCreditPaymentRecordMapper.insert(auto);
|
||||
} else {
|
||||
// 4.2.可以还部分
|
||||
creditBuyer.setAccountBalance(BigDecimal.ZERO);
|
||||
tbCreditBuyerOrderMapper.update(
|
||||
Wrappers.<TbCreditBuyerOrder>lambdaUpdate()
|
||||
.eq(TbCreditBuyerOrder::getId, dto.getId())
|
||||
.set(TbCreditBuyerOrder::getPaidAmount, NumberUtil.add(dto.getPaidAmount(), accountBalance))
|
||||
.set(TbCreditBuyerOrder::getStatus, "partial"));
|
||||
TbCreditPaymentRecord auto = new TbCreditPaymentRecord();
|
||||
auto.setCreditBuyerId(creditBuyerId);
|
||||
auto.setOrderId(orderId);
|
||||
auto.setRepaymentAmount(accountBalance);
|
||||
auto.setPaymentMethod("自动还款");
|
||||
auto.setPaymentTime(new Date());
|
||||
auto.setRemark(StrUtil.format("挂账订单:{},已挂账金额¥{},账户余额¥{},自动还款¥{}。", orderInfo.getOrderNo(), dto.getUnpaidAmount(), accountBalance, accountBalance));
|
||||
auto.setCreateTime(new Date());
|
||||
tbCreditPaymentRecordMapper.insert(auto);
|
||||
}
|
||||
tbCreditBuyerService.updateById(creditBuyer);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user