package com.yeshi.fanli.service.impl.user; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.user.ExtractRecordDao; import com.yeshi.fanli.entity.bus.user.Extract; import com.yeshi.fanli.entity.bus.user.ExtractRecord; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.exception.AdminLimitException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.user.ExtractRecordService; import com.yeshi.fanli.util.MoneyBigDecimalUtil; @Service public class ExtractRecordServiceImpl implements ExtractRecordService { @Resource private ExtractRecordDao extractRecordDao; @Resource private ConfigService configService; public void setExtractRecord(Extract extract) throws AdminLimitException { long uid = extract.getUserInfo().getId(); BigDecimal money = extract.getMoney(); List extractRecordList = extractRecordDao.list("from ExtractRecord er where er.userInfo.id=? ", new Serializable[] { uid }); if (extractRecordList.size() == 0) { ExtractRecord er = new ExtractRecord(); er.setCount(1); er.setMoney(money); er.setUserInfo(new UserInfo(uid)); extractRecordDao.save(er); } else { ExtractRecord er = extractRecordList.get(0); int count = er.getCount(); String maxCount = configService.get("extract_count_day"); int maxCountInt = Integer.parseInt(maxCount); if (count >= maxCountInt) { throw new AdminLimitException("超出每日最大提现次数!"); } BigDecimal oldMoney = er.getMoney(); BigDecimal sumMoney = MoneyBigDecimalUtil.add(money, oldMoney); String maxMoney = configService.get("extract_money_day"); BigDecimal maxMoneyDou = new BigDecimal(maxMoney); if (maxMoneyDou.compareTo(sumMoney) == -1) { BigDecimal exceedMoney = MoneyBigDecimalUtil.sub(sumMoney, maxMoneyDou); throw new AdminLimitException("超出每日最大提现金额!超出金额为:" + exceedMoney + "元"); } er.setCount(count + 1); er.setMoney(sumMoney); extractRecordDao.update(er); } } // 定时删除ExtractRecord记录 public void deleteExtractRecord() { extractRecordDao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Query query = session.createQuery("DELETE FROM ExtractRecord"); query.executeUpdate(); return null; } }); } @Override public ExtractRecord getExtractRecordByUid(Long uid) { List extractRecordList = extractRecordDao .list("from ExtractRecord er where er.userInfo.id=" + uid); if (extractRecordList == null || extractRecordList.size() == 0) return null; else return extractRecordList.get(0); } }