From 8e30aa7c1f0384f09278699318b4902b815b42a7 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 26 四月 2019 18:01:25 +0800 Subject: [PATCH] 维权返利初步修改,拼多多初步增加 --- fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDebtServiceImpl.java | 148 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 145 insertions(+), 3 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDebtServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDebtServiceImpl.java index b48c022..bc53c80 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDebtServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDebtServiceImpl.java @@ -1,16 +1,31 @@ package com.yeshi.fanli.service.impl.money; +import java.math.BigDecimal; import java.util.Date; import javax.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.money.UserMoneyDebtMapper; +import com.yeshi.fanli.dao.mybatis.money.UserMoneyDebtReturnHistoryMapper; +import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.money.UserMoneyDebt; import com.yeshi.fanli.entity.money.UserMoneyDebt.UserMoneyDebtTypeEnum; +import com.yeshi.fanli.entity.money.UserMoneyDebtReturnHistory; +import com.yeshi.fanli.entity.money.UserMoneyDetail; +import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack; import com.yeshi.fanli.exception.money.UserMoneyDebtException; +import com.yeshi.fanli.exception.money.UserMoneyDetailException; +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.taobao.TaoBaoOrderService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.UserMoneyService; +import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; @Service public class UserMoneyDebtServiceImpl implements UserMoneyDebtService { @@ -18,12 +33,33 @@ @Resource private UserMoneyDebtMapper userMoneyDebtMapper; + @Resource + private UserMoneyDebtReturnHistoryMapper userMoneyDebtReturnHistoryMapper; + + @Resource + private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService; + + @Resource + private TaoBaoOrderService taoBaoOrderService; + + @Resource + private HongBaoV2Service hongBaoV2Service; + + @Resource + private UserMoneyService userMoneyService; + + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + + @Resource + private UserInfoService userInfoService; + @Override public void addUserMoneyDebt(UserMoneyDebt debt) throws UserMoneyDebtException { if (debt == null) return; - if (debt.getType() == UserMoneyDebtTypeEnum.hongBao) { + if (debt.getType() == UserMoneyDebtTypeEnum.order) { if (debt.getSourceId() == null) throw new UserMoneyDebtException(1, "sourceId涓虹┖"); if (debt.getUid() == null || debt.getOriginMoney() == null) @@ -35,13 +71,119 @@ if (debt.getCreateTime() == null) debt.setCreateTime(new Date()); - UserMoneyDebt old = userMoneyDebtMapper.selectByUidAndSourceId(debt.getUid(), debt.getSourceId()); + UserMoneyDebt old = userMoneyDebtMapper.selectByUidAndTypeAndSourceId(debt.getUid(), debt.getType(), + debt.getSourceId()); if (old != null) { - throw new UserMoneyDebtException(3, "瀵瑰簲鐢ㄦ埛鐨勭孩鍖呭凡缁忓瓨鍦�"); + throw new UserMoneyDebtException(3, "瀵瑰簲缁存潈宸茬粡瀛樺湪"); } userMoneyDebtMapper.insertSelective(debt); } + } + @Override + public UserMoneyDebt selectByTypeAndSourceId(UserMoneyDebtTypeEnum type, Long sourceId) { + + return userMoneyDebtMapper.selectByTypeAndSourceId(type, sourceId); + } + + @Transactional + @Override + public void repayDebt(UserMoneyDebt debt, BigDecimal money) throws UserMoneyDebtException { + if (debt == null || debt.getId() == null) + throw new UserMoneyDebtException(1, "鍙傛暟涓嶅畬鏁�"); + + if (money == null || money.compareTo(new BigDecimal(0)) <= 0) + throw new UserMoneyDebtException(2, "鍋胯繕璧勯噾闇�澶т簬0"); + + UserMoneyDebt old = userMoneyDebtMapper.selectByPrimaryKey(debt.getId()); + if (old == null) + throw new UserMoneyDebtException(3, "鍊熻捶鍏崇郴涓嶅瓨鍦�"); + + if (old.getUid().longValue() != debt.getUid()) + throw new UserMoneyDebtException(4, "鍙兘鏈汉杩橀挶"); + + if (money.compareTo(old.getLeftMoney()) < 0) + throw new UserMoneyDebtException(5, "涓嶅杩�"); + + UserMoneyDebt update = new UserMoneyDebt(); + update.setId(old.getId()); + update.setUpdateTime(new Date()); + update.setLeftMoney(old.getLeftMoney().subtract(money)); + userMoneyDebtMapper.updateByPrimaryKeySelective(update); + + UserMoneyDebtReturnHistory history = new UserMoneyDebtReturnHistory(); + history.setBeiZhu(null); + history.setCreateTime(new Date()); + history.setDebt(old); + history.setMoney(money); + history.setUid(old.getUid()); + userMoneyDebtReturnHistoryMapper.insertSelective(history); + + if (debt.getType() == UserMoneyDebtTypeEnum.order) { + HongBaoV2 hb = hongBaoV2Service.selectByPrimaryKey(debt.getSourceId()); + if (hb == null) { + throw new UserMoneyDebtException(6, "鍋胯繕鐨勮鍗旾D涓嶅瓨鍦�"); + } + + TaoBaoWeiQuanDrawBack weiQuanDrawBack = taoBaoWeiQuanDrawBackService.selectByHongBaoId(hb.getId()); + if (weiQuanDrawBack == null) + throw new UserMoneyDebtException(7, "灏氭湭鎵惧埌閫�娆句俊鎭�"); + + // 璧勯噾鍙樺寲锛屾坊鍔犵敤鎴疯祫閲戣褰曪紝娣诲姞鐩稿叧閫氱煡 + Long uid = debt.getUid(); + switch (hb.getType()) { + case HongBaoV2.TYPE_ZIGOU: + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLiWeiQuan(uid, weiQuanDrawBack, + money); + userMoneyService.subUserMoney(uid, money, userMoneyDetail); + } catch (UserMoneyDetailException e) { + throw new UserMoneyDebtException(12, "鎻掑叆璧勯噾璇︽儏鍑洪敊"); + } + + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.fanliOrderWeiQuan(uid, weiQuanDrawBack.getOrderId(), money, + userInfoService.getMyHB(uid)); + + break; + case HongBaoV2.TYPE_SHARE_GOODS: + + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShareWeiQuan(debt.getUid(), + weiQuanDrawBack, money); + userMoneyService.subUserMoney(uid, money, userMoneyDetail); + + userMoneyMsgNotificationService.shareOrderWeiQuan(debt.getUid(), weiQuanDrawBack.getOrderId(), + money, userInfoService.getMyHB(uid)); + + } catch (UserMoneyDetailException e) { + throw new UserMoneyDebtException(12, "鎻掑叆璧勯噾璇︽儏鍑洪敊"); + } + break; + case HongBaoV2.TYPE_SHARE_ERJI: + case HongBaoV2.TYPE_SHARE_YIJI: + case HongBaoV2.TYPE_ERJI: + case HongBaoV2.TYPE_YIJI: + + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInviteWeiQuan(uid, weiQuanDrawBack, + money); + userMoneyService.subUserMoney(uid, money, userMoneyDetail); + } catch (UserMoneyDetailException e) { + throw new UserMoneyDebtException(12, "鎻掑叆璧勯噾璇︽儏鍑洪敊"); + } + + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.inviteOrderWeiQuan(uid, weiQuanDrawBack.getOrderId(), money, + userInfoService.getMyHB(uid)); + break; + + } + + } } } -- Gitblit v1.8.0