package com.hehenian.biz.common.trade;
import java.util.List;
import java.util.Map;
import com.hehenian.biz.common.base.dataobject.PageDo;
import com.hehenian.biz.common.base.result.IResult;
import com.hehenian.biz.common.trade.dataobject.RepaymentContext;
import com.hehenian.biz.common.trade.dataobject.RepaymentDo;
import com.hehenian.biz.common.trade.dataobject.RepaymentFeeDo;
/**
* @author zhangyunhua
* @version 1.0
* @since 1.0
*/
public interface IRepaymentService{
/**
* 根据ID 查询
* @parameter id
*/
public RepaymentDo getById(Long id);
/**
*根据条件查询列表
*/
public List<RepaymentDo> selectRepayment(Map<String,Object> parameterMap);
/**
* 根据条件查询列表,用于翻页
* @param parameterMap 查询条件
* @param page 翻页对象, 列表的数据放在page里
* @return
* @author: zhangyunhmf
* @date: 2014年10月10日下午6:55:50
*/
public PageDo selectRepaymentPage(Map<String,Object> parameterMap,PageDo page);
/**
* 更新
*/
public int updateRepaymentById(RepaymentDo newRepaymentDo);
/**
* 新增
*/
public int addRepayment(RepaymentDo newRepaymentDo);
/**
* 删除
*/
public int deleteById(Long id);
/**
* 返回 提前结清对象,方便核对数据: 提前结清金额, 提前结清手续费等
*
* @param operationType
* 操作类型
* @param borrowId
* 标的ID
* @param payId
* 还款id
* @param userId
* 借款人
* @return {@link}
* See(com.hehenian.biz.component.trade.impl.RepaymentContext)
* @author: zhangyunhmf
* @date: 2014年11月26日上午9:11:04
*/
public RepaymentContext buildContext(String operationType, long borrowId, long payId, long userId);
/**
* 入口还款
*
* @param operationType
* 还款种类:普通,提前,代偿;看RepayOperationType
* @param borrowId
* 标的ID
* @param payId
* 还款id
* @param outCustId
* 借款人汇付账号
* @param userId
* 当前用户
* @param username
* 当前用户名
* @param pwd
* 密码
* @param webURL
* 应用url
* @return
*/
public IResult doRepay(String operationType ,
long borrowId,
long payId,
String outCustId,
long userId,
String username,
String pwd,
String webURL);
/**
* 增加还款费用
*
* @param repaymentFeeList
* @author: zhangyunhmf
* @date: 2014年11月27日下午4:16:30
*/
public void addRepaymentFee(List<RepaymentFeeDo> repaymentFeeList);
/**
* 根据ID 更新还款记录成 2, 投资人还款记录更新成 2
*
* @param borrowId
* 标的ID
* @param repayPeriod
* 还款期数
* @param userId
* 操作用户ID
* @author: zhangyunhmf
* @date: 2014年11月27日下午5:20:01
*/
public void updateRepaymentStatus(long borrowId, String repayPeriod, long userId);
/**
*
* 手工一个一个投资者还款
*
* @param repaymentId
* 还款ID
* @param ordId
* 回款ID
* @param operateType
* 操作类型: 还款 1, 代偿 2
* @param realPrincipal
* 还款本金
* @param realInterest
* 还款利息
* @param fee603
* 罚息
* @param fee902
* 咨询费
* @param fee901
* 提前结清手续费
* @param fee903
* 管理费
* @param webUrl
* 系统URL
* @author: zhangyunhmf
* @date: 2014年12月1日下午4:32:18
*/
public IResult<Object> manualRepayment(long repaymentId, long ordId, String operateType, double realPrincipal,
double realInterest, double fee603, double fee902, double fee901, double fee903, String webURL);
/**
* 修复重复请求ID
*
* @param repaymentId
* @return
* @author: zhangyunhmf
* @date: 2014年12月2日下午5:20:58
*/
public void changeInvestRepaymentId(long repaymentId);
}