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