From 88c7df1d5089d8e39f356a68eaccc18f308e190c Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期二, 24 三月 2020 12:10:07 +0800 Subject: [PATCH] Merge branch 'div' into div-1 --- 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