/** * @Project: hehenian-biz-service * @Package com.hehenian.biz.component.trade.impl * @Title: InsteadOfRepayment.java * @Description: TODO * @author: zhangyunhmf * @date 2014年9月28日 下午4:26:02 * @Copyright: HEHENIAN Co.,Ltd. All rights reserved. * @version V1.0 */ package com.hehenian.biz.component.trade.impl; import java.util.List; import org.springframework.stereotype.Component; import com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.trade.dataobject.InvestRepaymentDo; import com.hehenian.biz.common.trade.dataobject.RepaymentContext; import com.hehenian.biz.common.trade.dataobject.RepaymentDo; /** * 代偿 * * @author: zhangyunhmf * @date 2014年9月28日 下午4:26:02 */ @Component("compRepayComponentImpl") public class CompRepayComponentImpl extends DefaultAbstractRepayComponent { private static final String notify_template = "sms_repay_normal.ftl"; /** * * checkAmount 检查用户账户金额是否足够 * * @return boolean * @exception * @since 1.0.0 */ @Override protected boolean checkAmount(long userId, double needAmount) { return true; } /** * * checkUser 检查用户合法性 * * @return boolean * @exception * @since 1.0.0 */ @Override protected boolean checkUser(RepaymentContext rc) { return true; } /** * 根据用户ID 获取用户对象, 如果是代偿, 代偿子类会覆盖这个方法根据,配置文件里的代偿账号查询用户对象 * * @return * @author: zhangyunhmf * @date: 2014年10月22日下午6:22:47 */ @Override public int buildPubisher(RepaymentContext rc) { // 代偿的时候根据代偿账户取用户信息 AccountUserDo user = this.userComponent.getUserByCustId(this.chinaPnrConfig.getCompCustId()); if (null == user) { return 10; } // 构建代偿用户 rc.setUserDo(user); rc.setUserId(user.getId()); rc.setUsername(user.getUsername()); return 0; } /** * * checkRepaymentStatus 检查还款记录的状态, 如果已经代偿不可再代偿 * * @return boolean * @exception * @since 1.0.0 */ @Override protected boolean checkRepaymentStatus(RepaymentDo repay) { // RepaymentDo repay = this.getRepaymentDo(); return (repay.getRepayStatus() == 1) && (repay.getIsWebRepay() == 1); } /** * 出资账户,如果代偿是代偿方,从配置文件读取, 否则就是借款人 */ @Override public String getOutCustId(RepaymentContext rc) { return chinaPnrConfig.getCompCustId(); // 代偿账户汇付ID } /** * 出资账户,如果代偿是代偿方,从配置文件读取, 否则就是借款人 */ @Override public String getOutAcctId() { return chinaPnrConfig.getCompAccount(); // 代偿账户 } /* * (no-Javadoc) <p>Title: updateBorrow</p> <p>Description: </p> * * @param borrowId * * @see * com.hehenian.biz.component.trade.impl.DefaultRepayment#updateBorrow(long) */ @Override public void updateBorrow(long borrowId) { } /* * (no-Javadoc) <p>Title: updateRepaymentStatus</p> <p>Description: </p> * * @see * com.hehenian.biz.component.trade.impl.DefaultRepayment#updateRepaymentStatus * () */ @Override public void updateRepaymentStatus(RepaymentContext rc) { RepaymentDo repaymentDo = rc.getRepaymentDo(); this.repaymentComponent.updateIsWebRepayById(repaymentDo.getId(), repaymentDo.getVersion()); } /* * (no-Javadoc) <p>Title: getRepayment</p> <p>Description: </p> * * @return * * @see * com.hehenian.biz.component.trade.impl.DefaultRepayment#getRepayment(long) */ @Override public RepaymentDo buildRepayment(RepaymentContext rc) { RepaymentDo repaymentDo = super.buildRepayment(rc); // 代偿手续费和咨询费为,罚金 0 repaymentDo.setRepayFee(0d); repaymentDo.setConsultFee(0d); repaymentDo.setLateFi(0d); return repaymentDo; } /** * 构建还款列表 * * @author: zhangyunhmf * @date: 2014年10月8日下午1:58:05 */ @Override public int buildInvestList(RepaymentContext rc) { // RepaymentContext rc = this.getContext(); RepaymentDo repayDo = rc.getRepaymentDo(); // 查询代偿的投资信息 List<InvestRepaymentDo> investList = this.investRepaymentComponent.selectCompInvestByRepayId(repayDo.getId()); // rc.setInvestList(investList); if (null == investList) { return 0; } rc.setInvestList(this.convertInvestRepaymentWrap(investList)); return investList.size(); } /* * (no-Javadoc) <p>Title: buildRepaymentFee</p> <p>Description: </p> * * @see com.hehenian.biz.component.trade.impl.DefaultAbstractRepayComponent# * buildRepaymentFee() */ @Override public void buildRepaymentFee(RepaymentDo repayDo, Integer paymentMode) { repayDo.setFeeList(null); } /** * * 更新回款表 , 如果是代偿操作isWebPay = 2 ,并且要加一条新的还款记录表示代偿 * * @param investDo * @author: zhangyunhmf * @date: 2014年10月23日上午10:53:41 */ @Override public void updateInvestRepayment(RepaymentContext rc, InvestRepaymentDo investDo) { // 生成代偿记录, 代偿记录状态是3 long newOwner = this.getPublisher(rc).getId(); investRepaymentComponent.addWebPayRecord(investDo.getId().longValue(), newOwner); InvestRepaymentDo newInvestRepaymentDo = new InvestRepaymentDo(); newInvestRepaymentDo.setInterestOwner(investDo.getOwner()); // 如果是代偿操作这里应该设置成2 newInvestRepaymentDo.setIsWebRepay(2); newInvestRepaymentDo.setRecivedFi(investDo.getRecivedFi()); newInvestRepaymentDo.setOwner(investDo.getOwner()); newInvestRepaymentDo.setInvestId(investDo.getInvestId()); newInvestRepaymentDo.setRepayId(investDo.getRepayId()); newInvestRepaymentDo.setId(investDo.getId()); newInvestRepaymentDo.setRecivedInterest(investDo.getRecivedInterest()); newInvestRepaymentDo.setRecivedPrincipal(investDo.getRecivedPrincipal()); investRepaymentComponent.updateRecievedAmount(newInvestRepaymentDo); } // /** // * 更新风险保障金 // * // * @author: zhangyunhmf // * @date: 2014年10月23日上午11:29:56 // */ // @Override // protected void updateGuarantee(RepaymentContext rc) { // RepaymentDo repaymentDo = rc.getRepaymentDo(); // BorrowDo borrow = rc.getBorrow(); // // 计算代偿金额, 代偿的时候没有手续费和咨询费用 // double repayAmount = repaymentDo.getHasPi(); // 本次实际偿还金额 // // // 减少更新担保公司的资金 // guaranteeInstitutionsComponent.updateOrganMoney(-repayAmount); // insertRiskDetail(borrow.getId(), borrow.getPublisher(), "代偿逾期借款", "支出", // 0, repayAmount); // } }