|
@@ -62,14 +62,21 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
|
|
|
@Override
|
|
|
public void insertAdditionalPaymen(AdditionalPaymentDto additionalPaymentDto) {
|
|
|
if (additionalPaymentDto.getType().equals("customer")) {
|
|
|
+ additionalPaymentDto.setId(jedisCluster.incr(GLOBAL_ID_INCR.key()));
|
|
|
additionalPaymentDto.setDistinguish(2);
|
|
|
// TODO 客户加款
|
|
|
int count = this.additionalPayment(additionalPaymentDto);
|
|
|
- if (count > 0) {
|
|
|
- // TODO 加款成功之后,把加款的金额写入数据库
|
|
|
- redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.getLong(additionalPaymentDto.getRelationId()), "add", additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue(), 0L);
|
|
|
+ // TODO 加款操作
|
|
|
+ Long amount = redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.parseLong(additionalPaymentDto.getRelationId()), "add", additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue(), 0L);
|
|
|
+ if (count > 0 && ObjectUtil.isNotEmpty(amount)) {
|
|
|
+ log.info("客户加款成功,客户编号为:【{}】,加款金额为:【{}】", additionalPaymentDto.getRelationId(), additionalPaymentDto.getAmount());
|
|
|
+ } else {
|
|
|
+ // TODO 客户加款失败,删除该条加款记录
|
|
|
+ log.info("加款失败,加款编号为:【{}】将删除此条记录,客户编号为:【{}】,加款金额为:【{}】", additionalPaymentDto.getId(), additionalPaymentDto.getRelationId(), additionalPaymentDto.getAmount());
|
|
|
+ baseMapper.deleteById(additionalPaymentDto.getId());
|
|
|
}
|
|
|
} else if (additionalPaymentDto.getType().equals("suppler")) {
|
|
|
+ additionalPaymentDto.setId(jedisCluster.incr(GLOBAL_ID_INCR.key()));
|
|
|
additionalPaymentDto.setDistinguish(1);
|
|
|
// TODO 供应商加款
|
|
|
this.additionalPayment(additionalPaymentDto);
|
|
@@ -88,7 +95,7 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(additionalPaymentDto.getType()) && ObjectUtil.isNotEmpty(additionalPaymentDto.getRelationId())) {
|
|
|
AdditionalPayment payment = AdditionalPayment.builder()
|
|
|
- .id(jedisCluster.incr(GLOBAL_ID_INCR.key()))
|
|
|
+ .id(additionalPaymentDto.getId())
|
|
|
.cardNo(additionalPaymentDto.getCardNo())
|
|
|
.bankDeposit(additionalPaymentDto.getBankDeposit())
|
|
|
.account(additionalPaymentDto.getAccount())
|
|
@@ -160,15 +167,20 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
|
|
|
additionalPaymentDto.setUndo(1);
|
|
|
// TODO 实例化对象
|
|
|
AdditionalPayment payment = this.formatAdditionalPaymentDto(additionalPaymentDto);
|
|
|
- // TODO 修改记录的撤销状态
|
|
|
- int count = baseMapper.updateById(payment);
|
|
|
+
|
|
|
// TODO 获取客户授信金额
|
|
|
CustomerInfo customerInfo = customerService.getcustomerOne(Long.parseLong(payment.getRelationId()));
|
|
|
- if (count > 0) {
|
|
|
- // TODO 撤销
|
|
|
- Long amount = redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.parseLong(payment.getRelationId()), "sub", payment.getAmount(), customerInfo.getCreditAmount());
|
|
|
- log.info("客户加款撤销。 客户编号为:【{}】 撤销金额为:【{}】 ,授信额度为:【{}】 剩余额度为:【{}】", payment.getRelationId(), additionalPaymentDto.getAmount(), new BigDecimal(customerInfo.getCreditAmount()).divide(new BigDecimal("10000"), 2, BigDecimal.ROUND_DOWN), new BigDecimal(amount).divide(new BigDecimal("10000"), 2, BigDecimal.ROUND_DOWN));
|
|
|
+ // TODO 进行账户撤销
|
|
|
+ Long amount = redisAmountScript.changeAmount(CUSTOMER_AMOUNT.key(), Long.parseLong(payment.getRelationId()), "sub", payment.getAmount(), customerInfo.getCreditAmount());
|
|
|
+ if (ObjectUtil.isNotEmpty(amount)) {
|
|
|
+ // TODO 修改记录的撤销状态
|
|
|
+ baseMapper.updateById(payment);
|
|
|
+ log.info("客户款项撤销。 客户编号为:【{}】 撤销金额为:【{}】 ,授信额度为:【{}】 剩余额度为:【{}】", payment.getRelationId(), additionalPaymentDto.getAmount(), new BigDecimal(customerInfo.getCreditAmount()).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN), new BigDecimal(amount).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN));
|
|
|
return payment.getRelationId().concat("_").concat(amount.toString());
|
|
|
+ } else {
|
|
|
+ // TODO 撤销失败的处理
|
|
|
+ log.info("客户编号为“【{}】 款项撤销失败,撤销金额为:【{}】", additionalPaymentDto.getRelationId(), additionalPaymentDto.getAmount().divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN));
|
|
|
+ throw new BaseException(Status.ACCOUNT_CANCEL_FAIL.status(), Status.ACCOUNT_CANCEL_FAIL.message());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -180,7 +192,7 @@ public class AdditionalPaymentServiceImpl extends ServiceImpl<AdditionalPaymentM
|
|
|
return AdditionalPayment.builder()
|
|
|
.id(additionalPaymentDto.getId())
|
|
|
.relationId(additionalPaymentDto.getRelationId())
|
|
|
- .amount(additionalPaymentDto.getAmount().multiply(new BigDecimal(10000)).longValue())
|
|
|
+ .amount(additionalPaymentDto.getAmount().longValue())
|
|
|
.undo(additionalPaymentDto.getUndo())
|
|
|
.build();
|
|
|
}
|