@Override protected void process( HttpServletRequest request, HttpServletResponse response, ResultSender sender) throws Exception { String uToken = request.getParameter("uToken"); String token = request.getParameter("token"); if (!StringUtils.isBlank(token)) { uToken = token; } checkParams(uToken); // 未登录用户直接返回 UserTradeBaseVo custVo = authorityApiFacade.getUserInfoByToken(uToken); if (custVo == null || custVo.getCustId() == null) { sender.fail( ErrorCodeEnum.ERROR_CODE_10003.getErrorCode(), ErrorCodeEnum.ERROR_CODE_10003.getErrorMessage(), response); return; } Long custId = custVo.getCustId(); // ThirdpartyCustId thirdpartyCustId=thirdpartyCustIdManager.getByCustId(custId); // custId=thirdpartyCustId.getId(); updateService.clearUserLocation(Long.toString(custId)); LOG.info("NearbyClearLocationProcessor:uToken->{0}", uToken); sender.put("msg", "done"); sender.send(response); }
@Override @Transactional public Map<String, Integer> getSpreadCoins( Long custId, String username, String nickname, String deviceType, int type) throws Exception { Map<String, Integer> resultMap = new HashMap<String, Integer>(); // 判定该用户今天是否已经不能领取 Map<String, String> userCacheMap = activityUserCacheDao.getTodayActivityUserCache(custId); if (null == userCacheMap) { userCacheMap = new HashMap<String, String>(); } if (userCacheMap.containsKey(Constans.MEDIA_SPREAD_COINS_LIMIT_CACHE_KEY)) { String limitCacheValue = userCacheMap.get(Constans.MEDIA_SPREAD_COINS_LIMIT_CACHE_KEY); if (Constans.MEDIA_ACTIVITY_TODAY_USER_LIMIT_FLAG.equals(limitCacheValue)) { resultMap.put("coins", -2); return resultMap; // 用户超过日限制 } } String startDateStr = DateUtil.formatDate(new Date()); Date startDate = DateUtil.getdate(startDateStr); Date endDate = DateUtil.addDaysOnToday(startDate, 1); Integer userDayGetTimes = activityRecordDao.selectUserParticipateTimesByType( custId, Constans.MEDIA_ACTIVITY_GETCONS_TYPE, startDate, endDate); Integer sysLimit = Integer.parseInt(systemApi.getProperty("spread_coins_user_today_limit", "5")); if (userDayGetTimes >= sysLimit) { userCacheMap.put( Constans.MEDIA_SPREAD_COINS_LIMIT_CACHE_KEY, Constans.MEDIA_ACTIVITY_TODAY_USER_LIMIT_FLAG); activityUserCacheDao.setTodayActivityUserCache(custId, userCacheMap); resultMap.put("coins", -2); return resultMap; } // 获取剩余的撒金币次数 int leftTimes = sysLimit - userDayGetTimes; resultMap.put("leftTimes", leftTimes); // 判断今天此次是否重复领取撒金币 // 需求有变动,又去掉了!!! // ActivityRecord aRecord = activityRecordDao.selectTodayGetSpreadByType(custId, type); // if(null!=aRecord){ // resultMap.put("coins", -1); // return resultMap;//用户超过日限制 // } // 获取金币 // 获取配置中钱的最小、大值 String minCoinStr = systemApi.getProperty("spread_coins_min_coin", "2"); String maxCoinStr = systemApi.getProperty("spread_coins_max_coin", "5"); int minCoin = Integer.parseInt(minCoinStr); int maxCoin = Integer.parseInt(maxCoinStr); int coins = (int) (Math.random() * (maxCoin + 1 - minCoin)) + minCoin; ActivityRecord record = new ActivityRecord( Constans.MEDIA_ACTIVITY_GETCONS_TYPE, custId, nickname, "掉钱袋啦", coins, new Date()); record.setPrizeType(type); activityRecordDao.insert(record); // 给user 辅账户加钱 UserTradeBaseVo vo = new UserTradeBaseVo(); vo.setTradeType(Constans.TRADE_TYPE_RECHARGE); vo.setCustId(custId); vo.setConsumeSource(deviceType); // 唯一单号 String depositNo = userService.createTradeNo("ACT06", custId); vo.setSourceOrderNo(depositNo); vo.setUsername(username); vo.setRequireRechargeMainAmount(0); vo.setRequireRechargeSubAmount(coins); // 辅账户加钱需有效期,加活动码 by weisong vo.setActivityCode(RechargeActivityCodeEnum.SPREAD_COINS.getCode()); userService.tradeForUser(vo); if (!vo.isTradeResult()) { LogUtil.error(logger, "创建充值记录失败:掉钱袋啦,custId:{0}", custId); throw new MediaException( ErrorCodeEnum.ERROR_CODE_15513.getErrorCode() + "", ErrorCodeEnum.ERROR_CODE_15513.getErrorMessage()); } activityRecordCacheDao.deleteUserActivityRecordCache(custId, 0); activityRecordCacheDao.deleteUserActivityRecordCache(custId, 6); resultMap.put("coins", coins); return resultMap; }