package com.yeshi.fanli.service.impl.order.config;
|
|
import java.math.BigDecimal;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper;
|
import com.yeshi.fanli.dto.ConfigParamsDTO;
|
import com.yeshi.fanli.entity.bus.user.HongBaoManage;
|
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
|
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 {
|
|
@Resource
|
private HongBaoManageMapper hongBaoManageMapper;
|
|
@Transactional
|
public void update(List<HongBaoManage> hongBaoManageList) {
|
for (HongBaoManage hongBaoManage : hongBaoManageList) {
|
hongBaoManageMapper.updateByPrimaryKeySelective(hongBaoManage);
|
}
|
}
|
|
@Cacheable(value = "homeBaoManage", key = "#p0")
|
public String get(final String key) {
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return 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;
|
}
|
|
@Cacheable(value = "homeBaoManage", key = "'getByKeyAndMaxTime-'+#key+'-'+#time")
|
public BigDecimal getByKeyAndMaxTimeCache(String key, Long time) {
|
return getByKeyAndMaxTime(key, time);
|
}
|
|
@Cacheable(value = "homeBaoManage", key = "'convertMap'")
|
public Map<String, String> convertMap() {
|
List<HongBaoManage> list = hongBaoManageMapper.listAll();
|
Map<String, String> map = new HashMap<String, String>();
|
for (HongBaoManage hongBaoManage : list) {
|
map.put(hongBaoManage.getKey(), hongBaoManage.getValue());
|
}
|
return map;
|
}
|
|
@Override
|
public BigDecimal getFanLiRate(UserLevelEnum level, long time) {
|
|
return getBaseFanliRate(time).add(new BigDecimal(get("official_subsidy_zigou_" + level.getLevel())));
|
}
|
|
@Override
|
public BigDecimal getShareRate(UserLevelEnum level, long time) {
|
return getBaseFanliRate(time).add(new BigDecimal(get("official_subsidy_share_" + level.getLevel())));
|
}
|
|
@Override
|
public BigDecimal getFanLiRate(UserLevelEnum level) {
|
return getFanLiRate(level, System.currentTimeMillis());
|
}
|
|
@Override
|
public BigDecimal getFanLiRate() {
|
return getFanLiRate(UserLevelEnum.daRen);
|
}
|
|
@Override
|
public BigDecimal getShareRate(UserLevelEnum level) {
|
return getShareRate(level, System.currentTimeMillis());
|
}
|
|
@Override
|
public BigDecimal getShareRate() {
|
return getShareRate(UserLevelEnum.daRen);
|
}
|
|
@Override
|
public BigDecimal getFirstInviteRate(int urank) {
|
return getFirstInviteRate(urank, System.currentTimeMillis());
|
}
|
|
@Override
|
public BigDecimal getFirstInviteRate(int urank, long time) {
|
String key = "sale_6_" + urank;
|
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getSecondInviteRate(int urank) {
|
return getSecondInviteRate(urank, System.currentTimeMillis());
|
}
|
|
@Override
|
public BigDecimal getSecondInviteRate(int urank, long time) {
|
String key = "sale_7_" + urank;
|
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取返利分成比例出错");
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getFirstShareRate(int urank) {
|
String key = "share_21_" + urank;
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, System.currentTimeMillis());
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取返利分成比例出错");
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getFirstShareRate(int urank, long time) {
|
String key = "share_21_" + urank;
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取返利分成比例出错");
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getSecondShareRate(int urank) {
|
String key = "share_22_" + urank;
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, System.currentTimeMillis());
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取返利分成比例出错");
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getSecondShareRate(int urank, long time) {
|
String key = "share_22_" + urank;
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取返利分成比例出错");
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getTLJFanLiRate() {
|
String key = "tlj_fanli_proportion";
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, System.currentTimeMillis());
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
LogHelper.error("获取淘礼金返利分成比例出错");
|
return null;
|
}
|
|
@Override
|
public BigDecimal getTLJShareRate(long time) {
|
String key = "tlj_share_proportion";
|
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 getInviteFirstLevelSubsidyRate(Long time) {
|
String key = "invite_subsidy_6";
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public BigDecimal getInviteSecondLevelSubsidyRate(Long time) {
|
String key = "invite_subsidy_7";
|
HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKeyAndMaxValidTime(key, time);
|
if (hongBaoManage == null)
|
hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
if (hongBaoManage != null)
|
return new BigDecimal(hongBaoManage.getValue());
|
return new BigDecimal(0);
|
}
|
|
@Override
|
public ConfigParamsDTO getShowComputeRate(String platform, String version, UserLevelEnum userLevel) {
|
|
BigDecimal fanLiRate = getFanLiRate(userLevel);
|
BigDecimal shareRate = getShareRate(userLevel);
|
ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
|
getFanLiRate(UserLevelEnum.superVIP));
|
if (VersionUtil.greaterThan_2_0_5(platform, version)) {
|
paramsDTO.setMaxRewardRate(null);
|
}
|
return paramsDTO;
|
}
|
|
@Override
|
public ConfigParamsDTO getShowComputeRate(String platform, String version) {
|
|
BigDecimal fanLiRate = getFanLiRate(UserLevelEnum.daRen);
|
BigDecimal shareRate = getShareRate(UserLevelEnum.daRen);
|
ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
|
getFanLiRate(UserLevelEnum.superVIP));
|
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());
|
}
|
|
@Cacheable(value = "homeBaoManage", key = "'getBaseFanliRate'+#time")
|
@Override
|
public BigDecimal getBaseFanliRateCache(long time) {
|
return getBaseFanliRate(System.currentTimeMillis());
|
}
|
|
}
|