发表于: 2018-03-08 20:40:24

1 561


今日完成

1.消息管理模块方案的制订。

债权管理

1、作为管理者,希望有个债权列表,可以浏览所有债权

方案:调用查询债权列表接口(debtor),带page,size参数,从debtor中取出所有债权数据,默认按创建时间排序。

2、作为管理者,希望能搜索债权信息,可以精确查找债权

方案:调用查询债权列表接口(debtor),带page,size参数,根据筛选参数取出对应数据,默认按创建时间排序。点击查看调用单个债权查询接口,根据债权id取出对应债权记录。

3、作为管理者,希望能新增债权,可以创建新债权

方案:调用新增债权接口,根据债权对象,在debtor表中生成一条记录。

4、作为管理者,希望能对债权匹配投资生成列表,可以记录投资与债权的对应关系(债权转让协议编号)

方案:点击”匹配未全”之后,调用单个债权匹配详情列表接口(matched=1),接口中根据债权id查询tbl_investment表,找出所有和该债权已经匹配的投资记录,然后再根据投资记录中的ubr_id查询到该条记录对应的用户购买的产品信息。

点击”匹配”,调用单个债权匹配详情列表接口(matched=0),根据债权id查询tbl_investment表,查询出该债权的详细信息。同时,查询未匹配的用户信息(债权id=-1)(只返回产品名称,到期时间,用户姓名,投资金额),组成一个list,然后调用功能类,对该list按照匹配规则排序,最后将排序后的list返回。

 

 

对于前端:预计剩余待匹配金额为负,则不允许保存

点击保存,则调用单个债权匹配操作接口,接口中更新investment表和tbl_credit表,修改债权记录,修改已匹配金额字段。

 

 

5、作为管理者,希望能变更匹配方案,可以手动调整更适配的方案

方案:前端选择匹配方案,选择确定后,调用单个债权匹配操作接口,带投资记录id、债权id参数、投资金额、投资合同编号(contract_serial_number_A),债权转让协议匹配成功后自动生成。

前台方案 

意见反馈

1、作为管理者,希望有个意见列表,可以浏览所有客户意见

方案:调用意见反馈接口,在suggestion表中获取所有意见数据,带page、size参数,默认按创建时间排序,生成list返回。

2、作为管理者,希望能搜索意见,可以精确查找意见

方案:调用意见反馈接口,带page、size参数,根据前端传入的筛选参数(手机号,邮箱,姓名,提交时间(区间)等),在tbl_suggestion表中获取对应意见数据,默认按创建时间排序,生成list返回。

3、作为管理者,希望能查看意见详情,可以详细了解客户的想法

方案:调用查询意见详情接口,根据路径参数(意见id),在suggestion表中取出对应意见数据返回。

4、作为管理者,希望能删除意见,可以清理无用的意见

方案:调用删除意见接口,根据路径参数(意见id),在suggetsion表中删除对应意见数据。

 

精品推荐页

1、作为用户,希望有个banner,可以轮播、点击查看详情获得相关活动信息

方案:前台调用查询内容(content)接口(查询banner路径参数为1),在content表中取出类型为推荐banner、状态为上线的多组记录,构成list返回给前台。

2、作为用户,希望有推荐的产品,可以切换查看、快捷购买推荐产品

方案:前台调用产品查询接口,带推荐参数,在tbl_product表中取出推荐的产品数据(默认按创建时间排序),返回给前台。

用户点击产品时调用查看产品详情接口,入参是产品表id,返回产品详细信息给前端。

用户点击查看合同,调用查看合同接口,将该产品的合同的模版返回前端展示。

3、作为用户,希望有个消息按钮,可以快捷进入消息中心

方案:用户登录后返回的用户信息中有是否有未读消息字段,前端根据此字段值来设置快捷消息按钮是否携带红色标记。

进入消息中心后,调用查询消息接口,根据用户id参数查询user_message表; 调用系统消息查询接口  (message)  根据前端传入设定的page、size参数,返回消息记录列表,按创建时间排序。

如果点击的是公告消息,则调用查询消息接口,根据消息id查询到具体的公告消息后返回。

如果点击的是系统消息,如果该消息类型为投资失败,则不可点。如果是其他类型的消息则调用用户投资产品详情接口,带用户产品关联表id,投资记录表(tbl_investment)中查询出具体的记录返回。

//   阅读状态,用户点击完所有消息后(或一键标记全部已读),前端调用更新用户信息接口,更改tbl_user表中的是否有已读消息字段为已读状态。

 

