|
@@ -259,25 +259,116 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
|
|
|
* 账户资金流水表编辑
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = {Exception.class})
|
|
|
+ @DSTransactional
|
|
|
public void edit(AccountRunningWater accountRunningWaterDto) {
|
|
|
- // //查询资金流水表的数据
|
|
|
- // AccountRunningWater accountRunningWater = this.getById(accountRunningWaterDto.getId());
|
|
|
- //
|
|
|
- // //修改账户余额表的余额
|
|
|
- // AccountRemainder accountRemainder = accountRemainderService.getOne(Wrappers.<AccountRemainder>lambdaQuery()
|
|
|
- // .eq(AccountRemainder::getAccountManagementId,accountRunningWater.getAccountManagementId())
|
|
|
- // .eq(AccountRemainder::getCurrency,accountRunningWater.getCurrency())
|
|
|
- // );
|
|
|
- // if (accountRemainder.getStatus().equals("10")){
|
|
|
- // if (accountRemainder.getRemainder().compareTo(accountRunningWater.getAmount())==1)
|
|
|
- // }
|
|
|
+ //先回滚历史数据
|
|
|
+ //获取历史的流水信息信息
|
|
|
+ AccountRunningWater oldAccountRunningWater = getById(accountRunningWaterDto.getId());
|
|
|
+ //获取余额
|
|
|
+ AccountRemainder accountRemainder = accountRemainderService.getOne(q -> q
|
|
|
+ .eq(AccountRemainder::getAccountManagementId, oldAccountRunningWater.getAccountManagementId())
|
|
|
+ .eq(AccountRemainder::getCurrency, oldAccountRunningWater.getCurrency())
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(accountRemainder)) {
|
|
|
+ throw new ServiceException("历史数据 该账户不存在此币种,请前往资金账户添加");
|
|
|
+ }
|
|
|
+ boolean update = false;
|
|
|
+ if ("10".equals(oldAccountRunningWater.getStatus())) {
|
|
|
+ BigDecimal subtract = accountRemainder.getRemainder().subtract(oldAccountRunningWater.getAmount());
|
|
|
+ if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ throw new ServiceException("修改前数据 账户余额不足");
|
|
|
+ }
|
|
|
+ update = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder - " + oldAccountRunningWater.getAmount())
|
|
|
+ .setSql("change_remainder = " + oldAccountRunningWater.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
+ .apply("remainder - {0} >= 0", oldAccountRunningWater.getAmount())
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ update = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder + " + oldAccountRunningWater.getAmount())
|
|
|
+ .setSql("change_remainder = " + oldAccountRunningWater.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ Assert.eqTrue(update, "余额回滚操作失败");
|
|
|
+ //再操作修改后数据
|
|
|
+ //获取余额
|
|
|
+ AccountRemainder accountRemainder1 = accountRemainderService.getOne(q -> q
|
|
|
+ .eq(AccountRemainder::getAccountManagementId, accountRunningWaterDto.getAccountManagementId())
|
|
|
+ .eq(AccountRemainder::getCurrency, accountRunningWaterDto.getCurrency())
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(accountRemainder)) {
|
|
|
+ throw new ServiceException("修改后数据 该账户不存在此币种,请前往资金账户添加");
|
|
|
+ }
|
|
|
+ boolean update1 = false;
|
|
|
+ if ("10".equals(accountRunningWaterDto.getStatus())) {
|
|
|
+ update1 = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder + " + accountRunningWaterDto.getAmount())
|
|
|
+ .setSql("change_remainder = " + accountRunningWaterDto.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder1.getId())
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ BigDecimal subtract = accountRemainder1.getRemainder().subtract(accountRunningWaterDto.getAmount());
|
|
|
+ if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ throw new ServiceException("修改后数据 账户余额不足");
|
|
|
+ }
|
|
|
+ update1 = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder - " + accountRunningWaterDto.getAmount())
|
|
|
+ .setSql("change_remainder = " + accountRunningWaterDto.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder1.getId())
|
|
|
+ .apply("remainder - {0} >= 0", accountRunningWaterDto.getAmount())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ Assert.eqTrue(update1, "余额修改操作失败");
|
|
|
|
|
|
this.updateById(accountRunningWaterDto);
|
|
|
}
|
|
|
|
|
|
+ @DSTransactional
|
|
|
@Override
|
|
|
public void delete(Long id) {
|
|
|
+ AccountRunningWater accountRunningWater = getById(id);
|
|
|
+ Assert.notEmpty(accountRunningWater, "获取不到该流水信息");
|
|
|
+
|
|
|
+
|
|
|
+ // 修改账户余额表的余额
|
|
|
+ AccountRemainder accountRemainder = accountRemainderService.getOne(q -> q
|
|
|
+ .eq(AccountRemainder::getAccountManagementId, accountRunningWater.getAccountManagementId())
|
|
|
+ .eq(AccountRemainder::getCurrency, accountRunningWater.getCurrency())
|
|
|
+ );
|
|
|
+ if (ObjectUtil.isEmpty(accountRemainder)) {
|
|
|
+ throw new ServiceException("该账户不存在此币种,请前往资金账户添加");
|
|
|
+ }
|
|
|
+ BigDecimal amount = accountRunningWater.getAmount();
|
|
|
+ String status = accountRunningWater.getStatus();
|
|
|
+ BigDecimal remainder = accountRemainder.getRemainder();
|
|
|
+
|
|
|
+ accountRemainder.setStatus(status);
|
|
|
+ accountRemainder.setChangeRemainder(amount);
|
|
|
+
|
|
|
+ boolean update = false;
|
|
|
+ if ("10".equals(accountRunningWater.getStatus())) {
|
|
|
+ BigDecimal subtract = remainder.subtract(amount);
|
|
|
+ if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ throw new ServiceException("账户余额不足");
|
|
|
+ }
|
|
|
+
|
|
|
+ update = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder - " + accountRunningWater.getAmount())
|
|
|
+ .setSql("change_remainder = " + accountRunningWater.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
+ .apply("remainder - {0} >= 0", accountRunningWater.getAmount())
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ update = accountRemainderService.update(q -> q
|
|
|
+ .setSql("remainder = remainder + " + accountRunningWater.getAmount())
|
|
|
+ .setSql("change_remainder = " + accountRunningWater.getAmount())
|
|
|
+ .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ Assert.eqTrue(update, "余额操作失败操作失败");
|
|
|
+
|
|
|
this.removeById(id);
|
|
|
}
|
|
|
|