| | |
| | | package com.yeshi.fanli.service.manger.order;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Component;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
| | | import com.yeshi.fanli.entity.money.TeamRewardDebt;
|
| | | import com.yeshi.fanli.entity.order.CommonOrder;
|
| | | import com.yeshi.fanli.entity.order.HongBaoOrder;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
| | | import com.yeshi.fanli.exception.ParamsException;
|
| | | import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
|
| | | import com.yeshi.fanli.exception.money.TeamRewardDebtException;
|
| | | import com.yeshi.fanli.exception.order.TaoBaoOrderException;
|
| | | import com.yeshi.fanli.service.inter.money.TeamRewardDebtService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
|
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
|
| | | import com.yeshi.fanli.service.manger.money.TeamEincomeManager;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | |
|
| | | /**
|
| | | * 团队分红管理
|
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | | @Component
|
| | | public class TeamRewardManager {
|
| | |
|
| | | @Resource
|
| | | private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
|
| | | @Resource
|
| | | private TaoBaoOrderService taoBaoOrderService;
|
| | | @Resource
|
| | | private HongBaoOrderService hongBaoOrderService;
|
| | | @Resource
|
| | | private HongBaoV2Service hongBaoV2Service;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | |
|
| | | @Resource
|
| | | private TeamRewardDebtService teamRewardDebtService;
|
| | |
|
| | | @Resource
|
| | | private TeamEincomeManager teamEincomeManager;
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addToEincome(Long uid, Date date, BigDecimal money, int sourceType)
|
| | | throws TeamEincomeRecordException, ParamsException, TeamRewardDebtException {
|
| | | // 查询是否有欠账
|
| | | BigDecimal debtMoney = teamRewardDebtService.getTotalDebtMoney(uid, date);
|
| | | // 有欠账
|
| | | if (debtMoney.compareTo(new BigDecimal(0)) > 0)
|
| | | money = teamRewardDebtService.repayDebtByUid(uid, date, money);
|
| | |
|
| | | teamEincomeManager.addTeamReward(uid, date, money, sourceType);
|
| | | }
|
| | |
|
| | | public void weiQuan(String orderNo, int sourceType, String tradeId)
|
| | | throws TaoBaoOrderException, TeamRewardDebtException {
|
| | | if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {// 只处理淘宝的维权
|
| | | TaoBaoWeiQuanOrder taoBaoWeiQuanOrder = taoBaoWeiQuanOrderService.selectByTradeId(tradeId);
|
| | |
|
| | | // 只处理维权成功
|
| | | if (!taoBaoWeiQuanOrder.getState().startsWith("维权成功"))
|
| | | return;
|
| | | TaoBaoOrder taoBaoOrder = taoBaoOrderService.selectByTradeId(tradeId);
|
| | | if (taoBaoOrder == null)
|
| | | return;
|
| | |
|
| | | if (taoBaoOrder.getSettlement() == null)
|
| | | throw new TaoBaoOrderException(1, "订单未更新");
|
| | |
|
| | | CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(sourceType, tradeId);
|
| | | if (commonOrder == null)
|
| | | return;
|
| | |
|
| | | // 查询订单
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrder.getId());
|
| | |
|
| | | if (hongBaoOrder == null)
|
| | | return;
|
| | |
|
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
|
| | |
|
| | | if (children == null)
|
| | | return;
|
| | |
|
| | | for (HongBaoV2 child : children) {
|
| | | if (child != null)//
|
| | | {
|
| | | if (child.getState() == HongBaoV2.STATE_SHIXIAO)
|
| | | continue;
|
| | |
|
| | | BigDecimal drawBackMoney = computeDrawBackMoney(taoBaoOrder.getSettlement(),
|
| | | taoBaoWeiQuanOrder.getMoney(), child.getMoney());
|
| | | if (drawBackMoney.compareTo(new BigDecimal(0)) <= 0)
|
| | | continue;
|
| | |
|
| | | TeamRewardDebt oldDebt = teamRewardDebtService.selectBySourceId(child.getId());
|
| | | if (oldDebt != null)
|
| | | continue;
|
| | |
|
| | | if (child.getPreGetTime() == null) {
|
| | | throw new TeamRewardDebtException(2, "订单还未更新");
|
| | | }
|
| | |
|
| | | TeamRewardDebt debt = new TeamRewardDebt();
|
| | | debt.setCreateTime(new Date());
|
| | | debt.setOriginMoney(drawBackMoney);
|
| | | debt.setSourceId(child.getId());
|
| | | debt.setTradeId(tradeId);
|
| | | debt.setUid(child.getUserInfo().getId());
|
| | | debt.setEstimatePayTime(child.getPreGetTime());
|
| | | teamRewardDebtService.addDebt(debt);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private BigDecimal computeDrawBackMoney(BigDecimal settlement, BigDecimal wqMoney, BigDecimal hongBaoMoney) {
|
| | | BigDecimal money = (hongBaoMoney.multiply(wqMoney)).divide(settlement, 2, BigDecimal.ROUND_UP);
|
| | | if (money.compareTo(hongBaoMoney) > 0)
|
| | | money = hongBaoMoney;
|
| | | return money;
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.service.manger.order; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2; |
| | | import com.yeshi.fanli.entity.money.TeamRewardDebt; |
| | | import com.yeshi.fanli.entity.order.CommonOrder; |
| | | import com.yeshi.fanli.entity.order.HongBaoOrder; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; |
| | | import com.yeshi.fanli.exception.ParamsException; |
| | | import com.yeshi.fanli.exception.money.TeamEincomeRecordException; |
| | | import com.yeshi.fanli.exception.money.TeamRewardDebtException; |
| | | import com.yeshi.fanli.exception.order.TaoBaoOrderException; |
| | | import com.yeshi.fanli.service.inter.money.TeamRewardDebtService; |
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service; |
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; |
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService; |
| | | import com.yeshi.fanli.service.manger.money.TeamEincomeManager; |
| | | import com.yeshi.fanli.util.Constant; |
| | | |
| | | /** |
| | | * 团队分红管理 |
| | | * @author Administrator |
| | | * |
| | | */ |
| | | @Component |
| | | public class TeamRewardManager { |
| | | |
| | | @Resource |
| | | private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService; |
| | | @Resource |
| | | private TaoBaoOrderService taoBaoOrderService; |
| | | @Resource |
| | | private HongBaoOrderService hongBaoOrderService; |
| | | @Resource |
| | | private HongBaoV2Service hongBaoV2Service; |
| | | |
| | | @Resource |
| | | private CommonOrderService commonOrderService; |
| | | |
| | | @Resource |
| | | private TeamRewardDebtService teamRewardDebtService; |
| | | |
| | | @Resource |
| | | private TeamEincomeManager teamEincomeManager; |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addToEincome(Long uid, Date date, BigDecimal money, int sourceType) |
| | | throws TeamEincomeRecordException, ParamsException, TeamRewardDebtException { |
| | | // 查询是否有欠账 |
| | | BigDecimal debtMoney = teamRewardDebtService.getTotalDebtMoney(uid, date); |
| | | // 有欠账 |
| | | if (debtMoney.compareTo(new BigDecimal(0)) > 0) |
| | | money = teamRewardDebtService.repayDebtByUid(uid, date, money); |
| | | |
| | | teamEincomeManager.addTeamReward(uid, date, money, sourceType); |
| | | } |
| | | |
| | | /** |
| | | * 处理邀请维权 |
| | | * @param orderNo |
| | | * @param sourceType |
| | | * @param tradeId |
| | | * @throws TaoBaoOrderException |
| | | * @throws TeamRewardDebtException |
| | | */ |
| | | public void weiQuan(String orderNo, int sourceType, String tradeId) |
| | | throws TaoBaoOrderException, TeamRewardDebtException { |
| | | if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {// 只处理淘宝的维权 |
| | | TaoBaoWeiQuanOrder taoBaoWeiQuanOrder = taoBaoWeiQuanOrderService.selectByTradeId(tradeId); |
| | | |
| | | // 只处理维权成功 |
| | | if (!taoBaoWeiQuanOrder.getState().startsWith("维权成功")) |
| | | return; |
| | | TaoBaoOrder taoBaoOrder = taoBaoOrderService.selectByTradeId(tradeId); |
| | | if (taoBaoOrder == null) |
| | | return; |
| | | |
| | | if (taoBaoOrder.getSettlement() == null) |
| | | throw new TaoBaoOrderException(1, "订单未更新"); |
| | | |
| | | CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(sourceType, tradeId); |
| | | if (commonOrder == null) |
| | | return; |
| | | |
| | | // 查询订单 |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrder.getId()); |
| | | |
| | | if (hongBaoOrder == null) |
| | | return; |
| | | |
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); |
| | | |
| | | if (children == null) |
| | | return; |
| | | |
| | | for (HongBaoV2 child : children) { |
| | | if (child != null)// |
| | | { |
| | | if (child.getState() == HongBaoV2.STATE_SHIXIAO) |
| | | continue; |
| | | |
| | | BigDecimal drawBackMoney = computeDrawBackMoney(taoBaoOrder.getSettlement(), |
| | | taoBaoWeiQuanOrder.getMoney(), child.getMoney()); |
| | | if (drawBackMoney.compareTo(new BigDecimal(0)) <= 0) |
| | | continue; |
| | | |
| | | TeamRewardDebt oldDebt = teamRewardDebtService.selectBySourceId(child.getId()); |
| | | if (oldDebt != null) |
| | | continue; |
| | | |
| | | if (child.getPreGetTime() == null) { |
| | | throw new TeamRewardDebtException(2, "订单还未更新"); |
| | | } |
| | | |
| | | TeamRewardDebt debt = new TeamRewardDebt(); |
| | | debt.setCreateTime(new Date()); |
| | | debt.setOriginMoney(drawBackMoney); |
| | | debt.setSourceId(child.getId()); |
| | | debt.setTradeId(tradeId); |
| | | debt.setSourceType(sourceType); |
| | | debt.setUid(child.getUserInfo().getId()); |
| | | debt.setEstimatePayTime(child.getPreGetTime()); |
| | | teamRewardDebtService.addDebt(debt); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private BigDecimal computeDrawBackMoney(BigDecimal settlement, BigDecimal wqMoney, BigDecimal hongBaoMoney) { |
| | | BigDecimal money = (hongBaoMoney.multiply(wqMoney)).divide(settlement, 2, BigDecimal.ROUND_UP); |
| | | if (money.compareTo(hongBaoMoney) > 0) |
| | | money = hongBaoMoney; |
| | | return money; |
| | | } |
| | | |
| | | } |