理财产品列表

1、作为用户,希望有个产品列表,可以浏览所有理财产品简略信息

方案:前台调用产品查询接口,带page,size参数,在product表中取出所有在售产品的数据(推荐产品在最前按level顺序排序,其他按创建时间排序),返回给前台。

2、作为用户,希望可以点开列表项查看产品详情,可以了解更多产品基本信息

方案:前台调用产品详情接口,根据路径参数产品id,在product表中获取对应产品数据返回。前台点击进入产品详情,点击查看合同,调用查看合同接口,返回相应合同数据。

 

产品续投:

1、 理财列表新增产品续投标签页

2、 投资中的非限购产品,在投资即将到期时(依后台参数设置定),如到期前5天,将展示在产品续投页

方案:

逻辑实现:先根据用户id以及投资状态(已投资)在用户产品关联表(user_product_relation)中查询出该用户的所有正在投资中并且available字段为-1的产品,然后根据该组记录中的产品id或产品编号查询产品表(tbl_product)中相关产品的状态,剔除限购或者停售的产品,最后再根据当前时间以及数据中的到期时间的差值判断该产品是否是投资即将到期,如果产品即将到期,则将最后筛选出的产品按编辑时间排序(由新到旧)返回给前端。

3、 进入详情页进行确认等额续投签字后,详情页显示已续投

方案:点击进入投资详情页,调用用户投资产品的详情接口,带用户id和产品id参数,查询tbl_user_product_relation和tbl_investment表,返回用户投资该产品的详细信息。点击确认后,调用投资接口,带用户id,产品id,投资金额,回款银行,还款方式等参数,接口中在(tbl_user_product_relation)表中新增一条记录,投资状态为已续投,并修改原投资产品的available和again_investment_id字段的值。同时在user_message表中新增一条记录,并修改tbl_user表中的相应字段,使用户有未读消息。

4.投资到期当天,回款只回利息,本金直接作为续投本金重新投资,并产生新的记录(交易记录、投资记录、系统消息推送、合同、匹配);产品续投页对应续投项完成并消失~ ~ ~ ~ ~ ~ ~ ~ ~

方案:在每日跑批中实现。

备注:要在一进入web主页时就获取用户信息和用户实名信息,通过调用tbl_user表和tbl_verification表相关信息获得,前端根据返回的数据跳转到不同的页面。

 

投资列表页

1、作为用户,希望有个列表展示所有投资,可以方便大致浏览投资基本信息

方案:已登录用户进入投资栏,调用用户投资产品列表接口,根据用户id,在invest_record表中查询用户投资产品的所有记录(除了投资状态为空和续投中),返回给前端。

2、作为用户,希望能查看订单详情,可以更多的了解该笔投资的信息

方案:前台在投资页点击一款产品,调用投资产品详情接口,根据用户id和产品id,在invest_record中获取数据

3、作为用户,希望投资到期后投资本息自动回款,可以不用操心提现

方案:用户投资成功后,立刻根据用户投资的起息时间,期限,金额,年化收益率,计算出用户的还款计划,添加到repayment表中。

          跑批时查询repayment表中当前是否有到期的记录,根据相应记录的金额和用户以及产品信息调用支付接口打款。打款完成后调用投资记录invest_record接口,调用新增交易记录接口. 调用新增用户消息接口.并更新该条还款计划.

     

我的页面

1、作为用户,希望有个账号设置,可以对个人信息(修改)进行查看、编辑

方案:

前台用户点击我的,调用查询用户信息接口,根据路径参数用户id,在user表中查询用户信息数据,返回相应字段数据给前端。

前台点击账户设置,调用查询用户信息接口,根据用户id在user表和user_bank表中取出完整数据,返回给前端。

前台点击“保存”,调用更新用户信息接口,带电子邮箱,详细地址,默认银行卡号参数,在接口中通过用户id,更新tbl_user表,并同时更新user_bank表。

前台进行实名认证,上传身份证正反面图片,调用图片上传接口,上传成功后,返回身份证正反面图片的url,然后调用更新用户信息接口,根据传入的用户姓名、身份证号码和身份证正反面图片url更新user表中的对应字段,同时在tbl_verification表中生成一条记录。

前台进行密码修改,调用修改密码接口,传入用户id,原密码和新密码,后台在user表中进行比对,如果原密码相同则将密码字段值置为新密码,修改成功。否则返回信息提示密码不正确。

 

3、作为用户,希望有个银行卡管理,可以添加银行卡

方案:

