From b6c37e4bc38db88a360d0f2c6099183f9bb75bdc Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期一, 22 四月 2019 14:31:59 +0800 Subject: [PATCH] 券推送插入 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java | 119 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 58 insertions(+), 61 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java index 795c150..edd78d3 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java @@ -1,7 +1,7 @@ package com.yeshi.fanli.service.impl.user; -import java.io.Serializable; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -24,25 +24,21 @@ import com.yeshi.fanli.dao.mybatis.ExtractMapper; import com.yeshi.fanli.dao.mybatis.ExtractRecordMapper; import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper; -import com.yeshi.fanli.dao.mybatis.MoneyRecordMapper; import com.yeshi.fanli.dao.mybatis.PayInfoMapper; -import com.yeshi.fanli.dao.mybatis.SystemMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; -import com.yeshi.fanli.dao.user.AccountMessageDao; -import com.yeshi.fanli.dao.user.ExtractDao; -import com.yeshi.fanli.dao.user.ExtractRecordDao; -import com.yeshi.fanli.dao.user.MoneyRecordDao; import com.yeshi.fanli.dto.HongBao; import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo; import com.yeshi.fanli.entity.bus.user.Extract; import com.yeshi.fanli.entity.bus.user.ExtractAuditRecord; import com.yeshi.fanli.entity.bus.user.ExtractRecord; -import com.yeshi.fanli.entity.bus.user.MoneyRecord; +import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.PayInfo; +import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.money.UserMoneyDetail; +import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; import com.yeshi.fanli.exception.ExtractException; import com.yeshi.fanli.exception.NotExistObjectException; import com.yeshi.fanli.exception.ObjectStateException; @@ -50,13 +46,14 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemConfigService; +import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.push.PushService; -import com.yeshi.fanli.service.inter.user.AccountMessageService; import com.yeshi.fanli.service.inter.user.ExtractRecordService; import com.yeshi.fanli.service.inter.user.ExtractService; -import com.yeshi.fanli.service.inter.user.MoneyRecordService; +import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService; import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.UserMoneyDetailService; import com.yeshi.fanli.service.inter.user.UserNotificationService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; @@ -71,13 +68,7 @@ public class ExtractServiceImpl implements ExtractService { @Resource - private ExtractDao extractDao; - - @Resource private UserInfoService userInfoService; - - @Resource - private MoneyRecordService moneyRecordService; @Resource private ConfigService configService; @@ -87,10 +78,6 @@ @Resource private SystemConfigService systemConfigService; - - - @Resource - private AccountMessageService accountMessageService; @Resource private ExtractMapper extractMapper; @@ -102,19 +89,7 @@ private UserInfoMapper userInfoMapper; @Resource - private ExtractRecordDao extractRecordDao; - - @Resource - private MoneyRecordDao moneyRecordDao; - - @Resource - private AccountMessageDao accountMessageDao; - - @Resource private PayInfoMapper payInfoMapper; - - @Resource - private MoneyRecordMapper moneyRecordMapper; @Resource private AccountMessageMapper accountMessageMapper; @@ -123,10 +98,10 @@ private ExtractRecordMapper extractRecordMapper; @Resource - private SystemMapper systemMapper; + private HongBaoV2Mapper hongBaoV2Mapper; @Resource - private HongBaoV2Mapper hongBaoV2Mapper; + private HongBaoV2Service hongBaoV2Service; @Resource private PushService pushService; @@ -143,24 +118,16 @@ @Resource private AlipayAccountValidNormalHistoryMapper alipayAccountValidNormalHistoryMapper; - public List<Extract> getExtractInfoByUid(long uid) { - return extractDao.list("from Extract e where e.userInfo.id=? and e.state != 2", new Serializable[] { uid }); - } + @Resource + private UserMoneyDetailService userMoneyDetailService; + + @Resource + private UserAccountBindingHistoryService userAccountBindingHistoryService; @Transactional public Integer addExtract(Extract extract) { Integer integer = extract(extract); return integer; - } - - public List<Extract> getExtractList(int index) { - int start = index * Constant.PAGE_SIZE; - return extractDao.list("from Extract e order by e.id desc", start, Constant.PAGE_SIZE, new Serializable[] {}); - } - - public int getCount() { - Long lcount = extractDao.getCount("select count(e.id) from Extract e"); - return lcount.intValue(); } @Transactional @@ -184,7 +151,7 @@ } @Transactional - public synchronized void rejectExtract(long id, String reason, long extractTime, AdminUser admin) + public synchronized void rejectExtract(long id, String reason, AdminUser admin) throws ObjectStateException, NotExistObjectException { Extract find = extractMapper.selectByPrimaryKey(id); @@ -199,9 +166,6 @@ UserInfo user = find.getUserInfo(); userInfoMapper.addHongBaoByUid(user.getId(), find.getMoney()); - - // 鍒犻櫎鎻愮幇璁板綍 - moneyRecordMapper.deleteMoneyRecordByExtractId(id); // 鏇存柊鍘熸潵鐨勭姸鎬� Extract updateExtract = new Extract(); @@ -269,6 +233,13 @@ */ @Transactional private Integer extract(Extract extract) { + UserAccountBindingHistory history = userAccountBindingHistoryService + .getLatestHistory(extract.getUserInfo().getId(), UserAccountBindingHistory.TYPE_PHONE); + // 鎵嬫満鍙锋洿鎹㈢粦瀹氱殑7澶╁唴涓嶈兘鎻愮幇 + if (history != null && !history.getFirst() + && (System.currentTimeMillis() - history.getCreateTime().getTime()) < 1000 * 60 * 60 * 24 * 7L) + return 111; + final String autoExtract = configService.get("extract_way"); // 鏄惁鑷姩杞处 final String maxCount = configService.get("extract_count_day"); final String maxMoney = configService.get("extract_money_day"); @@ -292,11 +263,6 @@ // 鍑忓幓璐︽埛璧勯噾 userInfoMapper.subHongBaoByUid(extract.getUserInfo().getId(), extract.getMoney()); - - MoneyRecord moneyRecord = new MoneyRecord(user, null, extract.getMoney(), "鎻愮幇", "", extract.getExtractTime(), - 2); - moneyRecord.setExtract(extract); - moneyRecordMapper.insertSelective(moneyRecord); // 鏂扮増璧勯噾璇︽儏 try { @@ -531,16 +497,47 @@ */ @Override public Extract getExtractById(long id) { - return extractDao.find(Extract.class, id); + return extractMapper.selectByPrimaryKey(id); } + @Transactional @Override - public void checkExtract(String uid) throws ExtractException { - Long count = hongBaoV2Mapper.countByUidAndState(Long.parseLong(uid), HongBao.STATE_YILINGQU); + public void checkExtract(Long uid) throws ExtractException { + Long count = hongBaoV2Mapper.countByUidAndState(uid, HongBao.STATE_YILINGQU); if (count == null || count == 0) throw new ExtractException(1, "娌℃湁宸插埌璐︾殑绾㈠寘"); - List<Integer> list = extractMapper.checkExtract(uid); - if (list != null && list.size() > 0 && list.get(0) == 0) + // 鑾峰彇鎵�鏈夋敹鍏ユ墍寰� + BigDecimal hongBaoMoney = hongBaoV2Service.computeMoneyByUidAndState(uid, HongBaoV2.STATE_YILINGQU); + + Date now = new Date(); + // 鑾峰彇鎻愮幇锛岃幏鍙栨彁鐜伴獙璇� + List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>(); + typeList.add(UserMoneyDetailTypeEnum.extract); + typeList.add(UserMoneyDetailTypeEnum.extractReject); + typeList.add(UserMoneyDetailTypeEnum.extractVerify); + BigDecimal extractMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, new Date(0), + now); + extractMoney = extractMoney.abs(); + // 鑾峰彇缁存潈 + typeList = new ArrayList<>(); + typeList.add(UserMoneyDetailTypeEnum.weiQuan); + typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan); + typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); + typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); + typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct); + BigDecimal weiqaunMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, new Date(0), + now); + weiqaunMoney = weiqaunMoney.abs(); + + BigDecimal balance = userInfoService.selectByPKey(uid).getMyHongBao(); + + BigDecimal compensateMoney = extractMapper.computeCompensateByUid(uid); + if (compensateMoney == null) + compensateMoney = new BigDecimal(0); + + BigDecimal after = hongBaoMoney.subtract(extractMoney.add(weiqaunMoney).add(balance).add(compensateMoney)); + + if (after.compareTo(new BigDecimal("0")) != 0) throw new ExtractException(2, "缁撶畻璧勯噾寮傚父"); } -- Gitblit v1.8.0