用户投标是P2P网络借贷系统的核心功能。相对照较复杂,为了更好地梳理业务和技术实现思路,特地具体总结分析下。
输入:用户id-uid。标的id-lid。投标金额-amount
1.依据lid,获得贷款标的信息(优先从Cache中取),不能为null,状态status应该“合法”。

  假设贷款标不存在,或者状态不正确,马上返回到前端。不再继续后面的处理。
2.依据uid。查询用户的信息。
  贷款标的和用户信息是投标逻辑须要的。
3.投标检查。

  用户的账户是否存在、账户剩余金额是否超过了投标金额amount。
  
4.依据uid、lid、amount等參数,构造投标tender对象。包括了投标须要的全部信息。
5.获得投标状态信息(事务锁住抢标状态。防止多个用户同一时候投标。使用数据库行级锁,分布式情况下也能够使用)。
  使用select ... for update 语句
6.累计投标金额,即把当前的投标总额加上当前投标用户的“金额”。

  这里面存在一个“争议”,假设标的总额2000,已经投了1800。用户投了300,这个时候300>200。理论上不能成功。

  假设不成功,用户抢到标却无法投。可能非常伤心;假设让用户投,有的用户想“整投”。不想把钱“打散”。也可能非常伤心。

  为了简化处理。一种方式是,把用户投标的钱算成200,即最大可投资金额。

  
7.更新投标状态。
8.保存投标信息tender对象。
9.扣除用户的账户钱,减去刚刚投资的金额。实际操作为把用户账户的钱转到平台账户下。

  存在一个问题,一次标。把全部用户的钱,转到平台账户,会须要非常多次转账。
  因此,设立一个比較特殊的“中间账户”,全部用户的钱都转到“中间账户”,等标满了,一次性把中间账户的钱转到平台账户下。
  
10.返回投标信息。是否成功。投标金额等。

 
投标过程中的注意事项:
1.开启事务。
2.数据库行级锁,锁住投标状态。
3.检查用户的可投资金额等前提条件检查。

4.平台设立中间账户,降低转账产生的流水记录。

P2P网络借贷系统-核心功能-用户投标-业务解说的更多相关文章

  1. P2P网络借贷系统-核心功能-用户投标-业务讲解

    用户投标是P2P网络借贷系统的核心功能,相对比较复杂,为了更好地梳理业务和技术实现思路,特地详细总结分析下. 输入:用户id-uid,标的id-lid,投标金额-amount 1.根据lid,获得贷款 ...

  2. P2P网络借贷系统简要解读

    P2P网络借贷系统的核心功能其实很简单,就是若干投资者(借款人)集体把钱贷给贷款人,到期后,贷款人把利息和本金按时还给借款人.平台的主要作用是"撮合",收取一定的服务费和管理费. ...

  3. IT增值服务-客户案例(三):合肥薪火科技,Java和P2P网络借贷系统开发指导

    客户整体情况: 合肥薪火科技,是安徽合肥一家主营微信开发和运营的中小企业,http://weimarket.cn/. 这家公司筹备.创立.曲折创业的经历,我一直有关注.因为2个老板,都是我的同学校友, ...

  4. 谈谈我对P2P网络借贷的一些看法

    北漂期间,只知道互联网金融非常火,相关创业公司和项目也非常多.2013年,最火的是余额宝等宝宝类产品.当时的收益率达到了7%,流动性如此高的情况下,竟达到这么高的收益率,我简直不敢相信.另外,当时考虑 ...

  5. 2015年p2p网络借贷平台的发展现状

    2015年春暖花开,莺飞草长,股市大涨大跌起起落落,P2P网络借贷收到越来越多的人关注,P2P网络借贷平台是p2p借贷与网络借贷相结合的金 融服务网站,这么多P2P网络借贷平台排我们应该如何选择呢?小 ...

  6. 简要分析武汉一起好P2P平台的核心功能

    写作背景 加入武汉一起好,正式工作40天了,对公司的核心业务有了更多的了解,想梳理下自己对于P2P平台的认识. 武汉一起好,自己运营的yiqihao.com,是用PHP实现的,同时也帮助若干P2P平台 ...

  7. 零售CRM系统开发的核心功能

    在零售行业中,客户关系管理系统是一个包含销售,市场营销和客户服务流程的中央枢纽.它为企业所有者提供了一种可以结合所有与销售有关的问题并管理销售流程的有效工具.零售CRM可以留住客户,提供个性化的一流客 ...

  8. 详解区块链P2P网络

    根据前一篇文章<从微观到宏观理解区块链>我们已经了解到,微观上,区块链本质就是一种不可篡改且可追踪溯源的哈希链条:宏观上,还具备了另外三个基本特征:分布式存储.P2P 网络和共识机制.分布 ...

  9. JXTA 2: 具有高性能、海量伸缩性的 P2P 网络

    这是来自developerWorks的一篇文章,地址是 https://www.ibm.com/developerworks/cn/java/j-jxta2/ ———————————————————— ...

随机推荐

  1. 在ns2.35中添加myevalvid框架

    在用ns2进行网络视频通信仿真的时候,先要为我们自己的ns2添加evalvid或者myevalvid框架.其中myevalvid框架是由柯志亨老师整合evalvid和ns2之后得出的新框架,笔者建议大 ...

  2. 使用kubeadm搭建kubernetes1.10集群 Posted on April 14, 2018

    https://blog.qikqiak.com/post/use-kubeadm-install-kubernetes-1.10/ kubeadm是Kubernetes官方提供的用于快速安装 Kub ...

  3. 渗透脚本快速生成工具Intersect

    渗透脚本快速生成工具Intersect   当渗透人员获取目标系统的执行权限,往往需要编写相应的脚本,实现更多的渗透操作.Kali Linux提供一款Python脚本快速生成工具Intersect.该 ...

  4. 【BZOJ 2809】2809: [Apio2012]dispatching (左偏树)

    2809: [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Maste ...

  5. 【BZOJ 2118】 2118: 墨墨的等式 (最短路)

    2118: 墨墨的等式 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求 ...

  6. 【DFS】【贪心】Codeforces Round #411 (Div. 1) C. Ice cream coloring

    对那个树进行dfs,在动态维护那个当前的冰激凌集合的时候,显然某种冰激凌仅会进出集合各一次(因为在树上形成连通块). 于是显然可以对当前的冰激凌集合贪心染色.暴力去维护即可.具体实现看代码.map不必 ...

  7. 中间件和auth模块

    中间件 1.什么是中间件 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用 ...

  8. [CF843D]Dynamic Shortest Path

    [CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ...

  9. Problem D: 零起点学算法94——输出矩阵

    #include<stdio.h> int main() { ][]; while(scanf("%d %d",&n,&m)!=EOF) { ; ;i& ...

  10. Ucenter添加新应用

    最近手头上有个项目需要用到Ucenter跟Discuz和UcHome整合到一起,使用同步登录.注册,使用同一的用户数据. 以前没用过Ucenter,第一次接触,看过官网的教程感觉不难.于是开始动手,下 ...