发表于: 2017-09-25 22:16:01

2 762


一.今天完成的主要事情

1.继续梳理方案在实现过程中的难点,并想办法解决

总共梳理出14个问题(其中问题三实际上5个问题)

1:产品续投问题:

   当用户投资产品之后,在产品到期前几日(根据后台参数设置而定)再次选择续投该产品,确定续投成功后,会在tbl_user_product表中新生成一条记录,该记录与表中对应的正在投资的记录相关联(通过将各自的again_investment_id字段设置为对方的id),将续投记录的是否有效字段置为有效。

 

   ***如果此时产品下线,首先根据产品idtbl_product表中将该产品下线,然后在tbl_user_product表中找到该产品的续投记录,将是否有效字段置为无效。投资到期时,进行结算,返还用户本息,删除该用户对产品的续投记录,向用户发送消息:续投失败,并说明原因(产品已下架)。

 

   如果此时产品重复上线,则根据根据产品idtbl_product表中将该产品上线,然后在tbl_user_product表中找到该产品的续投记录,将是否有效字段置为有效。投资到期时,进行结算,返还利息,本金用于继续投资,直接将tbl_user_product表中的该续投记录更新为新的投资记录,将上一笔投资记录的again_investment_id字段清空。向用户发送消息:续投成功。(此时用户的付款记录表是否需要更新?需要更新)

 

   *****然后在每日跑批操作中检查是否有投资到期且投资无效的记录,将其清除。

 

 

2 : 推荐页banner图问题

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

 

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

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

实现方案:

sql1,筛选投资中,一次性,到期)先用一个sql语句在tbl_user_product表中筛选出投资中,还款方式一次性,已到期的用户投资记录list。对该list通过available字段筛选出要续投的记录和不续投的记录。

(一次性,已到期,续投)对于要续投的记录,计算利息,然后调用支付接口,向用户付息,确认付息成功后(跑批是每日都跑,每天都会产生新的付款信息,但是付息有可能延时一天以上,如何保存每天跑批产生的付款信息以及根据付款结果更新数据库),此时(回款未到账)将tbl_user_product表中原投资记录状态更改为退出中,在tbl_auto_messag表中新增一条记录,记录内容为回款中,回款金额为支付的利息。确认付息成功后,修改tbl_user_product中续投记录状态为投资中,更改起息时间(提前调用计算起息时间方法),再修改续投记录对应的原投资记录状态为已退出并修改已分配收益,同时修改两条记录中的again_investment_idavailable字段为null。接着在tbl_auto_message表中的相应记录更改为回款成功。并在tbl_payment_track表和tbl_payment_back_track表中都新增一条记录,一个记录用户付款金额,即续投金额,一个记录用户收到的利息。

(一次性,已到期,不续投)对于不续投的产品,计算利息以及要回款的金额,调用支付接口,向用户付本息,此时(回款未到账)tbl_user_product表中相应记录的投资状态修改为退出中,同时在tbl_auto_message表中新增一条记录(状态回款中)并修改tbl_user表中的是否有未读消息字段。确认付息成功后,修改tbl_user_product表中相应记录的投资状态为已退出并修改已分配收益,同时通过user_product_id字段和user_idtbl_auto_message表中找到状态为回款中的那条记录,将状态改为回款成功/回款失败,接着在tbl_payment_back_track表中新增一条记录。

sql2,筛选投资中,按月付息)再用另一个sql语句在tbl_user_product表中筛选出投资中,还款方式为按月付息的用户投资记录。然后在代码中根据是否到期筛选出两个list

(按月付息,未到期)对于未到期的list,如果当前是付息期(通过(当前日期-起息日期)%30判断),就计算出要付的利息(金额*收益率/360*30),形成一个list。调用支付接口,向用户付息,此时在tbl_auto_message表中新增一条记录(状态回款中),并更改tbl_user表中消息字段为未读。确认付息成功后,修改tbl_user_product表中相应记录的已分配收益和未分配收益,同时通过user_product_id字段和user_idtbl_auto_message表中找到状态为回款中的那条记录,将状态改为回款成功/回款失败,接着在tbl_payment_back_track表中新增一条记录。

对于到期的list, 通过available字段筛选出要续投的记录和不续投的记录。

(按月付息,已到期,续投)对于要续投的记录,计算利息(1.期限正好是30的倍数,最后一期计算同上;2.期限不是30的倍数,最后一期利息=(期限%30*金额*收益率/360),然后调用支付接口,向用户付息,(跑批是每日都跑,每天都会产生新的付款信息,但是付息有可能延时一天以上,如何保存每天跑批产生的付款信息以及根据付款结果更新数据库),此时(回款未到账)将tbl_user_product表中原投资记录状态更改为退出中,在tbl_auto_messag表中新增一条记录,记录内容为回款中,回款金额为支付的利息。确认付息成功后,修改tbl_user_product中续投记录状态为投资中,更改起息时间(提前调用计算起息时间方法),再修改续投记录对应的原投资记录状态为已退出并修改已分配收益,同时修改两条记录中的again_investment_idavailable字段为null。接着在tbl_auto_message表中的相应记录更改为回款成功。并在tbl_payment_track表和tbl_payment_back_track表中都新增一条记录,一个记录用户付款金额,即续投金额,一个记录用户收到的利息。

(按月付息,已到期,不续投)对于不续投的产品,计算利息(计算方式同上)以及要回款的金额,调用支付接口,向用户付本息,此时(回款未到账)tbl_user_product表中相应记录的投资状态修改为退出中,同时在tbl_auto_message表中新增一条记录(状态回款中)并修改tbl_user表中的是否有未读消息字段。确认付息成功后,修改tbl_user_product表中相应记录的投资状态为已退出并修改已分配收益,同时通过user_product_id字段和user_idtbl_auto_message表中找到状态为回款中的那条记录,将状态改为回款成功/回款失败,接着在tbl_payment_back_track表中新增一条记录。

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

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

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

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

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

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

用一个sql语句在tbl_credit表中查询出到期时间在该区间中的所有记录,形成一个list

统计该list的条目数量,编辑成短信,发送给后台管理人员(默认发给管理员)

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

实现方案:

方案:用sql语句在tbl_credit表中查询出所有的已匹配金额和总金额的累加之和。

然后两个之比如果大于或等于tbl_constant表中的total_credit_cordon字段,则发送给后台管理人员(默认发给管理员)

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

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

4. 定时发送功能实现

实现方案:使用TimerTimerTask功能类,实现实时任务,具体实现逻辑见方案设计

5. 每一步操作失败和异常的处理

 

6. 计算收益的时间规则:更新/新增tbl_user_product时起息日期如何计算?(核心:如何判断当天是否是工作日)

实现方案:调用第三方接口,判断当前日期是否是工作日

7. 如何通过银行预留手机号、身份证号和银行卡信息确定绑定的银行是用户本人的。

 

8. 债权匹配规则的具体实现

 

9. 电子合同如何生成?

 

10. 两个不同的表取出的list如何排序?(前台查看总数量确定(比如一次10条),后端在系统消息和公告消息表中如何取数据,数据如何排序?)

现在解决了9个

二.明天计划完成的事情

1.继续思考讨论剩下的5个问题

2.对于实在解决不了的问题,及时和老大沟通,寻求帮助解决.

三.遇到的问题

以上

四.收获

以上

五.项目进度情况

有延期风险,原因项目的复杂度和要考虑的问题较多,方案设计进度缓慢



返回列表 返回列表
评论

    分享到