From 207dc8655711cddac2653e18b51e58a88dba2084 Mon Sep 17 00:00:00 2001
From: yj <Administrator@192>
Date: 星期五, 06 三月 2020 18:14:36 +0800
Subject: [PATCH] 发圈处理

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

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java
index 2c9599d..8718a37 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java
@@ -12,9 +12,15 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper;
+import com.yeshi.fanli.dto.ConfigParamsDTO;
+import com.yeshi.fanli.dto.order.OrderHongBaoRateParams;
 import com.yeshi.fanli.entity.bus.user.HongBaoManage;
+import com.yeshi.fanli.entity.order.CommonOrder;
+import com.yeshi.fanli.exception.order.HongBaoException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.VersionUtil;
 
 @Service
 public class HongBaoManageServiceImpl implements HongBaoManageService {
@@ -34,6 +40,24 @@
 		HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKey(key);
 		if (hongBaoManage != null)
 			hongBaoManage.getValue();
+		return null;
+	}
+
+	/**
+	 * 鏍规嵁閿�间笌鏃堕棿鏌ヨ姣斾緥
+	 * 
+	 * @param key
+	 * @param time
+	 * @return
+	 */
+	public BigDecimal getByKeyAndMaxTime(String key, Long time) {
+		if (time == null)
+			time = System.currentTimeMillis();
+		HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
+		if (hongBaoManage == null)
+			hongBaoManage = hongBaoManageMapper.selectByKey(key);
+		if (hongBaoManage != null)
+			return new BigDecimal(hongBaoManage.getValue());
 		return null;
 	}
 
@@ -211,4 +235,144 @@
 		return new BigDecimal(0);
 	}
 
+	@Override
+	public BigDecimal getVIPFanLiRate(long time) {
+		String key = "hongbao_goods_proportion_vip";
+		HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
+		if (hongBaoManage == null)
+			hongBaoManage = hongBaoManageMapper.selectByKey(key);
+		if (hongBaoManage != null)
+			return new BigDecimal(hongBaoManage.getValue());
+		LogHelper.error("鑾峰彇杩斿埄鍒嗘垚姣斾緥鍑洪敊");
+		return null;
+	}
+
+	@Override
+	public BigDecimal getVIPShareRate(long time) {
+		String key = "share_proportion_vip";
+		HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
+		if (hongBaoManage == null)
+			hongBaoManage = hongBaoManageMapper.selectByKey(key);
+		if (hongBaoManage != null)
+			return new BigDecimal(hongBaoManage.getValue());
+		LogHelper.error("鑾峰彇杩斿埄鍒嗘垚姣斾緥鍑洪敊");
+		return null;
+	}
+
+	@Override
+	public BigDecimal getVIPFanLiRate() {
+		return getVIPFanLiRate(System.currentTimeMillis());
+	}
+
+	@Override
+	public BigDecimal getVIPShareRate() {
+		return getVIPShareRate(System.currentTimeMillis());
+	}
+
+	/**
+	 * 鑾峰彇姣斾緥
+	 * 
+	 * @param level
+	 *            0-鏈骇 1-涓嬬骇 2-涓嬩笅绾�
+	 * @param orderType
+	 * @param isVip鏈骇鏄惁涓篤IP
+	 * @param isWorkerVip涓嬬骇鏄惁涓篤IP
+	 * @return
+	 */
+	public BigDecimal getRate(OrderHongBaoRateParams params) throws HongBaoException {
+		if (params == null)
+			throw new HongBaoException(1, "姣斾緥鍙傛暟閿欒");
+
+		long time = params.getOrderCreateTime().getTime();
+
+		if (params.getLevel() == 0) {// 鏈骇
+
+			if (params.getOrderType() == CommonOrder.ORDER_TYPE_ZIGOU) {
+				if (params.isVip())
+					return getVIPFanLiRate(time);
+				else
+					return getFanLiRate(time);
+			} else {
+				if (params.isVip())
+					return getVIPShareRate(time);
+				else
+					return getShareRate(time);
+			}
+
+		} else if (params.getLevel() == 1) {// 涓婄骇
+			if (params.getOrderType() == CommonOrder.ORDER_TYPE_ZIGOU) {// 鑷喘
+				if (params.isSubsidy()) {// 琛ヨ创姣斾緥
+					if (params.isVip()) {// 涓嬬骇涓轰細鍛樹笉琛ヨ创
+						return new BigDecimal("0");
+					} else {
+						return getInviteFirstLevelSubsidyRate(time);
+					}
+				} else {// 濂栭噾姣斾緥
+					if (params.isVip()) {
+						return getByKeyAndMaxTime("new_invite_vip_6", time);
+					} else {
+						return getByKeyAndMaxTime("new_invite_6", time);
+					}
+				}
+			} else {// 鍒嗕韩
+				if (params.isVip()) {
+					return getByKeyAndMaxTime("new_share_vip_21", time);
+				} else {
+					return getByKeyAndMaxTime("new_share_21", time);
+				}
+			}
+		} else if (params.getLevel() == 2) {// 涓婁笂绾�
+			if (params.getOrderType() == CommonOrder.ORDER_TYPE_ZIGOU) {// 鑷喘
+				if (params.isSubsidy()) {// 琛ヨ创姣斾緥
+					if (params.isVip()) {// 涓嬩笅绾т负浼氬憳涓嶈ˉ璐�
+						return new BigDecimal("0");
+					} else {
+						return getInviteSecondLevelSubsidyRate(time);
+					}
+				} else {// 濂栭噾姣斾緥
+					if (params.isVip())
+						return new BigDecimal("0");
+					else
+						return getByKeyAndMaxTime("new_invite_7", time);
+				}
+			} else {// 鍒嗕韩
+				if (params.isVip())
+					return new BigDecimal("0");
+				else
+					return getByKeyAndMaxTime("new_share_22", time);
+			}
+		}
+		throw new HongBaoException(2, "鏈尮閰嶅埌姣斾緥鍙傛暟");
+	}
+
+	@Override
+	public ConfigParamsDTO getShowComputeRate(String platform, String version) {
+
+		BigDecimal fanLiRate = getFanLiRate();
+		BigDecimal shareRate = getShareRate();
+		ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
+				getVIPFanLiRate());
+		if (VersionUtil.greaterThan_2_0_5(platform, version)) {
+			paramsDTO.setMaxRewardRate(null);
+		}
+		return paramsDTO;
+	}
+
+	@Override
+	public BigDecimal getBaseFanliRate(long time) {
+		String key = "base_fanli_rate";
+		HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
+		if (hongBaoManage == null)
+			hongBaoManage = hongBaoManageMapper.selectByKey(key);
+		if (hongBaoManage != null)
+			return new BigDecimal(hongBaoManage.getValue());
+		LogHelper.error("鑾峰彇鍩虹杩斿埄姣斾緥鍑洪敊");
+		return null;
+	}
+
+	@Override
+	public BigDecimal getBaseFanliRate() {
+		return getBaseFanliRate(System.currentTimeMillis());
+	}
+
 }

--
Gitblit v1.8.0