From ad9fbd2c18f280ef9bba47f28353d367cf2d94e8 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期二, 14 五月 2019 11:28:03 +0800 Subject: [PATCH] Merge branch 'div_12' --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/ExtractServiceImpl.java | 86 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 78 insertions(+), 8 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 7d75d63..658d29b 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,6 +1,7 @@ package com.yeshi.fanli.service.impl.user; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -31,10 +32,13 @@ 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.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; @@ -42,11 +46,15 @@ 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.money.UserMoneyDebtService; import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.service.inter.user.ExtractRecordService; import com.yeshi.fanli.service.inter.user.ExtractService; +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; @@ -94,6 +102,9 @@ private HongBaoV2Mapper hongBaoV2Mapper; @Resource + private HongBaoV2Service hongBaoV2Service; + + @Resource private PushService pushService; @Resource @@ -107,6 +118,15 @@ @Resource private AlipayAccountValidNormalHistoryMapper alipayAccountValidNormalHistoryMapper; + + @Resource + private UserMoneyDetailService userMoneyDetailService; + + @Resource + private UserAccountBindingHistoryService userAccountBindingHistoryService; + + @Resource + private UserMoneyDebtService userMoneyDebtService; @Transactional public Integer addExtract(Extract extract) { @@ -217,6 +237,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"); @@ -227,10 +254,17 @@ return 3; } + // 鏈夊�熻捶鍏崇郴 + boolean isHaveToReplay = userMoneyDebtService.isHaveDebtToRepay(extract.getUserInfo().getId()); + if (isHaveToReplay) { + return 110; + } + Integer type = setExtractRecord(extract, maxCount, maxMoney); if (type != 0) { return type; } + extractMapper.insertSelective(extract); ExtractAuditRecord auditRecord = new ExtractAuditRecord(); @@ -260,7 +294,8 @@ if ("鏄�".equals(autoExtract)) { LogHelper.userInfo("uid=" + user.getId() + ",鎻愪氦杞处鐢宠!"); } else {// 鏆傛椂涓嶈嚜鍔ㄦ彁鐜� - transfer(extract, null); + // transfer(extract, null); + ; } return null; } @@ -343,15 +378,15 @@ Constant.alipayConfig.getAppId(), privateKey, "json", "gbk", null, "RSA2"); AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest(); String uuid = UUID.randomUUID().toString().replace("-", ""); - String appName = systemConfigService.get("appName", extract.getSystem()); + String appName = Constant.systemCommonConfig.getProjectChineseName(); JSONObject json = new JSONObject(); json.put("out_biz_no", uuid); json.put("payee_type", "ALIPAY_LOGONID"); json.put("payee_account", extract.getAccount()); json.put("amount", extract.getMoney()); - json.put("payer_show_name", appName + "鎻愮幇"); + json.put("payer_show_name", appName + "App" + "鎻愮幇"); json.put("payee_real_name", extract.getName()); - json.put("remark", "鏉ヨ嚜" + appName + "鐨勬彁鐜�"); + json.put("remark", "鏉ヨ嚜" + appName + "App" + "鐨勬彁鐜�"); request.setBizContent(json.toString()); AlipayFundTransToaccountTransferResponse response = null; try { @@ -477,13 +512,48 @@ 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) + // 鏌ヨ鏄惁鏈夋瑺璐� + boolean isDebt = userMoneyDebtService.isHaveDebtToRepay(uid); + if (isDebt) + throw new ExtractException(3, "鏈夋瑺璐︽湭杩�"); + // 鑾峰彇鎵�鏈夋敹鍏ユ墍寰� + 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