2

我的数据库中存储了许多贷方。我应该说只有少数贷方,所以我可以轻松缓存数据,而无需进行查找。

但是,当客户申请贷款时,我想每次都按逻辑顺序对不同的贷方进行第一次查找。例如:

贷款人 A 贷款人 B 贷款人 C

第一个客户查看贷款人 A,第二个客户 B,第三个客户 C,第四个客户 A。

这背后的原因只是为了在贷方之间平均分配线索,如果计数器每天重置一次左右,这不会是世界末日。

显然,我可以将这些信息写入数据库——但这是否矫枉过正?还有其他人需要实现类似的东西并想出一个更简单的解决方案吗?

任何建议表示赞赏。

4

6 回答 6

4

如果您存储了一个包含上次选择贷方的日期时间的额外列,则可以修改贷方选择查询以返回最长时间前选择的贷方。即,类似:Lenders.OrderBy(x => x.LastSelected).First()

Of course, you'll also have to write back to the database when a lender is selected. 除非您在一个 SQL 查询中完成所有这些操作。像这样的东西(编辑:刚刚验证 - 效果很好):

UPDATE MyTable
SET LastSelected = GetDate()
OUTPUT INSERTED.*
WHERE Id = (SELECT TOP (1) Id FROM MyTable ORDER BY LastSelected)
于 2013-05-16T19:26:39.493 回答
3

由于这全部存储在数据库中,您可以添加一列,将其命名为LastUsed存储日期/时间的位置,然后您的查询将简单地获取最早的日期,这应该返回您要使用的下一个行,所以您的数据看起来像这样

  • 贷方 A,LastUsed = 2013-05-10 5:30pm
  • 贷方 B,LastUsed = 2013-05-15 4:15pm
  • 贷方 C,LastUsed = 2013-05-16 2:00am
  • 贷方 D,LastUsed = 2013-04-20 11:00am
  • 贷方 E,LastUsed = 2013-05-01 5:00pm

通过制作查询以选择最早日期,您将获得 D,一旦使用,您将更新为今天的日期,因此接下来将是 E,依此类推

于 2013-05-16T19:27:59.200 回答
2

好吧,为了确保后续分配不会随机完成并且按照您确定的逻辑顺序完成,那么您将需要将先前的受让人存储在某个地方。

所以基本上我要做的是在数据库中有一个名为“AssignedTo”的列,对于每个分配,我都会检查该列,然后将新的潜在客户分配给下一个逻辑受让人。

于 2013-05-16T19:19:06.570 回答
1

如果有任何记录插入到数据库中以供客户访问,则选择该记录的 ID 并使用从零开始的索引等于 ID mod N 的贷方,其中 N 是贷方的数量。

这种方法有时用于简单的广告轮播。由于 ID 值是按顺序递增的,并且独立于数据中的所有其他更改,因此您可以保证所有贷方将被均匀访问,并且客户将以严格的循环顺序发送给贷方。

例外情况是,某些 ID 值作为事务的一部分被获取,后来回滚,但这个简单的解决方案假定回滚次数通常接近于零。

于 2013-05-16T20:21:10.670 回答
1

这是矫枉过正。

我不知道你的情况(程序将在哪里使用,数据库在哪里等等......)。
您应该使用 xml 文件来存储此信息。我会说你给他们他们一天的客户数量,然后总是选择最高优先级的客户。

<Lenders> 
   <LenderA Clients = "5", Priority = "1"> Jim </LenderA>
   <LenderB Clients = "4", Priority = "2"> Jim </LenderA>
   <LenderC Clients = "4", Priority = "3"> Jim </LenderA>
</Lenders>

在这种情况下,程序知道他不能选择

  • LenderA 因为他有更多的客户。
  • LenderC 因为他的客户数量与 LenderB 一样多,但优先级较低。

如果您在我推荐之前从未使用过 XML,请阅读有关XmlDocument以了解如何声明文档和XPath以检索所需节点的信息。

于 2013-05-16T19:25:03.180 回答
1

我会保留一个已使用的贷方列表,然后根据第一个列表过滤所有贷方,这样你就只会得到那些还没有借出的贷方。当所有贷方的列表等于使用的贷方时,清除它并重新开始。您可以在 linq 中轻松地做到这一点,例如:Where(x => !UsedLenders.Contains(x))

于 2013-05-16T19:25:43.583 回答