From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java | 618 +++++++++++++++++++++++++------------------------------ 1 files changed, 280 insertions(+), 338 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java index 6a14fc8..7b160d6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java @@ -1,338 +1,280 @@ -package com.yeshi.fanli.service.manger.order; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import com.yeshi.fanli.entity.bus.user.ThreeSale; -import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic; -import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; -import com.yeshi.fanli.entity.money.UserMoneyDetail; -import com.yeshi.fanli.entity.order.dividents.TeamDividentsDebt; -import com.yeshi.fanli.entity.order.dividents.TeamDividentsRecord; -import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrder; -import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceUser; -import com.yeshi.fanli.exception.ParamsException; -import com.yeshi.fanli.exception.money.TeamDividentsDebtException; -import com.yeshi.fanli.exception.money.UserMoneyDetailException; -import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException; -import com.yeshi.fanli.service.inter.money.TeamDividentsDebtService; -import com.yeshi.fanli.service.inter.money.UserMoneyService; -import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; -import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsRecordService; -import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderService; -import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService; -import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; - -/** - * 鍥㈤槦鍒嗙孩绠$悊 - * @author Administrator - * - */ -@Component -public class TeamDividentsManager { - - @Resource - private TeamDividentsSourceOrderService teamDividentsSourceOrderService; - - @Resource - private TeamDividentsSourceUserService teamDividentsSourceUserService; - - @Resource - private TeamDividentsRecordService teamDividentsRecordService; - - @Resource - private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private TeamUserLevelStatisticService teamUserLevelStatisticService; - - @Resource - private TeamDividentsDebtService teamDividentsDebtService; - - @Resource - private UserMoneyService userMoneyService; - - @Resource - private HongBaoManageService hongBaoManageService; - - /** - * 寮�濮嬪垎绾� - * @Title: startDividents - * @Description: - * @param sourceUid -婧愮敤鎴� - * void 杩斿洖绫诲瀷 - * @throws - */ - @Transactional(rollbackFor = Exception.class) - public void startDividents(Long sourceUid) throws ParamsException { - String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"); - Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); - startDividents(sourceUid, preSendTime); - } - - // 鏄惁鍙互鍒嗙孩 - private boolean isCanDividents(TeamUserLevelStatistic tus) { - if (Constant.IS_TEST) - return true; - - if (tus != null && (tus.getLevel() == UserLevelEnum.highVIP || tus.getLevel() == UserLevelEnum.superVIP - || tus.getLevel() == UserLevelEnum.tearcher)) { - if (tus.getLevel() == UserLevelEnum.highVIP) { - int vipFirstCount = tus.getNormalFirstCount() + tus.getHighFirstCount() + tus.getSuperFirstCount() - + tus.getTearcherFirstCount(); - if (vipFirstCount >= 3)// 鐩存帴绮変笣鏅�氫細鍛樼瓑绾т互涓婄殑鐢ㄦ埛>=3 - return true; - } else if (tus.getLevel() == UserLevelEnum.superVIP) { - int firstCount = tus.getSuperFirstCount() + tus.getTearcherFirstCount(); - int secondCount = tus.getNormalSecondCount() + tus.getHighSecondCount() + tus.getSuperSecondCount() - + tus.getTearcherSecondCount(); - if (firstCount >= 3 && secondCount >= 3) {// 鐩存帴绮変笣瓒呯骇浼氬憳绛夌骇浠ヤ笂鐨勭敤鎴�>=3 - // 闂存帴绮変笣鏅�氫細鍛樹互涓婄瓑绾�>=3 - return true; - } - } else { - int firstCount = tus.getSuperFirstCount() + tus.getTearcherFirstCount(); - int secondCount = tus.getHighSecondCount() + tus.getSuperSecondCount() + tus.getTearcherSecondCount(); - if (firstCount >= 3 && secondCount >= 3) {// 鐩存帴绮変笣瓒呯骇浼氬憳绛夌骇浠ヤ笂鐨勭敤鎴�>=3 - // 闂存帴绮変笣楂樼骇浼氬憳浠ヤ笂绛夌骇>=3 - return true; - } - } - } - return false; - } - - @Transactional(rollbackFor = Exception.class) - public void startDividents(Long sourceUid, Date preSendTime) throws ParamsException { - String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd"); - // 鏌ヨ鍑哄彲鐢ㄤ簬鍒嗙孩鐨勭敤鎴风殑鎬婚噾棰� - long count = teamDividentsSourceOrderService.countCanSendByUidAndPreSendTime(sourceUid, preSendTime); - int pageSize = 1000; - int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); - List<TeamDividentsSourceOrder> totalList = new ArrayList<>(); - for (int p = 0; p < page; p++) { - List<TeamDividentsSourceOrder> list = teamDividentsSourceOrderService - .listCanSendByUidAndPreSendTime(sourceUid, preSendTime, p + 1, pageSize); - if (list != null && list.size() > 0) - totalList.addAll(list); - } - - BigDecimal totalMoney = new BigDecimal(0); - - for (TeamDividentsSourceOrder order : totalList) { - TeamDividentsSourceOrder sourceOrder = teamDividentsSourceOrderService - .selectByPrimaryKeyForUpdate(order.getId()); - if (sourceOrder != null && sourceOrder.getState() == TeamDividentsSourceOrder.STATE_CAN_SEND) { - totalMoney = totalMoney.add(sourceOrder.getMoney()); - teamDividentsSourceOrderService.send(sourceOrder.getId()); - } - } - - // 鍒嗙孩閲戦涓�0鐨勪笉鍙備笌 - if (totalMoney.compareTo(new BigDecimal(0)) <= 0) - return; - - // 鏌ヨ鍑哄彲浠ュ弬涓庡垎绾㈢殑鐢ㄦ埛 - List<ThreeSale> threeSalesList = threeSaleSerivce.getMyBossDeepList(sourceUid); - if (threeSalesList == null) - return; - - Map<Long, UserLevelEnum> uidLevel = new HashMap<Long, UserLevelEnum>(); - for (ThreeSale ts : threeSalesList) { - if (ts.getBoss() != null) { - TeamUserLevelStatistic tus = teamUserLevelStatisticService.selectByUid(ts.getBoss().getId()); - if (tus == null) - teamUserLevelStatisticService.initData(ts.getBoss().getId()); - tus = teamUserLevelStatisticService.selectByUid(ts.getBoss().getId()); - - if (isCanDividents(tus)) { - uidLevel.put(tus.getId(), tus.getLevel()); - } - } - } - - BigDecimal perDivident = computePerDivident(uidLevel, totalMoney); - for (Iterator<Long> its = uidLevel.keySet().iterator(); its.hasNext();) { - Long uid = its.next(); - BigDecimal dividents = computeUserDivident(perDivident, uidLevel.get(uid)); - // 灏嗚祫閲戝垎閰嶅埌鍙備笌鍒嗙孩鐨勭敤鎴� - TeamDividentsSourceUser teamDividentsSourceUser = new TeamDividentsSourceUser(); - teamDividentsSourceUser.setDay(day); - teamDividentsSourceUser.setMoney(dividents); - teamDividentsSourceUser.setSourceUid(sourceUid); - teamDividentsSourceUser.setTargetUid(uid); - teamDividentsSourceUserService.addTeamDividentsSourceUser(teamDividentsSourceUser); - } - // if (1 / 0 > 0) - // return; - } - - // 璁$畻骞冲潎鍒嗙孩 - private BigDecimal computePerDivident(Map<Long, UserLevelEnum> uidLevels, BigDecimal totalMoney) { - int count = 0; - for (Iterator<Long> its = uidLevels.keySet().iterator(); its.hasNext();) { - Long uid = its.next(); - if (uidLevels.get(uid) == UserLevelEnum.highVIP) { - count += 1; - } else if (uidLevels.get(uid) == UserLevelEnum.superVIP) { - count += 2; - } - } - return MoneyBigDecimalUtil.div(totalMoney, new BigDecimal(count)); - } - - private BigDecimal computeUserDivident(BigDecimal perDivident, UserLevelEnum userLevel) { - if (userLevel == UserLevelEnum.highVIP) { - return perDivident; - } else if (userLevel == UserLevelEnum.superVIP) { - return MoneyBigDecimalUtil.mul(perDivident, new BigDecimal(2)); - } else if (userLevel == UserLevelEnum.tearcher) { - return MoneyBigDecimalUtil.mul(perDivident, new BigDecimal(2)); - } - return null; - } - - /** - * 鍒嗙孩璁$畻鏄惁瀹屾垚 - * @Title: isSourceUserComupteFinish - * @Description: - * @return - * boolean 杩斿洖绫诲瀷 - * @throws - */ - public boolean isSourceUserComupteFinish(String day) { - Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); - long count = teamDividentsSourceOrderService.countCanSendByUidAndPreSendTime(null, preSendTime); - return count == 0; - } - - /** - * @throws TeamDividentsDebtException - * 娣诲姞鍒嗙孩璁板綍 - * @Title: addDividentsRecord - * @Description: - * @param uid -鐢ㄦ埛ID - * @param money -鍒嗙孩閲戦 - * @param day -鍒嗙孩鏃ユ湡 - * void 杩斿洖绫诲瀷 - * @throws - */ - @Transactional(rollbackFor = Exception.class) - public void addDividents(Long uid, String day) - throws TeamDividentsRecordException, TeamDividentsDebtException, UserMoneyDetailException, ParamsException { - BigDecimal money = teamDividentsSourceUserService.sumMoneyByUidAndDay(uid, day); - // 鏌ヨ闇�瑕佹墸闄ょ殑璧勯噾 - List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, 1, 1000); - for (TeamDividentsDebt debt : list) { - if (money.subtract(debt.getLeftMoney()).compareTo(new BigDecimal(0)) >= 0) {// 杩樻湁閽辫繕 - money = money.subtract(debt.getLeftMoney()); - teamDividentsDebtService.repayDebt(debt.getId(), debt.getLeftMoney()); - } else if (money.compareTo(new BigDecimal(0)) > 0) { - teamDividentsDebtService.repayDebt(debt.getId(), money); - money = new BigDecimal(0); - } else// 娌℃湁閽辫繕浜� - break; - } - - // 缁熻璧勯噾 - TeamDividentsRecord record = new TeamDividentsRecord(); - record.setDay(day); - record.setMoney(money); - record.setState(TeamDividentsRecord.STATE_VALID); - record.setUid(uid); - teamDividentsRecordService.addTeamDividentsRecord(record); - - // 鏈夊垎绾㈡墠鏄剧ず璧勯噾鏄庣粏 - if (money.compareTo(new BigDecimal(0)) > 0) { - UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date()); - // 澧炲姞璧勯噾 - userMoneyService.addUserMoney(uid, money, detail); - // TODO 鍔犲叆閫氱煡 - } - - } - - /** - * @throws TeamDividentsDebtException - * 璁㈠崟缁存潈 - * @Title: weiQuan - * @Description: - * @param orderNo - * @param tradeId - * @param sourceType - * void 杩斿洖绫诲瀷 - * @throws - */ - @Transactional(rollbackFor = Exception.class) - public void weiQuan(String orderNo, int sourceType) throws TeamDividentsDebtException { - // 鏌ヨ璁㈠崟鏄惁宸茬粡鍒嗙孩 - TeamDividentsSourceOrder sourceOrder = teamDividentsSourceOrderService.selectByOrderNoSourceType(orderNo, - sourceType); - if (sourceOrder == null) - return; - if (sourceOrder.getState() == TeamDividentsSourceOrder.STATE_INVALID) - return; - - if (sourceOrder.getState() == TeamDividentsSourceOrder.STATE_ALREADY_SEND) {// 宸茬粡鍙戦�侊紝闇�瑕佸弬涓庡垎绾㈢殑浜哄垎鎽� - BigDecimal money = sourceOrder.getMoney(); - // 鏌ヨ鍙備笌杩欎竴鍗曞垎绾㈢殑浜� - String day = TimeUtil.getGernalTime(sourceOrder.getSendTime().getTime(), "yyyy-MM-dd"); - if (Constant.IS_TEST) - day = TimeUtil.getGernalTime(sourceOrder.getPreSendTime().getTime(), "yyyy-MM-dd"); - - List<TeamDividentsSourceUser> list = teamDividentsSourceUserService - .listBySourceUidAndDay(sourceOrder.getUid(), day); - // 璁$畻姣忎釜浜虹殑姣斾緥 - BigDecimal total = new BigDecimal(0); - for (TeamDividentsSourceUser su : list) { - total = total.add(su.getMoney()); - } - - for (TeamDividentsSourceUser su : list) { - BigDecimal debtMoney = MoneyBigDecimalUtil.divUp(money.multiply(su.getMoney()), total); - // 闇�瑕佸伩杩樼殑璧勯噾 - TeamDividentsDebt debt = new TeamDividentsDebt(); - debt.setLeftMoney(debtMoney); - debt.setOriginMoney(debtMoney); - debt.setOrderNo(orderNo); - debt.setSourceType(sourceType); - debt.setUid(su.getTargetUid()); - // 鍔犲叆寰呭伩杩樿褰� - teamDividentsDebtService.addDebt(debt); - } - } else if (sourceOrder.getState() == TeamDividentsSourceOrder.STATE_CAN_SEND) { - teamDividentsSourceOrderService.invalidOrder(orderNo, sourceType, "璁㈠崟缁存潈"); - } - - } - - /** - * 鑾峰彇婧愯鍗曢渶瑕佸弬涓庡垎绾㈢殑姣斾緥 - * @Title: getSourceOrderDividentsRate - * @Description: - * @param level - * @return - * BigDecimal 杩斿洖绫诲瀷 - * @throws - */ - public BigDecimal getSourceOrderDividentsRate(UserLevelEnum level) { - String rate = hongBaoManageService.get("team_source_order_dividents_" + level.getLevel()); - return new BigDecimal(rate); - } - -} +package com.yeshi.fanli.service.manger.order; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import com.yeshi.fanli.entity.order.dividents.TeamDividentsDebt; +import com.yeshi.fanli.entity.order.dividents.TeamDividentsRecord; +import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrder; +import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrderUserMap; +import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceUser; +import com.yeshi.fanli.exception.ParamsException; +import com.yeshi.fanli.exception.money.TeamDividentsDebtException; +import com.yeshi.fanli.exception.money.TeamEincomeRecordException; +import com.yeshi.fanli.exception.money.UserMoneyDetailException; +import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException; +import com.yeshi.fanli.service.inter.money.TeamDividentsDebtService; +import com.yeshi.fanli.service.inter.money.UserMoneyService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsRecordService; +import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderService; +import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService; +import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; +import com.yeshi.fanli.service.manger.money.TeamEincomeManager; +import org.yeshi.utils.TimeUtil; + +/** + * 鍥㈤槦鍒嗙孩绠$悊 + * @author Administrator + * + */ +@Component +public class TeamDividentsManager { + + @Resource + private TeamDividentsSourceManager teamDividentsSourceManager; + + @Resource + private TeamDividentsSourceOrderService teamDividentsSourceOrderService; + + @Resource + private TeamDividentsSourceOrderUserMapService teamDividentsSourceOrderUserMapService; + + @Resource + private TeamDividentsSourceUserService teamDividentsSourceUserService; + + @Resource + private TeamDividentsRecordService teamDividentsRecordService; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private TeamUserLevelStatisticService teamUserLevelStatisticService; + + @Resource + private TeamDividentsDebtService teamDividentsDebtService; + + @Resource + private UserMoneyService userMoneyService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private TeamEincomeManager teamEincomeManager; + + /** + * 寮�濮嬪垎绾� + * @Title: startDividents + * @Description: + * @param sourceUid -婧愮敤鎴� + * void 杩斿洖绫诲瀷 + * @throws + */ + @Transactional(rollbackFor = Exception.class) + public void startDividents(Long sourceUid) throws ParamsException { + String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"); + Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); + startDividents(sourceUid, preSendTime); + } + + @Transactional(rollbackFor = Exception.class) + public void startDividents(Long sourceUid, Date preSendTime) throws ParamsException { + String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd"); + // 鏌ヨ鍑哄彲鐢ㄤ簬鍒嗙孩鐨勭敤鎴风殑鎬婚噾棰� + long count = teamDividentsSourceOrderUserMapService.countCanSend(sourceUid, preSendTime); + int pageSize = 1000; + int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + List<TeamDividentsSourceOrderUserMap> totalList = new ArrayList<>(); + for (int p = 0; p < page; p++) { + List<TeamDividentsSourceOrderUserMap> list = teamDividentsSourceOrderUserMapService.listCanSend(sourceUid, + preSendTime, p + 1, pageSize); + if (list != null && list.size() > 0) + totalList.addAll(list); + } + + Map<String, BigDecimal> moneyMap = new HashMap<>(); + + for (TeamDividentsSourceOrderUserMap order : totalList) { + TeamDividentsSourceOrderUserMap map = teamDividentsSourceOrderUserMapService + .selectByPrimaryKeyForUpdate(order.getId()); + if (map != null && map.getState() == TeamDividentsSourceOrderUserMap.STATE_JS) { + String key = map.getTargetUid() + "#" + map.getType(); + // 璁$畻鍒嗙孩瀵瑰簲鐨勮祫閲� + if (moneyMap.get(key) == null) + moneyMap.put(key, new BigDecimal(0)); + moneyMap.put(key, moneyMap.get(key).add(map.getMoney())); + teamDividentsSourceOrderUserMapService.send(map.getId()); + } + } + + for (Iterator<String> its = moneyMap.keySet().iterator(); its.hasNext();) { + String key = its.next(); + Long uid = Long.parseLong(key.split("#")[0]); + Integer type = Integer.parseInt(key.split("#")[1]); + BigDecimal dividents = moneyMap.get(key).setScale(2, BigDecimal.ROUND_DOWN); + // 灏嗚祫閲戝垎閰嶅埌鍙備笌鍒嗙孩鐨勭敤鎴� + TeamDividentsSourceUser teamDividentsSourceUser = new TeamDividentsSourceUser(); + teamDividentsSourceUser.setDay(day); + teamDividentsSourceUser.setMoney(dividents); + teamDividentsSourceUser.setSourceUid(sourceUid); + teamDividentsSourceUser.setTargetUid(uid); + teamDividentsSourceUser.setType(type); + teamDividentsSourceUserService.addTeamDividentsSourceUser(teamDividentsSourceUser); + } + } + + /** + * 鍒嗙孩璁$畻鏄惁瀹屾垚 + * @Title: isSourceUserComupteFinish + * @Description: + * @return + * boolean 杩斿洖绫诲瀷 + * @throws + */ + public boolean isSourceUserComupteFinish(String day) { + Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); + long count = teamDividentsSourceOrderUserMapService.countCanSend(null, preSendTime); + return count == 0; + } + + private void addToTeamEincome(Long uid, Date preSendTime, int type) throws TeamDividentsRecordException, + TeamDividentsDebtException, UserMoneyDetailException, ParamsException, TeamEincomeRecordException { + String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd"); + BigDecimal money = teamDividentsSourceUserService.sumMoneyByUidAndDay(uid, day, type); + // 鏌ヨ闇�瑕佹墸闄ょ殑璧勯噾 + List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, preSendTime, 1, 1000); + for (TeamDividentsDebt debt : list) { + if (money.subtract(debt.getLeftMoney()).compareTo(new BigDecimal(0)) >= 0) {// 杩樻湁閽辫繕 + money = money.subtract(debt.getLeftMoney()); + teamDividentsDebtService.repayDebt(debt.getId(), debt.getLeftMoney()); + } else if (money.compareTo(new BigDecimal(0)) > 0) { + teamDividentsDebtService.repayDebt(debt.getId(), money); + money = new BigDecimal(0); + } else// 娌℃湁閽辫繕浜� + break; + } + + // 缁熻璧勯噾 + TeamDividentsRecord record = new TeamDividentsRecord(); + record.setDay(day); + record.setMoney(money); + record.setState(TeamDividentsRecord.STATE_VALID); + record.setUid(uid); + record.setType(type); + teamDividentsRecordService.addTeamDividentsRecord(record); + + // 鏈夊垎绾㈡墠鏄剧ず璧勯噾鏄庣粏 + if (money.compareTo(new BigDecimal(0)) > 0) { + teamEincomeManager.addTeamDividents(uid, preSendTime, money, type); + } + + } + + /** + * @throws TeamDividentsDebtException + * 娣诲姞鍒嗙孩璁板綍 + * @Title: addDividentsRecord + * @Description: + * @param uid -鐢ㄦ埛ID + * @param money -鍒嗙孩閲戦 + * @param day -鍒嗙孩鏃ユ湡 + * void 杩斿洖绫诲瀷 + * @throws + */ + @Transactional(rollbackFor = Exception.class) + public void addToTeamEincome(Long uid, Date preSendTime) throws TeamDividentsRecordException, + TeamDividentsDebtException, UserMoneyDetailException, ParamsException, TeamEincomeRecordException { + addToTeamEincome(uid, preSendTime, TeamDividentsSourceOrderUserMap.TYPE_MORE_THAN_2); + addToTeamEincome(uid, preSendTime, TeamDividentsSourceOrderUserMap.TYPE_TEAM_DIVIDENTS); + } + + /** + * @throws TeamDividentsDebtException + * 璁㈠崟缁存潈 + * @Title: weiQuan + * @Description: + * @param orderNo + * @param tradeId + * @param sourceType + * void 杩斿洖绫诲瀷 + * @throws + */ + @Transactional(rollbackFor = Exception.class) + public void weiQuan(String orderNo, int sourceType) throws TeamDividentsDebtException { + // 鏌ヨ璁㈠崟鏄惁宸茬粡鍒嗙孩 + TeamDividentsSourceOrder order = teamDividentsSourceOrderService.selectByOrderNoSourceType(orderNo, sourceType); + if (order == null) + return; + + List<TeamDividentsSourceOrderUserMap> mapList = teamDividentsSourceOrderUserMapService + .listBySourceOrderId(order.getId()); + if (mapList == null || mapList.size() == 0) + return; + + int state = mapList.get(0).getState(); + + if (state == TeamDividentsSourceOrderUserMap.STATE_SX) + return; + + if (state == TeamDividentsSourceOrderUserMap.STATE_YILINGQU) {// 宸茬粡鍙戦�侊紝闇�瑕佸弬涓庡垎绾㈢殑浜哄垎鎽� + + // 鎸塙ID灏佽缁熻璧勯噾 + Map<Long, TeamDividentsSourceOrderUserMap> orderUserMap = new HashMap<>(); + for (TeamDividentsSourceOrderUserMap map : mapList) { + if (orderUserMap.get(map.getTargetUid()) == null) + orderUserMap.put(map.getTargetUid(), map); + else { + TeamDividentsSourceOrderUserMap oldMap = orderUserMap.get(map.getTargetUid()); + oldMap.setMoney(map.getMoney().add(oldMap.getMoney())); + orderUserMap.put(map.getTargetUid(), oldMap); + } + } + + for (Iterator<Long> its = orderUserMap.keySet().iterator(); its.hasNext();) { + Long uid = its.next(); + TeamDividentsSourceOrderUserMap map = orderUserMap.get(uid); + + String day = TimeUtil.getGernalTime(map.getPreSendTime().getTime(), "yyyy-MM-dd"); + // 鏌ヨ鏈鎬诲叡鐨勮繑鍒� + TeamDividentsSourceUser sourceUser = teamDividentsSourceUserService + .selectBySourceUidAndDayAndUid(map.getSourceUid(), map.getTargetUid(), day); + if (sourceUser != null) { + // 涓嶈兘鍑虹幇鍊掓瑺涓�鍒嗙殑鎯呭喌 + BigDecimal debtMoney = map.getMoney().setScale(2, BigDecimal.ROUND_UP); + if (debtMoney.compareTo(sourceUser.getMoney()) > 0) + debtMoney = sourceUser.getMoney(); + + // 闇�瑕佸伩杩樼殑璧勯噾 + TeamDividentsDebt debt = new TeamDividentsDebt(); + debt.setLeftMoney(debtMoney); + debt.setOriginMoney(debtMoney); + debt.setOrderNo(orderNo); + debt.setSourceType(sourceType); + debt.setUid(map.getTargetUid()); + // 鍔犲叆寰呭伩杩樿褰� + teamDividentsDebtService.addDebt(debt); + } + + } + + } else if (order.getState() == TeamDividentsSourceOrderUserMap.STATE_JS + || order.getState() == TeamDividentsSourceOrderUserMap.STATE_FK) { + teamDividentsSourceManager.invalidByOrder(orderNo, sourceType, "璁㈠崟缁存潈"); + } + } + +} -- Gitblit v1.8.0