前台点击进入银行卡管理,调用查询用户详细信息接口,根据用户id在user_bank表中查询用户绑定的银行卡信息,然后根据开户银行id在bank_list表中查询银行每日限额等信息,最后构建json数据返回给前端。

用户绑定银行卡,调用新增用户银行卡接口,传入用户姓名,身份证号,开户行所在城市,开户行名称,银行卡号,银行预留手机号参数,在user_bank表中新增一条记录。

用户进行添加银行卡操作,点击“开户行”时,调用查询平台可用银行列表接口,查询bank_list表中的所有数据返回。

4、作为用户,希望有个交易流水,可以记录自己的收支情况

方案:用户点击交易流水,调用查询用户交易流水接口,带用户id参数以及page,size参数,根据用户id查询trading_record表,查询出的数据根据编辑时间排序后返回。

用户点击交易流水详情时,调用查询用户交易流水详情接口,根据交易类型和id查询出该条交易记录的详细信息返回。

备注:用户进行的每项投资,都会在后台相关表(invest_record,trading_record,user_message)中记录信息,并且在投资成功(失败)、即将到期、回款成功(失败)时,会产生即时记录并发送消息给用户。

5、作为用户,希望那个有个消息中心,可以查看发送的消息

方案:用户进入消息中心查看,会调用查询消息接口,具体方案见“精品推荐”story中第3条。

6、作为用户,希望有个更多设置,可以查看帮助、意见反馈、安全登出

方案:更多设置

1)查看帮助:调用内容中的帮助中心接口(路径参数为2),查询tbl_content表中唯一上线的数据返回。

2)意见反馈:用户输入意见完成提交后,调用意见反馈接口,根据传入的用户名、手机号、邮箱和意见内容参数,在tbl_suggestion表中生成一条记录

3)安全登出:用户点击安全登出,调用登出接口,根据传入的用户id参数,删除用户的cookie,将操作结果(成功或失败)返回给前端。

 

购买理财产品

1、作为用户,希望能支付相应的金额,可以购买理财产品获得相应投资收益

方案:点击立即投资后,调用查询用户银行卡信息接口,带用户id参数,查询user_bank表和bank_list表,返回用户的银行卡信息。

用户投资产品操作(期间会调用图片上传接口)完成后,调用用户投资接口,首先进行支付操作,若支付成功,则根据传入的投资产品相关必填参数先修改tbl_user表中的账户总额字段,接着在user_product_relation表中生成一条记录,并生成用户的还款计划,在user_payment表中新增记录。最后在trading_record表中生成一条记录,在invest_record表中生成一条记录,并在user_message表中生成一条记录同时发送消息给用户。

若支付失败,则不会操作其他的表,会在invest_record表和user_message表中各生成一条记录同时发送消息给用户。

2、作为用户,希望购买时可以签署合同,可以获得一定法律保障

方案:上面方案已包含。

3、作为用户,希望有个理财计算器,可以模拟计算预期收益

方案:前台点击预期收益时,调用查看还款计划接口,传入相关信息,返回还款计划

 

登录 / 注册 / 忘记密码 / 理财经理

1、作为用户,希望能注册登录个人账号

方案:调用用户注册接口和用户登录接口,(注册期间会调用短信验证接口)传入注册和登录必须的参数,在tbl_user表中生成记录。

           登录注册成功后,生成token保存在cookie中,用于用户自动登录。

2、作为用户,希望能找回密码,可以避免账号损失

方案:调用找回密码接口,(期间会调用短信验证接口)传入用户手机号、短信验证码和新密码,后端比对正确后,在user表中更新该用户的密码字段值。

 

消息列表

1、作为管理者,希望有个消息列表,可以浏览所有消息

方案:调用查询公告消息接口,不带筛选参数,带page,size参数,查询user_message表,按编辑时间排序。

2、作为管理者,希望能搜索消息信息,可以精确查找消息

方案:调用查询公告消息接口,带筛选参数,带page,size参数,查询user_message表,按编辑时间排序。

3、作为管理者,希望能上下线消息,可以控制消息展示与否

方案:后台调用更新公告消息接口,根据消息id和上下架参数,在message表中更改对应数据的上下架字段值,同时更新tbl_user表的所有记录的是否有新消息字段。

4、作为管理者,希望能新增消息,可以创建上线新消息

方案:后台调用新增公告消息接口,根据传入的消息对象参数,在sys_message表中生成一条记录(如果管理点推送,则设置推送消息字段为相应字段,发送同上,带定时则保存转换后的时间)。

