package com.sp2p.dao; import java.sql.Connection; import java.sql.SQLException; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringEscapeUtils; import com.shove.data.DataException; import com.shove.data.DataSet; import com.shove.data.dao.Database; import com.shove.data.dao.MySQL; import com.shove.util.BeanMapUtils; import com.sp2p.constants.IConstants; import com.sp2p.database.Dao; import com.sp2p.util.DBReflectUtil; public class RechargeDao { /** * 提现信息加载 * * @param conn * @param userId * @param limitStart * @param limitCount * @return * @throws SQLException * @throws DataException */ public List<Map<String, Object>> withdrawLoad(Connection conn, long userId, int limitStart, int limitCount) throws SQLException, DataException { Dao.Views.t_user_withdraw_info t_info = new Dao().new Views().new t_user_withdraw_info(); // 加载已经绑定的银行卡信息,还在审核的不显示 DataSet dataSet = t_info.open(conn, "*", " userId='" + userId + "' ", " ", limitStart, limitCount); dataSet.tables.get(0).rows.genRowsMap(); return dataSet.tables.get(0).rows.rowsMap; } /** * 查找提现申请记录表 * * @param conn * @param userId * @param limitStart * @param limitCount * @return * @throws SQLException * @throws DataException */ public List<Map<String, Object>> queryWithdrawList(Connection conn, long userId, int limitStart, int limitCount) throws SQLException, DataException { Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); DataSet dataSet = t_info.open(conn, "*", " userId='" + userId + "'", " ", limitStart, limitCount); dataSet.tables.get(0).rows.genRowsMap(); return dataSet.tables.get(0).rows.rowsMap; } /** * 查询资金记录信息 * * @param conn * @param userId * @param limitStart * @param limitCount * @return * @throws SQLException * @throws DataException */ public List<Map<String, Object>> queryFundrecordList(Connection conn, long userId, int limitStart, int limitCount) throws SQLException, DataException { Dao.Tables.t_fundrecord t_info = new Dao().new Tables().new t_fundrecord(); DataSet dataSet = t_info.open(conn, "*", " userId='" + userId + "'", " ", limitStart, limitCount); dataSet.tables.get(0).rows.genRowsMap(); return dataSet.tables.get(0).rows.rowsMap; } public List<Map<String, Object>> queryRechargeInfo(Connection conn, long userId, int limitStart, int limitCount) throws SQLException, DataException { Dao.Tables.t_recharge_info t_info = new Dao().new Tables().new t_recharge_info(); DataSet dataSet = t_info.open(conn, "*", " userId='" + userId + "'", " ", limitStart, limitCount); dataSet.tables.get(0).rows.genRowsMap(); return dataSet.tables.get(0).rows.rowsMap; } /** * 添加提现申请信息 * * @param conn * @param userId * @param username * @param cellphone * @param account * @param sum * @param poundage * @param status * @return * @throws SQLException */ public Long addWithdraw(Connection conn, Long userId, String username, String cellphone, String account, double sum, double poundage, int status, Long bankId, String ipAddress) throws SQLException { long result = -1; Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); t_info._name.setValue(username); t_info.cellPhone.setValue(cellphone); t_info.acount.setValue(account); t_info.sum.setValue(sum); t_info.poundage.setValue(poundage); t_info.status.setValue(status); t_info.applyTime.setValue(new Date()); t_info.userId.setValue(userId); t_info.bankId.setValue(bankId); t_info.ipAddress.setValue(ipAddress); result = t_info.insert(conn); return result; } /** * 后台 进行扣费处理 * * @param conn * @param paramMap * @return * @throws SQLException */ public long addBackWithdraw(Connection conn, Long userId, Long adminId, Integer status, double sum, String remark, Date date) throws SQLException { Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); t_info.userId.setValue(userId); t_info.status.setValue(status); t_info.sum.setValue(sum); t_info.remark.setValue(remark); return t_info.insert(conn); } /** * 更新资金流动信息表 * * @param conn * @param userId * @param handleSum * @param usableSum * @return * @throws SQLException */ public Long updateFundrecord(Connection conn, Long userId, double money, int type) throws SQLException { if (type == 0) { return MySQL.executeNonQuery(conn, " update t_user set `usableSum` = usableSum-" + money + ", `freezeSum`=freezeSum+" + money + " where id=" + userId); } else if (type == 1) { return MySQL.executeNonQuery(conn, " update t_user set `usableSum` = usableSum+" + money + ", `freezeSum`=freezeSum-" + money + " where id=" + userId); } else {// 充值 return MySQL.executeNonQuery(conn, " update t_user set `usableSum`=usableSum+" + money + " where id=" + userId); } } public Map<String, String> getRechargeDetail(Connection conn, long id) throws SQLException, DataException { Dao.Tables.t_recharge_detail t_recharge_detail = new Dao().new Tables().new t_recharge_detail(); DataSet ds = t_recharge_detail.open(conn, "*", "id=" + id, "", -1, -1); return BeanMapUtils.dataSetToMap(ds); } /** * 添加充值记录信息 * * @param conn * @param userId * @param money * @param rechargeType * @param bankName * @param poundage * @param account * @param rechargeTime * @param status * @return * @throws SQLException */ public Long addRechargeInfo(Connection conn, Long userId, float money, int rechargeType, String bankName, float poundage, float account, int status) throws SQLException { long result = -1; Dao.Tables.t_recharge_info t_info = new Dao().new Tables().new t_recharge_info(); t_info.userId.setValue(userId); t_info.rechargeMoney.setValue(money); t_info.rechargeType.setValue(rechargeType); t_info.bankName.setValue(bankName); t_info.poundage.setValue(poundage); t_info.account.setValue(account); t_info.rechargeTime.setValue(new Date()); t_info.status.setValue(status); result = t_info.insert(conn); return result; } // public long addRecharge(Connection conn, Map<String, String> paramMap) throws SQLException { Dao.Tables.t_recharge t_recharge = new Dao().new Tables().new t_recharge(); DBReflectUtil.mapToTableValue(t_recharge, paramMap); return t_recharge.insert(conn); } public long addRechargeDetail(Connection conn, Map<String, String> paramMap) throws SQLException { Dao.Tables.t_recharge_detail t_recharge_detail = new Dao().new Tables().new t_recharge_detail(); DBReflectUtil.mapToTableValue(t_recharge_detail, paramMap); return t_recharge_detail.insert(conn); } public Long deleteWithdraw(Connection conn, Long userId, long wid) throws SQLException { Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); String condition = " userId=" + userId + " and id=" + wid; return t_info.delete(conn, condition); } public Map<String, String> queryFundrecordSum(Connection conn, Long userId, int limitStart, int limitCount) throws SQLException, DataException { Dao.Tables.t_fundrecord t_info = new Dao().new Tables().new t_fundrecord(); String condition = " userId=" + userId; DataSet dataSet = t_info.open(conn, "*", condition, " ", limitStart, limitCount); return BeanMapUtils.dataSetToMap(dataSet); } public Map<String, String> queryFundrecordSum(Connection conn, Long userId, int limitStart, int limitCount, String cmd) throws SQLException, DataException { Dao.Tables.t_fundrecord t_info = new Dao().new Tables().new t_fundrecord(); String condition = " userId=" + userId; condition += cmd; DataSet dataSet = t_info.open(conn, "*", condition, " ", limitStart, limitCount); return BeanMapUtils.dataSetToMap(dataSet); } public long updateRechargeDetail(Connection conn, long id, Map<String, String> paramMap) throws SQLException { Dao.Tables.t_recharge_detail t_recharge_detail = new Dao().new Tables().new t_recharge_detail(); DBReflectUtil.mapToTableValue(t_recharge_detail, paramMap); return t_recharge_detail.update(conn, "id=" + id); } public long updateRecharge(Connection conn, long id, Map<String, String> paramMap) throws SQLException { Dao.Tables.t_recharge t_recharge = new Dao().new Tables().new t_recharge(); DBReflectUtil.mapToTableValue(t_recharge, paramMap); return t_recharge.update(conn, "id=" + id); } /** * 查看指定时间内成功充值的金额(当前时间往前推15天) * * @param conn * @param userId * @param startTime * @return * @throws SQLException * @throws DataException */ public Map<String, String> queryRechargeInTime(Connection conn, long userId, String startTime) throws SQLException, DataException { String command = "SELECT sum(rechargeMoney) as rechargeMoney from t_recharge_detail " + "where result=" + IConstants.RECHARGE_SUCCESS + " and userId=" + userId + " and rechargeTime>='" + StringEscapeUtils.escapeSql(startTime) + "'"; DataSet ds = MySQL.executeQuery(conn, command); command = null; return BeanMapUtils.dataSetToMap(ds); } /** * 获得指定时间内用户投标收到的还款值(当前时间往前推15天) * * @param conn * @param userId * @param startTime * @return * @throws DataException * @throws SQLException */ public Map<String, String> queryTradeInTime(Connection conn, long userId, String startTime) throws SQLException, DataException { String command = "select sum(a.hasPrincipal+a.hasInterest) hasPI," + "a.investor from t_invest a left join t_borrow b on a.borrowId = b.id " + "left join t_repayment c on c.borrowId = b.id " + " where c.realRepayDate >= '" + StringEscapeUtils.escapeSql(startTime) + "' " + " and a.investor = " + userId + " and b.id is not null group by a.investor"; DataSet ds = MySQL.executeQuery(conn, command); command = null; return BeanMapUtils.dataSetToMap(ds); } public Map<String, String> queryLastRecharge(Connection conn, Long userId) throws SQLException, DataException { String command = "SELECT max(rechargeTime) from t_recharge_detail where userId=" + userId; DataSet ds = MySQL.executeQuery(conn, command); command = null; return BeanMapUtils.dataSetToMap(ds); } /** * 根据ID查询用户信息 * @param conn * @param userId * @return * @throws SQLException * @throws DataException [参数说明] * * @return Map<String,String> [返回类型说明] * @exception throws [违例类型] [违例说明] * @see [类、类#方法、类#成员] */ public Map<String, String> queryUser(Connection conn, Long id) throws Exception { String command = "SELECT * from t_user where id=" + id; DataSet ds = MySQL.executeQuery(conn, command); command = null; return BeanMapUtils.dataSetToMap(ds); } /** * 查找用户资金信息 * * @param conn * @param userId * @return * @throws SQLException * @throws DataException */ public Map<String, String> queryFund(Connection conn, Long userId) throws SQLException, DataException { StringBuffer command = new StringBuffer(); command.append("select a.usableSum as usableSum,a.freezeSum as freezeSum,sum(b.recivedPrincipal+b.recievedInterest-b.hasPrincipal-b.hasInterest) as forPI "); command.append(" from t_user a left join t_invest b on a.ID = b.investor where a.id=" + userId + " group by a.ID,a.usableSum,a.freezeSum"); DataSet ds = Database.executeQuery(conn, command.toString()); command = null; return BeanMapUtils.dataSetToMap(ds); } public Map<String, String> queryMoneyRecords(Connection conn, long userId) throws SQLException, DataException { StringBuffer command = new StringBuffer(); command.append("select a.usableSum,a.freezeSum,sum(b.recivedPrincipal+b.recievedInterest-b.hasPrincipal-b.hasInterest) as forPI"); command.append(" from t_user a left join t_invest b on a.id = b.investor where a.id=" + userId + " group by a.ID,a.usableSum,a.freezeSum"); DataSet dds = Database.executeQuery(conn, command.toString()); command = null; return BeanMapUtils.dataSetToMap(dds); } public Map<String, String> getWithdrawById(Connection conn, long wid) throws SQLException, DataException { Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); DataSet ds = t_info.open(conn, "", "id=" + wid, "", -1, -1); return BeanMapUtils.dataSetToMap(ds); } public Long deleteWithdraw(Connection conn, long wid) throws SQLException { Dao.Tables.t_withdraw t_info = new Dao().new Tables().new t_withdraw(); return t_info.delete(conn, " id=" + wid); } /** * 查询资金流水中的所有类型 * * @return * @throws DataException * @throws SQLException */ public List<Map<String, Object>> queryTypeFund(Connection conn) throws SQLException, DataException { Dao.Tables.t_fundrecord t_fundrecord = new Dao().new Tables().new t_fundrecord(); DataSet ds = t_fundrecord.open(conn, " DISTINCT fundMode,operateType ", "", "", -1, -1); ds.tables.get(0).rows.genRowsMap(); return ds.tables.get(0).rows.rowsMap; } }