| | |
| | |
|
| | | 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.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;
|
| | |
| | | public String get(final String key) {
|
| | | HongBaoManage hongBaoManage = hongBaoManageMapper.selectByKey(key);
|
| | | if (hongBaoManage != null)
|
| | | hongBaoManage.getValue();
|
| | | return hongBaoManage.getValue();
|
| | | return null;
|
| | | }
|
| | |
|
| | |
| | | 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();
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public BigDecimal getFanLiRate(long time) {
|
| | | String key = "hongbao_goods_proportion";
|
| | | public BigDecimal getFanLiRate(UserLevelEnum level, long time) {
|
| | |
|
| | | 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;
|
| | | return getBaseFanliRate(time).add(new BigDecimal(get("official_subsidy_zigou_" + level.getLevel())));
|
| | | }
|
| | |
|
| | | @Override
|
| | | public BigDecimal getShareRate(long time) {
|
| | | String key = "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;
|
| | | 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(System.currentTimeMillis());
|
| | | return getFanLiRate(UserLevelEnum.daRen);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public BigDecimal getShareRate(UserLevelEnum level) {
|
| | | return getShareRate(level, System.currentTimeMillis());
|
| | | }
|
| | |
|
| | | @Override
|
| | | public BigDecimal getShareRate() {
|
| | | return getShareRate(System.currentTimeMillis());
|
| | | return getShareRate(UserLevelEnum.daRen);
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | }
|
| | |
|
| | | @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;
|
| | | }
|
| | | public ConfigParamsDTO getShowComputeRate(String platform, String version, UserLevelEnum userLevel) {
|
| | |
|
| | | @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本级是否为VIP
|
| | | * @param isWorkerVip下级是否为VIP
|
| | | * @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);
|
| | | }
|
| | | 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);
|
| | | }
|
| | | throw new HongBaoException(2, "未匹配到比例参数");
|
| | | return paramsDTO;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public ConfigParamsDTO getShowComputeRate(String platform, String version) {
|
| | |
|
| | | BigDecimal fanLiRate = getFanLiRate();
|
| | | BigDecimal shareRate = getShareRate();
|
| | | BigDecimal fanLiRate = getFanLiRate(UserLevelEnum.daRen);
|
| | | BigDecimal shareRate = getShareRate(UserLevelEnum.daRen);
|
| | | ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
|
| | | getVIPFanLiRate());
|
| | | 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());
|
| | | }
|
| | |
|
| | | }
|