5、作为管理者,希望能推送消息,可以使用户及时收到消息

方案:后台编辑消息完成后可选择即时发送或定时发送,提交后,后端会根据传入的参数类型设定即时任务或者定时任务,发送给所有用户。

定时发送逻辑:后台管理员点击保存后,先在表中生成记录,然后根据前端传入的时间参数调用定时任务,定时任务执行后更新sys_message表中相应记录的消息状态字段。

6、作为管理者,希望能定时发送消息,可以使用户在预定的时间收到消息

方案:同上

7、作为管理者,希望能删除消息,可以清理错误或不再有时效的消息

方案:后台调用删除公告消息接口,传入消息id,在sys_message表中删除对应记录。

 

银行限额管理

1、作为管理者,希望有个银行限额列表,可以浏览所有第三方支持银行

方案:后台调用查询银行列表接口,带page,size参数,查询bank_list表,取出所有银行数据返回,按编辑时间排序。

2、作为管理者,希望能搜索银行限额信息,可以精确查找银行限额

方案::后台调用查询银行列表接口,带page,size参数以及筛选参数,查询bank_list表,取出所有银行数据返回,按编辑时间排序。

3、作为管理者,希望能新增/编辑银行限额,可以输入新/老的银行限额

方案:后台调用新增/编辑银行接口,根据传入的银行对象参数,在bank_list中新增/更新相应的数据。

 

参数设置

1、作为管理者,希望能上传公章,可以方便管理公司公章供前台调用

方案:调用图片上传接口,上传公章图片,将第三方返回的电子签章url用于更新setting表字段。

2、作为管理者,希望能设置提前提醒天数,可以发送消息(推送)提醒用户投资到期

3、作为管理者,希望能设置提前提醒天数,可以发短信提醒后台管理人员债权到期

4、作为管理者,希望能设置总债权警戒线,可以发短信提醒后台管理人员总债权即将投满

方案:

管理员点参数设置时,调用查询常量表接口,查询setting表,返回该表中status字段为使用中的一条数据。

如果点保存,则调用新增常量表接口,带常量对象参数。在setting表中新增一条记录,设置该记录的status字段为正在使用,设置其他记录的status字段为未使用,同时查看该表的长度,如果有三条记录,则删除最旧的那条记录如果有两条,则什么也不做。

如果点还原,则调用更新常量表接口,不带参数,将setting表中的两条记录的status字段的值互换。

 

交易明细:

点击交易记录任一项,可打开交易明细,查看相应信息

方案:在之前的方案中已经有所提及,具体见”我的页面”第4条。

 

几大问题说明:

1:产品续投问题

   当用户投资产品之后,在产品到期前几日(根据后台参数设置而定)再次选择续投该产品,确定续投成功后,会在tbl_user_product_relation表中新生成一条记录,该记录与表中对应的正在投资的记录相关联(通过将各自的again_investment_id字段设置为对方的id),将续投记录和原投资记录中的available字段置为有效。在tbl_investment表中新增一条记录。同时根据用id和原投资产品ID,在tbl_repayment表中找出还款计划,更改还款金额。还款金额为(原还款金额-投资本金)并向用户发送消息,续投成功。

 

   ***如果用户续投后,原投资产品到期前产品下线,首先根据产品id在tbl_product表中将该产品下线,然后在通过产品ID,投资状态在tbl_user_product_relation表中找到该产品的续投记录,通过续投记录中的again_investment_id字段找到原投资记录,更改原投资记录的available字段为无效,删除该条续投记录,同时根据用id和原投资产品ID,在tbl_repayment表中找出还款计划,更改还款金额。还款金额为(原还款金额+投资本金)并向用户发送消息:续投失败,并说明原因(产品已下架)。

 

   如果在原投资产品到期前该产品又重复上线,则根据产品id在tbl_product表中将该产品上线,然后在tbl_user_product_relation表中根据产品Id,投资状态以及available=0找到原投资产品,更改available字段为1,同时在tbl_user_product_relation表中新增一条记录,投资状态为已续投。将原投资产品中的again_investment_id更改为续投记录Id。同时根据用id和原投资产品ID,在tbl_repayment表中找出还款计划,更改还款金额。还款金额为(原还款金额-投资本金)并向用户发送消息:续投成功

 

 

 

2 : 推荐页banner图问题

前端前台看到的banner实际上是5组,每组有一张封面图和若干张内容图。前端后台新增/编辑banner内容时,操作目标是一组banner的内容(封面、内容)。后台上线时,可以不用下线已经上线的banner,直接上线一组轮播图即可(包括封面,内容)。

 

