From f15acf7f2d57db3a32c574b0dfc21f564dca6024 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 24 三月 2020 12:01:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 176 insertions(+), 0 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java
new file mode 100644
index 0000000..2164908
--- /dev/null
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java
@@ -0,0 +1,176 @@
+package com.yeshi.fanli.service.impl.order;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.yeshi.fanli.dao.mybatis.order.OrderTeamRewardMapper;
+import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
+import com.yeshi.fanli.entity.order.OrderTeamReward;
+import com.yeshi.fanli.exception.order.OrderTeamRewardException;
+import com.yeshi.fanli.service.inter.order.OrderTeamRewardService;
+import com.yeshi.fanli.util.StringUtil;
+
+@Service
+public class OrderTeamRewardServiceImpl implements OrderTeamRewardService {
+
+	@Resource
+	private OrderTeamRewardMapper orderTeamRewardMapper;
+
+	@Override
+	public OrderTeamReward getByOrderNoAndType(Long uid, String orderNo, Integer type) {
+		return orderTeamRewardMapper.getByOrderNoAndType(uid, orderNo, type);
+	}
+
+	@Override
+	public OrderTeamReward getByOrderNoAndTypeForUpdate(Long uid, String orderNo, Integer type) {
+		return orderTeamRewardMapper.getByOrderNoAndTypeForUpdate(uid, orderNo, type);
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	private void addOrderSubsidy(OrderTeamReward orderSubsidy) throws OrderTeamRewardException {
+		if (orderSubsidy.getMoney() == null || StringUtil.isNullOrEmpty(orderSubsidy.getOrderNo())
+				|| orderSubsidy.getSourceType() == null || orderSubsidy.getUid() == null)
+			throw new OrderTeamRewardException(1, "鏁版嵁涓嶅畬鏁�");
+		OrderTeamReward old = getByOrderNoAndType(orderSubsidy.getUid(), orderSubsidy.getOrderNo(),
+				orderSubsidy.getSourceType());
+		if (old != null) {// 淇敼
+			if (old.getState() == OrderTeamReward.STATE_INVALID || old.getState() == OrderTeamReward.STATE_RECIEVED)
+				return;
+
+			// 淇敼鐘舵��
+			OrderTeamReward update = new OrderTeamReward(old.getId());
+			update.setMoney(orderSubsidy.getMoney());
+			if (old.getState() == OrderTeamReward.STATE_UNKNOWN) {// 鐘舵�佹湭纭畾涔嬪墠鎵嶅彲浠ユ洿鏀瑰師濮嬭ˉ璐磋祫閲�
+				update.setOriginalMoney(orderSubsidy.getOriginalMoney());
+			}
+			update.setState(orderSubsidy.getState());
+			update.setUpdateTime(new Date());
+			orderTeamRewardMapper.updateByPrimaryKeySelective(update);
+		} else {// 娣诲姞
+			if (orderSubsidy.getCreateTime() == null)
+				orderSubsidy.setCreateTime(new Date());
+			orderTeamRewardMapper.insertSelective(orderSubsidy);
+		}
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void addOrUpdate(InviteOrderSubsidy subsidy, BigDecimal money, Long uid, int level)
+			throws OrderTeamRewardException {
+		if (subsidy == null || subsidy.getId() == null)
+			throw new OrderTeamRewardException(1, "琛ヨ创涓虹┖");
+		if (money == null)
+			throw new OrderTeamRewardException(2, "鍥㈤槦濂栧姳璧勯噾涓虹┖");
+		OrderTeamReward reward = orderTeamRewardMapper.selectBySubsidyIdAndUidForUpdate(subsidy.getId(), uid);
+		if (reward != null) {// 鍘熸潵宸插瓨鍦�
+			if (reward.getState() == OrderTeamReward.STATE_RECIEVED)
+				return;
+
+			if (reward.getState() == OrderTeamReward.STATE_INVALID)
+				return;
+
+			if (subsidy.getState().intValue() != reward.getState() || money.compareTo(reward.getMoney()) != 0) {
+				// 鐘舵�佹垨鑰呰祫閲戞敼鍙橈紝闇�瑕佹敼鍙樻暟鎹�
+				OrderTeamReward updateReward = new OrderTeamReward(reward.getId());
+				updateReward.setState(subsidy.getState());
+				updateReward.setMoney(money);
+				updateReward.setUpdateTime(new Date());
+				orderTeamRewardMapper.updateByPrimaryKeySelective(updateReward);
+			}
+		} else {// 鍘熸潵涓嶅瓨鍦�
+			reward = new OrderTeamReward();
+			reward.setCreateTime(new Date());
+			reward.setMoney(money);
+			reward.setOrderNo(subsidy.getOrderNo());
+			reward.setOriginalMoney(money);
+			reward.setSourceType(subsidy.getSourceType());
+			reward.setState(subsidy.getState());
+			reward.setSubsidy(subsidy);
+			reward.setUid(uid);
+			reward.setLevel(level);
+			orderTeamRewardMapper.insertSelective(reward);
+		}
+
+	}
+
+	@Override
+	public long countByOrderIdAndSourceType(String orderId, int sourceType) {
+		return orderTeamRewardMapper.countByOrderNoAndType(orderId, sourceType);
+	}
+
+	@Transactional
+	@Override
+	public void invalidByOrderIdAndSourceType(Long subsidyId) {
+		List<OrderTeamReward> list = orderTeamRewardMapper.listBySubsidyId(subsidyId);
+		if (list != null && list.size() > 0)
+			for (OrderTeamReward subsidy : list) {
+				if (subsidy.getState() == OrderTeamReward.STATE_UNKNOWN
+						|| subsidy.getState() == OrderTeamReward.STATE_VALID) {
+					OrderTeamReward update = new OrderTeamReward(subsidy.getId());
+					update.setState(OrderTeamReward.STATE_INVALID);
+					update.setUpdateTime(new Date());
+
+					orderTeamRewardMapper.updateByPrimaryKeySelective(update);
+				}
+			}
+	}
+
+	@Transactional
+	@Override
+	public void validByOrderIdAndSourceType(Long subsidyId, Date preGetTime) {
+		List<OrderTeamReward> list = orderTeamRewardMapper.listBySubsidyId(subsidyId);
+		if (list != null && list.size() > 0)
+			for (OrderTeamReward subsidy : list) {
+				if (subsidy.getState() == OrderTeamReward.STATE_UNKNOWN) {
+					OrderTeamReward update = new OrderTeamReward(subsidy.getId());
+					update.setState(OrderTeamReward.STATE_VALID);
+					update.setUpdateTime(new Date());
+					update.setPreGetTime(preGetTime);
+					orderTeamRewardMapper.updateByPrimaryKeySelective(update);
+				}
+			}
+	}
+
+	@Override
+	public void settleById(Long id, BigDecimal money) {
+		OrderTeamReward orderSubsidy = new OrderTeamReward(id);
+		orderSubsidy.setMoney(money);
+		orderSubsidy.setState(OrderTeamReward.STATE_RECIEVED);
+		orderSubsidy.setGetTime(new Date());
+		orderSubsidy.setUpdateTime(new Date());
+		orderTeamRewardMapper.updateByPrimaryKeySelective(orderSubsidy);
+	}
+
+	@Override
+	public List<OrderTeamReward> listBySubsidyId(Long subsidyId) {
+
+		return orderTeamRewardMapper.listBySubsidyId(subsidyId);
+	}
+
+	@Override
+	public List<OrderTeamReward> listCanSettle(Long uid, int page, int pageSize) {
+
+		return orderTeamRewardMapper.listCanSettleByUid(uid, (page - 1) * pageSize, pageSize);
+	}
+
+	@Override
+	public long countCanSettle(Long uid) {
+		return orderTeamRewardMapper.countCanSettle(uid);
+	}
+
+	@Override
+	public List<Long> listCanSettleUid(Date time, int page, int count) {
+		return orderTeamRewardMapper.listCanSettleUid(time, (page - 1) * count, count);
+	}
+
+	@Override
+	public long countCanSettleUid(Date time) {
+		return orderTeamRewardMapper.countCanSettleUid(time);
+	}
+}

--
Gitblit v1.8.0