做网站大公司,怎样做关键词排名优化,途牛企业网站建设方案,可以直接观看的网站正能量通过算法小组给出的聚合文件#xff0c;我们需要实现一种业务场景#xff0c;通过用户的消费地点的商户ID与posId#xff0c;查询出他所在的商圈#xff0c;并通过商圈地点查询出与该区域的做活动的商户#xff0c;并与之进行消息匹配#xff0c;推送相应活动信息到用户手…通过算法小组给出的聚合文件我们需要实现一种业务场景通过用户的消费地点的商户ID与posId查询出他所在的商圈并通过商圈地点查询出与该区域的做活动的商户并与之进行消息匹配推送相应活动信息到用户手机。 那么整个流程分为两步第一步将整个聚合文件刷入缓存文件数据格式如下 29 1:1 102100156910958 10015691 X有限公司 0 1 29 1:1 102100156910958 10015691 X有限公司 0 1 字段含义分别是 地区编号、商圈编号、商户编号、Pos编号、商户名称、合作商户标志。那么我们可以通过 商户编号Post编号 来定位 其所在的商圈 可以通过 地区编号商圈编号 来获取该商圈的所有商户信息(Redis中直接set)。于是导入Redis是可使用key:商户编号Post编号 value:地区编号商圈编号 。 随之第二个key 为 地区编号商圈编号 从而得到 该商圈的所有商户Redis中使用hset。 将聚合文件导入Redis,部分代码如下 String merchantId StringUtils.join(V_,content[2].trim(),content[3].trim());String areabiz StringUtils.join(content[0].trim(),content[1].trim());String merchantName StringUtils.join(content[4].trim());String flag StringUtils.join(content[5].trim());MapString,String MerchantMap new HashMapString,String();MerchantMap.put(merchantName, merchantId);try {for (int i 0; i jedisvPools.size(); i) {JedisPool jp jedisvPools.get(i);Jedis jedis null;try {jedis jp.getResource();//key为商户编号PosId value为地区编号area商圈编号bizAreaIdjedis.set(merchantId, areabiz);//key为商圈编号PosId value为商户名称使用sadd添加相同商圈编号PosId的商户if(1.equals(flag)){jedis.hmset(areabiz, MerchantMap);}} catch (Exception e) {logger.error(, e);} finally {jedis.close();}} 将需要匹配的活动商户文件及信息导入redis,部分代码如下 if (StringUtils.isEmpty(content[4]) || StringUtils.isEmpty(content[5])||StringUtils.isEmpty(content[6])) {logger.warn(数据格式有误内容为{}, line);return;}String merchantId ;String posIds StringUtils.join(content[5]);String address StringUtils.join(content[3]);String[] posIdArray posIds.split(、);String url content[6];MapString,String MerchantUrlAdress new HashMapString,String();MerchantUrlAdress.put(address,url);for(String posId : posIdArray){merchantId StringUtils.join(Vir_,content[4].trim(),posId.trim());try {for (int i 0; i jedisPools.size(); i) {JedisPool jp jedisPools.get(i);Jedis jedis null;try {jedis jp.getResource();//key为商户编号PosId value为地区编号area商圈编号bizAreaIdjedis.hmset(merchantId,MerchantUrlAdress);} catch (Exception e) {logger.error(, e);} finally {//jedis.close();jp.returnResourceObject(jedis);}} 接入用户实时刷卡消费信息流入storm匹配该用户所在商圈的活动商户并匹配获取该活动商户的地址及url信息 通过http的形式推送至支付宝或微信渠道部分代码如下 String bizAreaName ;String bizAreaUrl ;String address ;//根据活动商户ID与postId 查询所在商圈String areabiz virtualBusinessService.getAreaBiz(MerchantId);if(null areabiz){resultSets.addValue(ResultSets.OpType.INSERT,BIZAREALISTNAME,bizAreaName);resultSets.addValue(ResultSets.OpType.INSERT, BIZAREAURL, bizAreaUrl);resultSets.addValue(ResultSets.OpType.INSERT, BIZADDRESS, address);logger.info(VirtualTradeAreaAlgorithmMerchantId);return resultSets;}//根据活动ID获取该活动配置的商户IdString activityMerchantCode virtualBusinessService.getActivityConf(activityConfId);//查询所在商圈的所有商户信息MapString,String bizAreaNameMap virtualBusinessService.getbizAreaNameSet(areabiz);if(!bizAreaNameMap.isEmpty()){//匹配活动配置的商户for(String bizName : bizAreaNameMap.keySet()){String mapvalue bizAreaNameMap.get(bizName).replace(V_, );if(activityMerchantCode.contains(mapvalue)){bizAreaName bizName;//根据活动商户名称查询该商户对应的商户IDactivityMerchantId bizAreaNameMap.get(bizName).replace(V_,Vir_);//根据活动商户Id查询该活动商户的url Vir_89811144816144501080209MapString,String bizAreaUrlAdree virtualBusinessService.getBizUrl(activityMerchantId);if(null bizAreaUrlAdree){address ;bizAreaUrl ;}else{for(String bizAdress : bizAreaUrlAdree.keySet()){address bizAdress;bizAreaUrl bizAreaUrlAdree.get(bizAdress);}}break;}}} 具体还在整理后续将其补全~