3.  跑批任务中要完成的功能和具体实现

功能1: 计算当前是否有用户需要付息(按月付息,到期一次性还本付息),是否有用户投资到期,需要还款,或者续投产品

实现方案:查询repayment表中还款日期为当天的记录,根据记录中的用户,产品信息和还款金额调用支付接口还款。还款成功,更改用户状态,更改tbl_user_product_relation表中相应记录,在tbl_message表中新增一条记录,在tbl_trade表中新增一条记录。

 

查询tbl_user_product_relation表中投资状态为已续投并且available=1的产品是否到期,如果到期,计算起息日期,更改投资状态为投资中,并在repayment表中生成相应还款记录。同时,更改用户状态,在tbl_investment表中新增一条记录,在tbl_message表中新增一条记录,在tbl_trade表中新增一条记录。

 

功能2:计算当前是否有用户投资快到期,决定是否向用户发送提醒消息

实现方案:首先,根据当前时间戳得出当天0点和24点的时间戳。再在这两个时间戳的基础上+(1000*3600*24*tbl_constant表中的invest_remind_days字段的值)得到两个新的时间戳构成一个区间。

用一个sql语句在tbl_user_product_relation表中查询出投资状态为投资中以及到期时间在该区间中的所有记录,形成一个list。

对该list中的每个用户,在tbl_message表中新增记录,记录内容为:投资即将到期,并更改tbl_user表中相应记录的已读消息字段。

 

功能3:计算当前是否有债务人债务快到期,及时提醒管理人员

实现方案:首先,根据当前时间戳得出当天0点和24点的时间戳。再在这两个时间戳的基础上+(1000*3600*24*tbl_constant表中的invest_remind_days字段的值)得到两个新的时间戳构成一个区间。

用一个sql语句在tbl_credit表中查询出到期时间在该区间中的所有记录,形成一个list。统计该list的条目数量,编辑成短信,发送给后台管理人员(默认发给管理员)。

 

功能4:计算当前债权匹配额度和总债权额度之比是否到达警戒线.

实现方案:

方案:用sql语句(selectsum语句)在tbl_credit表中查询出所有的已匹配金额和总金额的累加之和。然后两个之比如果大于或等于tbl_constant表中的total_credit_cordon字段,则发送给后台管理人员(默认发给管理员)。

 

功能5:计算统计当天所有产品的销量。

实现方案:先查询tbl_product表中所有产品,根据产品代号和交易状态(付款成功)以及创建时间(为前一天的0点到24点之间,因为定时任务一般在凌晨执行,所以统计出的销量都是前一天的)去tbl_trade表中查询付款交易记录。查出的记录数量即为当天总购买次数,所有记录的购买金额累加即为当天总购买金额。使用distinct()函数可统计出除重后的当天总购买人数。最后,将结果存储在tbl_sales表中,新增一条记录。

 

4. 债权匹配规则实现

1)根据金额在表中查出三个list(金额超出,金额相等,金额小于)。

2)再根据时间将每个list划分为3个list,这样一共有9个list。

3)对每个list按照规则排序,然后将9个list按照顺序组合起来,形成最终的排序好的数据。

 

5. 关于高并发时在表中新增记录的问题(购买产品)

问题描述:假如某时刻大量用户同时投资产品,需要在同一时刻在tbl_user_product_relation,tbl_trade,tbl_message表中新增大量记录,有可能造成自增ID产生时报错的问题。

实现方案:使用IDcentor提前生成一定数量的Id作为缓存。

 

6.关于实时销量统计的问题

问题描述:假如大量用户同一时间投资产品,那么需要频繁更新某产品销量记录,由于mysql更新使用了排他锁,同一时间只能有一个线程对记录进行操作,有可能导致后续请求因等待时间过长而失败。

实现方案:将销量分为过去产品的销量和今天该产品的销量两部分,过去销量直接从销量统计表中查询计算后得出,当天销量通过查询实时购买记录后得出,这样即避免对某条记录频繁更新的问题。

明天计划的事情:

1.在理一下续投问题和匹配的问题。

2.下午一定要评审

遇到的问题:

1.咨询邵博,发现好多思路与自己想的差异蛮多,好多问题和需求还是要让产品敲定的。多对多的关系型数据库都要有关系表。

收获:

理解项目开发过程中的问题,需求和逻辑。



返回列表 返回列表
评论

    分享到