package com.ycsoft.business.service; import java.util.Date; import java.util.List; import java.util.Map; import com.ycsoft.beans.config.TBusiFee; import com.ycsoft.beans.core.acct.CAcctAcctitem; import com.ycsoft.beans.core.acct.CAcctAcctitemAdjust; import com.ycsoft.beans.core.acct.CAcctAcctitemChange; import com.ycsoft.beans.core.acct.CAcctAcctitemInactive; import com.ycsoft.beans.core.acct.CAcctAcctitemOrder; import com.ycsoft.beans.core.acct.CAcctAcctitemThreshold; import com.ycsoft.beans.core.acct.CAcctAcctitemThresholdProp; import com.ycsoft.beans.core.acct.CAcctBank; import com.ycsoft.beans.core.acct.CAcctPreFee; import com.ycsoft.beans.core.acct.CGeneralAcct; import com.ycsoft.beans.core.acct.CGeneralContract; import com.ycsoft.beans.core.acct.CGeneralContractPay; import com.ycsoft.beans.core.acct.CGeneralCredential; import com.ycsoft.beans.core.bank.CBankAgree; import com.ycsoft.beans.core.bank.CBankPay; import com.ycsoft.beans.core.prod.CProd; import com.ycsoft.beans.prod.PPromFee; import com.ycsoft.beans.system.SDept; import com.ycsoft.beans.system.SOptr; import com.ycsoft.business.commons.abstracts.IBaseService; import com.ycsoft.business.dto.core.acct.AcctAcctitemActiveDto; import com.ycsoft.business.dto.core.acct.AcctAcctitemInvalidDto; import com.ycsoft.business.dto.core.acct.AcctAcctitemThresholdDto; import com.ycsoft.business.dto.core.acct.AcctDto; import com.ycsoft.business.dto.core.acct.AcctitemDto; import com.ycsoft.business.dto.core.acct.GeneralContractDto; import com.ycsoft.business.dto.core.acct.PayDto; import com.ycsoft.business.dto.core.acct.QueryAcctitemThresholdDto; import com.ycsoft.business.dto.core.acct.UnitPayDto; import com.ycsoft.business.dto.core.fee.CFeePayDto; import com.ycsoft.business.dto.core.prod.PromFeeProdDto; import com.ycsoft.daos.core.JDBCException; import com.ycsoft.daos.core.Pager; /** * @author liujiaqi * */ public interface IAcctService extends IBaseService{ /** * 保存预存费信息,不支付 * @param payList * @throws Exception */ public void savePrePay(List<PayDto> payList) throws Exception; /** * 保存预存费信息,直接支付 * * @throws Exception */ public void saveSinglePay(String acct_id,String[] acctitemId, Integer fee[],CBankPay bankPay) throws Exception; /** * 支付平台网账目充值 * @param payList * @param bankPay * @throws Exception */ public void saveBankProdPay(List<PayDto> payList,CBankPay bankPay) throws Exception; /** * 银行批扣缴费 * @param bankTransSn * @param acctId * @param acctitemId * @param fee * @throws Exception */ public int saveBankPk(String bankTransSn,String acctId,String custId,String acctitemId,Date beginDate,Date endDate,int fee, String userId,String prodSn) throws Exception; /** * 零资费产品缴费 * @param prodSn * @param fee * @param months * @param beginDate * @param invalidDate * @throws Exception */ public void savePay(String prodSn,int fee,int months,Date beginDate,Date invalidDate) throws Exception; /** * 数据电视缴纳模拟收视费 * 适用于数字电视用户停机后,缴纳模拟收视费 * @param userId * @param prodId * @param tariffId * @param fee * @param beginDate * @param invalidDate * @throws Exception */ public void savePay(String prodId,String tariffId,int fee,Date beginDate,Date invalidDate) throws Exception; /** * 退款 * @param acctId 账户 * @param acctItemId 账目 * @param prodSn * @param userId * @param fee 转账金额 * @param invalidDate 产品到期日 * @throws Exception */ public void saveRefund(String acctId,String acctItemId,String prodSn,String userId,int fee,String invalidDate,String promFeeSn) throws Exception; /** * 转账 * @param sourceAcctId 转出账户 * @param sourceAcctItemId 转出目 * @param orderAcctId 转入账户 * @param orderAcctItemId 转入账目 * @param fee 转账金额 */ public void saveTrans(String sourceAcctId,String sourceAcctItemId,String orderAcctId,String orderAcctItemId,int fee) throws Exception; /** * 调账 * @param acctId 账户 * @param acctItemId 账目 * @param fee 调账金额 * @throws Exception */ public void saveAdjust(String acctId,String acctItemId,String prodSn,int fee,String feeType,String reason) throws Exception; /** * 欠费抹零 * @param acctId * @param acctItemId * @param prodSn * @param fee * @param feeType * @param remark * @throws Exception */ public void saveAcctFree(String acctId,String acctItemId,String prodSn,int fee,String feeType) throws Exception; /** * 资金解冻 * @param unfreezeJob * @return * @throws Exception */ public int saveAcctUnfreeze(CAcctAcctitemInactive unfreezeJob)throws Exception; /** * 查询客户的所有账户信息 * @param custId * @return */ public List<AcctDto> queryAcctByCustId(String custId)throws Exception; /** * 查询客户公用账目 * @return * @throws Exception */ public List<AcctitemDto> queryPublicAcctItemByCustId(String custId) throws Exception; /** * 查询账目下余额明细,不包括0余额 * @param acctitemId * @return */ public List<AcctAcctitemActiveDto> queryActive( String acctId,String acctitemId) throws Exception; /** * 查询账目下异动明细 * @param acctitemId * @return */ public Pager<CAcctAcctitemChange> queryAcctitemChange( String acctId,String acctitemId, Integer start, Integer limit)throws Exception; /** * 查询账目下阈值明细 * @param acctitemId * @return */ public List<CAcctAcctitemThreshold> queryAcctitemThreshold( String acctId,String acctitemId)throws Exception; /** * 修改临时阀值 * @param thresholdList * @throws JDBCException */ public void updateThreshold(List<CAcctAcctitemThresholdProp> thresholdList) throws Exception; /** * 查询账目阀值信息 * @param acctIds * @param countyId * @return * @throws JDBCException */ public List<AcctAcctitemThresholdDto> queryThresholdByAcctId(String custId, String[] acctIds) throws Exception; /** * 查询账目阀值信息 * @param custId * @param acctIds * @return * @throws JDBCException */ public List<AcctAcctitemThresholdDto> queryThresholdByCustId( QueryAcctitemThresholdDto dto, String custId, String[] acctIds) throws Exception; /** * 查询账目下返还明细 * @param acctitemId * @return */ public List<CAcctAcctitemInactive> queryAcctitemInactive( String acctId,String acctitemId)throws Exception; /** * 查询账目调账信息 * @param acctId * @param acctItemId * @return * @throws JDBCException */ public List<CAcctAcctitemAdjust> queryAcctitemAdjust(String acctId, String acctItemId) throws JDBCException; /** * 查询账目下冻结明细 * @param acctitemId * @return */ public List<CAcctAcctitemOrder> queryAcctitemOrder( String acctId,String acctitemId)throws Exception; /** * 保存银行签约信息 * @param cBankAgree 签约信息 * @throws Exception */ public void saveSignBank(CBankAgree cBankAgree) throws Exception; /** * 删除银行签约信息 * @param custId 客户Id * @throws Exception */ public void saveRemoveSignBank(String bankPayType,Date time) throws Exception; /** * 查询银行签约信息 * @return * @throws Exception */ public CAcctBank querySignBank(String bankPayType) throws Exception; public CBankPay queryBankPay(String banklogid) throws Exception; public void saveBankPay(CBankPay cBankPay) throws JDBCException; /** * 查询产品的账户信息 * @param custIds * @return * @throws Exception */ public List<UnitPayDto> queryBaseProdAcctItems(String[] custIds,String prodId) throws Exception; /** * 单位缴费,查询可以缴费的产品 * @param custIds * @return * @throws Exception */ public List<CProd> querySelectableProds(String[] custIds) throws Exception; /** * 批量修改到期日 * @param payList * @param newExpDate * @throws Exception */ public void saveBatchEditExpDate(List<PayDto> payList,String newExpDate) throws Exception; public CAcctAcctitem queryAcctItemByAcctitemId(String acctId,String acctItemId) throws JDBCException; /** * 查询分公司账户 * @return * @throws Exception */ public List<CGeneralAcct> queryCompanyAcct() throws Exception ; /** * 修改调账原因 * @param doneCode * @param remark * @throws Exception */ public void editAdjustReason(Integer doneCode, String reason) throws Exception; /** * 编辑分公司账户 * @param generalAcctList * @throws JDBCException * @throws Exception */ public void editCompanyAcct(List<CGeneralAcct> generalAcctList) throws JDBCException, Exception; /** * 查询没有分公司账户的分公司 * @return * @throws Exception */ public List<SDept> queryCompanyWithOutAcct() throws Exception; /** * 保存分公司账户 * @param generalAcct * @throws Exception */ public void saveGeneralAcct(CGeneralAcct generalAcct) throws Exception; /** * 保存预收款或工程款 * @param generalContract * @param credentialAmount * @param credentialEndNo * @param credentialStartNo * @param presentAmount * @throws Exception */ public void saveGeneralContract(CGeneralContract generalContract, CFeePayDto pay,SOptr optr, Integer credentialStartNo, Integer credentialEndNo, Integer credentialAmount, Integer presentAmount) throws Exception; /** * 查询预收款或工程款 * @param query * @param limit * @param start * @return * @throws Exception */ public Pager<GeneralContractDto> queryGeneralContracts(Integer start, Integer limit, String query) throws Exception; /** * 修改预收款或工程款合同金额 * @param contractId * @param acctId * @param newNominalAmount * @throws Exception */ public void editGeneralContract(CGeneralContract generalContract) throws Exception; /** * 作废合同 * @param contractId * @throws Exception */ public void saveRemoveContract(String contractId) throws Exception; /** * 添加合同凭据 * @param contractId * @param credentialStartNo * @param credentialEndNo * @param credentialAmount * @throws Exception */ public void addCredential(String contractId, Integer credentialStartNo, Integer credentialEndNo, Integer credentialAmount) throws Exception; /** * 查询合同凭据信息 * @param contractId * @param start * @param limit * @return * @throws JDBCException */ public Pager<CGeneralCredential> queryCredential(String contractId, Integer start, Integer limit) throws JDBCException; /** * 查询合同付款明细 * @param contractId * @param start * @param limit * @return * @throws JDBCException */ public Pager<CGeneralContractPay> queryPayInfo(String contractId, Integer start, Integer limit) throws JDBCException; /** * VOD预扣费处理 * 结果返回价格和需要充值的金额,分号隔开 * @param transId VOD交易流水号 * @param userId 用户编号 * @param prodId 产品编号 * @param progId 节目编号 * @param progName 节目名称 * @param requestTime 请求扣费时间 * @param price 原始价格 * @param detailParams 详细参数 * @return 大于等于0表示本次扣费金额 小于0代表本次需要需要充值的金额 * @throws Exception */ public String vodPreFee(String transId,String userId,String prodId,String progId,String progName,Date requestTime,int price,String detailParams) throws Exception; /** * 取消预扣费 * @param transId * @param userId * @throws Exception */ public void cancelVodPreFee(String transId,String userId) throws Exception; /** * 查询非营业费 * @return * @throws Exception */ public List<TBusiFee> queryUnBusiFee() throws Exception; /** * 作废账单 * 1、修改账单的状态为作废 * 2、根据该账单的销账记录,修改销账记录对应的账目余额或者增加作废记录 * 2、删除该账单对应销账记录 * @param billSns * @throws Exception */ public void saveCancelBill (String[] billSns) throws Exception; /** * 对用户账目余额的作废记录进行退款 * @param acctId * @param acctItemId * @param feeType * @param fee * @throws Exception */ public void saveRefundInvlid(String acctId, String acctItemId, String feeType,int fee) throws Exception; /** * 查询点播消费记录 * @param cardId * @return * @throws Exception */ public List<CAcctPreFee> queryVodPreFees(String cardId) throws Exception; /**查询账目作废记录 * @param custId * @return * @throws Exception */ public List<AcctAcctitemInvalidDto> queryAcctitemInvalidByCustId(String custId)throws Exception; /** * 查询账目预约与被预约记录 * @param acctId * @param acctItemId * @return */ public List<CAcctAcctitemOrder> queryAllByAcctitemId(String acctId,String acctItemId) throws Exception; /** * 查询账目阈值异动 * @param acctId * @param acctItemId * @return * @throws Exception */ public List<CAcctAcctitemThresholdProp> queryAcctitemThresholdProp(String acctId,String acctItemId) throws Exception; /** * 非营业费退款 * @param generalContract */ public void saveRefundUnBusiFee(CGeneralContract generalContract) throws Exception; /** * @param acctId * @param acctItemId * @param feeType * @param fee */ public void dezsRefund(String acctId, String acctItemId, String feeType, int fee) throws Exception; /** * @param contractId * @param fee */ public void savePayUnBusiFee(String contractId, int fee) throws Exception; /** * 取消套餐缴费. * @param promFeeSn * @throws Exception */ public void cancelPromFee(String promFeeSn, String reason) throws Exception; /** * @param promFeeId * @param promFee * @param prodList */ public void savePromPayFee(String promFeeId, int promFee, List<PromFeeProdDto> prodList, String preOpenTime) throws Exception; /** * 呼叫中心 公用账户、专用账户信息查询 * @param params * @return * @throws Exception */ public List<AcctitemDto> queryAcctitemToCallCenter(Map<String,Object> params) throws Exception; /** * 查询套餐缴费相关的 账目的冻结余额使用情况. * @param doneCode */ public List<CAcctAcctitemInactive> queryPromAcctItemInactive(Integer doneCode, String custId, boolean fromHistory) throws Exception; public void clearInactiveAmount(String promFeeSn,String acctId, String acctItemId,int fee,int preFee ) throws Exception; /** * 查找上月和当月的有效套餐缴费 * @param userId * @param prodId * @return * @throws Exception */ public List<PPromFee> queryIsPromFee(String userId,String prodId)throws Exception; /** * 根据到期日计算批量缴费应缴费用. * @param payFeesData * @param invalidDate * @return */ public List<PayDto> calcBatchPayFees(List<PayDto> payList, Date invalidDate,String custId) throws Exception; /** * 作废赠送. * @param acctId * @param acctItemId * @param prodSn * @param fee */ public void cancelFree(String acctId, String acctItemId, String prodSn, int fee)throws Exception; }