实现关键字查询
实际业务中,我们经常会用到关键字查询,以下是使用智能合约+for循环遍历实现的一个关键字查询业务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| public static List<Map<String, Object>> filterByKeyword(List<Map<String, Object>> dataList, String keyword) { List<Map<String, Object>> filteredList = new ArrayList<>(); for (Map<String, Object> dataItem : dataList) { for (Object value : dataItem.values()) { if (value.toString().contains(keyword)) { filteredList.add(dataItem); break; } } } return filteredList; }
@ApiOperation(value = "关键字查询", tags = "关键字查询") @GetMapping("/queryByKey") public Result<?> queryByKey(@RequestParam String key) throws ContractException, IOException {
byte[] queryActive = contract.evaluateTransaction("queryAllActive"); String resultStringActive = new String(queryActive, StandardCharsets.UTF_8); List<Map<String, Object>> resultActiveList = Utils.parseJsonString(resultStringActive); List<String> stringList = new ArrayList<>(); for (Map<String,Object> map : resultActiveList) { map.put("class","0"); String mapString = Utils.convertToJsonMap(map); stringList.add(mapString); }
byte[] queryGoods = contract.evaluateTransaction("queryGoods"); String resultStringGoods = new String(queryGoods, StandardCharsets.UTF_8); List<Map<String, Object>> resultGoodsList = Utils.parseJsonString(resultStringGoods); for (Map<String,Object> map : resultGoodsList) { map.put("class","1"); String mapString = Utils.convertToJsonMap(map); stringList.add(mapString); } List<Map<String, Object>> maps = parseJsonString(String.valueOf(stringList)); List<Map<String, Object>> filteredResult = Utils.filterByKeyword(maps, key);
System.out.println(filteredResult);
return Result.success(filteredResult); }
|