有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何计算、控制和更新客户信用?

我有一个财务系统,我必须设计一个用于保存、更新和控制限制的模块。 您可以知道每个客户都有一个UserID,每个UserID每天都有一个最大信用额度。例如,UserID=12的MaxAmountPerDay=10$CurrentAmountPerDay

首先,我想设计一个简单的模块并定义一个表,如下所示:

  User ID | MaxAmountPerDay | CurrentAmountPerDay
-------------------------------------------------
  12     | 10              | 0
  25     | 100             | 84

现在您可以想象,当用户ID为12的客户完成了一笔交易时,我必须控制交易金额+当前金额>;最大金额然后抛出异常,否则我必须执行事务并更新当前金额,当更新后发生异常时,我必须回滚更新操作。(更新和回滚在不同的数据库事务中,因此回滚是具有新数量的相同更新)

在我做这个设计之前,我决定寻找一个更好的解决方案,甚至是一个开源框架,因为我想我的客户的需求在未来会发生变化,例如,他们可能需要maxamontpermonth,或者一些我现在不知道的需求


共 (2) 个答案

  1. # 1 楼答案

    我认为您可以使用数据库触发器来实现这个需求。它将帮助你实现你现在想要的

  2. # 2 楼答案

    数据可能来自数据库表或任何支持服务,这并不是一个真正的问题
    您只需要一些数据来创建有效的用户事务

    关于框架,您可以使用BPM,但对于如此小的需求,这是一项开销
    为改进验证规则维护,您可以做的一件事是 解耦每个特定规则
    今天,您有一个验证规则,但在将来,很可能会有多个规则使用户事务无效
    要处理这些问题,您只需定义一系列规则:

    TransactionRule rulesChain;

    依赖于验证接口的:

    public interface TransactionRule{
      void valid(UserInformation userInformation) throw ValidationException;
    }
    

    链的每个元素都是这个接口的一个实现
    当您在规则链上调用valid()时,它将应用第一条规则
    如果用户信息遵守该规则,则将其转交给下一个规则
    等等。。。 一旦一个元素抛出ValidationException,就意味着不遵守规则,因此验证结束,必须取消事务

    提议的方式可以被视为责任链模式的一个轻量级版本
    我说“轻”作为规则执行的顺序在您的案例中不应该很重要,而在这种模式中它通常很重要