package com.ycsoft.business.dao.core.acct;
/**
* CAcctPreFeeDao.java 2011/03/25
*/
import java.util.List;
import org.springframework.stereotype.Component;
import com.ycsoft.beans.core.acct.CAcctPreFee;
import com.ycsoft.commons.constants.SystemConstants;
import com.ycsoft.commons.helper.StringHelper;
import com.ycsoft.daos.abstracts.BaseEntityDao;
import com.ycsoft.daos.core.JDBCException;
/**
* CAcctPreFeeDao -> C_ACCT_PRE_FEE table's operator
*/
@Component
public class CAcctPreFeeDao extends BaseEntityDao<CAcctPreFee> {
/**
*
*/
private static final long serialVersionUID = 8434358209902754874L;
/**
* default empty constructor
*/
public CAcctPreFeeDao() {}
/**
* 通过用户编号和产品编号查询预扣费记录
* @param userId
* @param prodId
* @return
* @throws JDBCException
*/
public List<CAcctPreFee> queryByUserIdandProdId(String userId,String prodId) throws JDBCException{
String sql = "select * from c_acct_pre_fee c where c.user_id=? and c.prod_id=? and "
+ " c.status='T' and c.process_flag=1";
return createQuery(CAcctPreFee.class,sql, userId, prodId).list();
}
/**
* 根据交易流水查询预扣费记录
* @param transId
* @param userId
* @return
* @throws JDBCException
*/
public CAcctPreFee queryByTransId(String transId,String userId) throws JDBCException{
String sql = "select * from c_acct_pre_fee c where c.trans_id=? and c.user_id=? and c.process_flag=1 ";
return createQuery(CAcctPreFee.class,sql, transId, userId).first();
}
/**
* 根据用户编号,产品编号,影片编号查询已处理的预扣费记录
* @param userId
* @param prodId
* @param progId
* @return
* @throws JDBCException
*/
public CAcctPreFee queryByProgId(String userId, String prodId, String progId) throws JDBCException {
String sql = "select * from c_acct_pre_fee c where c.user_id=? and c.prod_id=? and "
+ " c.prog_id = ? and c.process_flag=2 and c.is_valid='T' and c.original_sn is not null order by c.fee_time desc";
return createQuery(CAcctPreFee.class, sql, userId,prodId,progId).first();
}
/**
* 根据卡号,查询VOD点播消费记录
* @param cardId
* @return
* @throws Exception
*/
public List<CAcctPreFee> queryVodPreFees(String cardId) throws Exception{
String sql = StringHelper.append("select * from (select c.* from c_acct_pre_fee c, c_user u",
" where u.card_id = ? and c.user_id = u.user_id",
" and c.is_valid='T' and c.process_flag=2 and c.status='T' AND c.ticket_sn is not null order by c.done_code desc) a",
" where rownum <=50");
return createQuery(CAcctPreFee.class, sql, cardId).list();
}
}