package com.sp2p.service; import java.sql.Connection; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import com.shove.Convert; import com.shove.base.BaseService; import com.shove.data.ConnectionManager; import com.shove.data.DataException; import com.shove.data.dao.MySQL; import com.sp2p.constants.IConstants; import com.sp2p.dao.AwardMoneydDao; import com.sp2p.dao.FundRecordDao; import com.sp2p.dao.RechargeDao; import com.sp2p.task.JobTaskDao; import com.sp2p.util.WebUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 奖励 * @author Administrator * */ public class AwardMoneyService extends BaseService { public static Log log=LogFactory.getLog(AwardMoneyService.class); private AwardMoneydDao awardMoneyDao; private ConnectionManager connectionManager; private FundRecordDao fundRecordDao; private RechargeDao rechargeDao; private JobTaskDao jobTaskDao; private SelectedService selectedService; public void setConnectionManager(ConnectionManager connectionManager) { this.connectionManager = connectionManager; } public AwardMoneydDao getAwardMoneyDao() { return awardMoneyDao; } public void setAwardMoneyDao(AwardMoneydDao awardMoneyDao) { this.awardMoneyDao = awardMoneyDao; } /** * 添加奖励信息 * @param title * @param content * @param publishTime * @param publisher * @param visits * @param state * @param seqNum * @param attachment * @return * @throws SQLException */ public Long addAwardMoney(Long userId,Double money,String userName,Long id,String recommendName)throws SQLException,DataException{ Connection conn =MySQL.getConnection();//modify by houli 这里用手动提交connectionManager.getConnection(); Long downloadId=0L,result=0L; try { downloadId=awardMoneyDao.addMoneyThing(conn, userId, money); //-----add by houli 向被奖励的人添加资金记录 String basePath = WebUtil.getBasePath(); Map<String, String> userAmountMap = rechargeDao .queryMoneyRecords(conn, userId); if (userAmountMap == null) { userAmountMap = new HashMap<String, String>(); } double usableSum = Convert.strToDouble(userAmountMap.get("usableSum")+"", 0)+money; String remarks = "您邀请的好友[<a href='" + basePath + "/userMeg.do?id=" + id + "' target='_blank'>" + userName + "</a>]成功申请为vip"; result = fundRecordDao.addFundRecord(conn, userId,"好友邀请奖励",money,usableSum, Convert.strToDouble(userAmountMap.get("freezeSum")+"", 0),Convert.strToDouble(userAmountMap.get("forPI")+"", 0), -1,remarks,money,0.0,-1,-1,251,0.0); //------更新用户可用余额 long result3 = rechargeDao.updateFundrecord(conn, userId, money, 100); // 更新已奖励状态为已奖励 long result4 = jobTaskDao.updateRewardStatus(conn, userId); // if(downloadId <=0 || result <= 0 || result3<=0 || result4 <=0){ conn.rollback(); return -1L; } //更改风险保障金,更改奖励发放状态 // 扣除风险保障金 Map<String,String>riskMap = jobTaskDao.queryRiskBalance(conn); if (riskMap == null) { riskMap = new HashMap<String, String>(); } double riskBalance = 1000000 + Convert.strToDouble(riskMap .get("RISKBALANCE") + "", 0); jobTaskDao.spendingRiskAmount(conn, riskBalance, money, -1, id, "好友邀请奖励"); // 消息模版 Map<String, String> noticeMap = new HashMap<String, String>(); // 站内信 noticeMap.put("mail", "您邀请的好友[" + userName + "]已成为VIP会员,在此奖励¥" + money + "元,再接再厉!"); // 邮件 noticeMap.put("email", "您邀请的好友[" + userName + "]已成为VIP会员,在此奖励¥" + money + "元,再接再厉!"); // 短信 noticeMap.put("note", "尊敬的" + recommendName + ":\n 您邀请的好友[" + userName + "]已成为VIP会员,在此奖励¥" + money + "元,再接再厉!"); selectedService.sendNoticeMSG(conn, userId, "好友邀请奖励", noticeMap, IConstants.NOTICE_MODE_5); conn.commit(); //------ } catch (SQLException e) { log.error(e); e.printStackTrace(); throw e; }finally{ conn.close(); } return 1L; } /** * 更新下载资料 * @param id * @param title * @param publishTime * @param state * @param seqNum * @param attachment * @return * @throws SQLException */ public Long updateAwardMoney(Long id, Long userId,Integer status,Long money,String endData)throws SQLException,DataException{ Connection conn=connectionManager.getConnection(); Long downloadId=1L; try { downloadId=awardMoneyDao.UpdateMoney(conn, id, userId, status, money, endData); } catch (SQLException e) { log.error(e); e.printStackTrace(); throw e; }finally{ conn.close(); } return downloadId; } public static void setLog(Log log) { AwardMoneyService.log = log; } public void setRechargeDao(RechargeDao rechargeDao) { this.rechargeDao = rechargeDao; } public void setJobTaskDao(JobTaskDao jobTaskDao) { this.jobTaskDao = jobTaskDao; } public void setSelectedService(SelectedService selectedService) { this.selectedService = selectedService; } public FundRecordDao getFundRecordDao() { return fundRecordDao; } public void setFundRecordDao(FundRecordDao fundRecordDao) { this.fundRecordDao = fundRecordDao; } }