Angular中复杂的财务计算/业务规则

时间:2014-12-05 10:42:10

标签: c# angularjs web-services soa business-logic

我正在考虑使用Angular开发SPA应用程序。

我们面临的挑战之一是,当用户在表单上输入值时,我们会进行大量基于财务的计算。这是一个简化的例子:

  

用户正在销售交易条目表单中输入明细行。   当他们输入净额时,系统应计算销售额   根据输入的净值计算的税额和总价值(正如我所说,   它确实比这复杂得多)。   这里需要注意的重要一点是,当用户选中“净值”字段时,他们应该会看到“税”和“总值”字段更新。

所以我在这里看到两个高级选项:

  1. 在JavaScript中编码此计算
  2. 拨打服务电话 执行计算
  3. 无论哪种方式,我都希望使用计算结果更新Angular样式模型,这将导致视图更新。

    在可能的情况下,我更愿意通过服务调用来实现这一点,因为它打开了将来重新使用其他客户端逻辑的大门。我还认为在C#中编写这种逻辑应该更快开发和更易于维护(并将逻辑保存在一个地方)。

    理想情况下,我希望在为事务建模的服务中的C#实体中使用此逻辑。

    因此,我应如何调用此类服务​​器端逻辑?

    1. 我应该以某种方式传递整个客户端的表示 模型备份到服务并让它计算其他值? 不知道如何告诉服务哪个方面我会这样做 值实际上需要计算。
    2. 或者我应该(很多)个人 名为CalculateTax(net,taxPercentage)之类的服务方法 返回税额。
    3. 或者我在这里完全没有其他方法或模式吗?

      非常感谢

3 个答案:

答案 0 :(得分:1)

我会创建一个API端点,它接收您需要的计算和值,并返回结果。这与从普通CRUD API获取单个记录相同,使您的角度服务非常简单:

angular.module('fin',[]).service('calculation', function($http) {
    return {
        getResult: function(calcMethod, values){
             return $http({
                url: 'http://backend.com/calculate',
                method: 'GET',
                params: {
                    calcMethod: calcMethod,
                    values: values
                }
             });
        }
    }
}

然后你可以从你的控制器打电话,就像这样:

Service.getResult('Sales Tax',[$scope.value1, $scope.value2]).success( function(res) {
    $scope.result = res;
});

答案 1 :(得分:0)

我热爱javascript,我永远不会相信财务计算,特别是在客户端。

但是。这取决于你究竟需要什么来计算。我的意思是:

1)(你的情况)服务器给你"来源"价值(如用户数量等)和百分比(或用户输入),并且您不会将此数据传递给服务器,那么您肯定可以,而且我认为应该在客户端执行此操作。

2)如果你有价格和物品数量,你应该在服务器上计算它(你可以在UI上进行预先计算),但也可以从服务器确认。

答案 2 :(得分:0)

现在根据您提供的业务情景,似乎计算是这样的,您不希望别人知道它是如何完成的。计算最好保留在服务器端 如果您突出显示净额的字段,您可以致电服务器以获取销售税和您计算的其他值。

你可以这样经历。

您有计算销售税的方法。现在这需要净额。因此,当您输入净额并选择离开该字段时,您可以调用单个服务以获取销售税金额和总金额。在这里,您对服务的输入不是整个客户端,而只是与控制器绑定的净额。