/** * 领取声望奖励 * * @param userId * @param id * @return */ public CommonGoodsBeanBO rewardPrestige(String userId, int id) { User user = userService.getByUserId(userId); SystemPrestigeRewards rewards = systemPrestigeRewardsDaoCache.getPrestigeRewardsById(id); if (rewards == null) { throw new ServiceException(SystemConstant.FAIL_CODE, "id=" + id + ",不存在该id的配置"); } // 判断是否达到领取等级 if (user.getPrestigeLevel() < rewards.getLevel()) { throw new ServiceException(LEVEL_LIMIT, "声望等级不足"); } // 判断是否已经领取过了 if (userPrestigeRewardLogDao.isReward(userId, id)) { throw new ServiceException(HAS_REWARD, "已经领取过了"); } UserPrestigeRewardLog log = new UserPrestigeRewardLog(); log.setUserId(userId); log.setId(id); log.setCreatedTime(new Date()); // 给奖励 if (userPrestigeRewardLogDao.addUserPrestigeRewardLog(log)) { return goodsDealService.sendGoods( userId, GoodsType.Hero.intValue + "," + rewards.getRewards() + ",1", GoodsUseType.ADD_PRESTIGE_REWARDS); } else { ServiceException e = new ServiceException(SystemConstant.FAIL_CODE, "添加日志异常!!"); LogSystem.error(e, ""); throw e; } }
/** * 声望招募英雄 * * @param userId * @param systemHeroId * @return */ public Map<String, Object> inviteHero(String userId, int systemHeroId, String heroName) { User user = userService.getByUserId(userId); SystemInviteHero systemInviteHero = this.systemInviteHeroDaoCache.getSystemInviteHero(systemHeroId); if (systemInviteHero == null) throw new ServiceException( SystemConstant.FAIL_CODE, "没有配置该英雄??userId[" + userId + "],systemHeroId[" + systemHeroId + "]"); if (systemInviteHero.getCamp() != 0 && user.getCamp() != systemInviteHero.getCamp()) throw new ServiceException(CAMP_NOT_MATE, "阵营不匹配"); // 背包检查 List<GoodsBeanBO> list = new ArrayList<GoodsBeanBO>(); GoodsBeanBO goodsBeanBO = new GoodsBeanBO(); goodsBeanBO.setGoodsId(systemInviteHero.getSystemHeroId()); goodsBeanBO.setGoodsType(GoodsType.Hero.intValue); goodsBeanBO.setGoodsNum(1); list.add(goodsBeanBO); this.userService.checkBag(userId, list); Map<String, Object> map = new HashMap<String, Object>(); // 各种XX条件判断 if (user.getGold() < systemInviteHero.getNeedGold()) throw new ServiceException(SystemErrorCode.GOLD_NOT_ENOUGH, "金币不足"); if (user.getLevel() < systemInviteHero.getLevel()) throw new ServiceException(SystemErrorCode.LEVEL_NOT_ENOUGH, "等级不足"); // 扣金币 if (!this.userService.reduceGold( userId, systemInviteHero.getNeedGold(), GoodsUseType.REDUCE_PRESTIGE_INVITE)) throw new ServiceException(SystemErrorCode.GOLD_NOT_ENOUGH, "金币不足"); CommonGoodsBeanBO drop = new CommonGoodsBeanBO(); this.heroService.addHero( userId, systemHeroId, false, heroName, GoodsUseType.ADD_PRESTIGE_INVITE, drop); user = this.userService.getByUserId(userId); map.put("dr", drop); map.put("gd", user.getGold()); map.put("mon", user.getMoney()); return map; }
/** * 加声望 * * @param userId * @param addAmount * @param drop */ public void addPrestige(String userId, int addAmount, int goodsUseType, CommonGoodsBeanBO drop) { User user = userService.getByUserId(userId); if (user == null) { String message = "更新用户声望失败,用户不存在.userId[" + userId + "], addAmount[" + addAmount + "]"; throw new ServiceException(SystemConstant.FAIL_CODE, message); } // 如果到了最高等级 则不再加经验 if (user.getPrestigeLevel() >= systemPrestigeLevelDaoCache.getMaxLevel()) { LogSystem.info("userId=" + userId + ",用户已经到达声望最高等级 不再加声望"); return; } // SystemPrestigeLevel systemPrestigeLevel = // this.systemPrestigeLevelDaoCache.getPrestigeLevel(addAmount+user.getPrestige()); // int leveAddCount = 0; // if(systemPrestigeLevel.getLevel()>user.getPrestigeLevel()){ // leveAddCount = systemPrestigeLevel.getLevel()-user.getPrestigeLevel(); // } // 修改经验和等级 // boolean success = this.userService.addPrestigeAndPrestigeLevel(userId, addAmount, // leveAddCount, goodsUseType, drop); // if(!success){ // throw new ServiceException(SystemConstant.FAIL_CODE, "加声望失败!"); // } }