redis中分頁快取資料
阿新 • • 發佈:2020-11-27
`
@Autowired StringRedisTemplate stringRedisTemplate; @ApiOperation(value = "查詢操作日誌" ) @GetMapping("/querySysLogList") public R querySysLogList( @ApiParam(name = "startTime", value = "操作時間", required = false) @RequestParam(value = "startTime", required = false) String startTime, @ApiParam(name = "userName", value = "操作人", required = false) @RequestParam(value = "userName", required = false) String userName, @ApiParam(name = "operate", value = "操作(新增 修改 刪除)", required = false) @RequestParam(value = "operate", required = false) String operate, @ApiParam(name = "module", value = "操作模組", required = false) @RequestParam(value = "module", required = false) String module, @ApiParam(name = "page", value = "分頁引數", required = false, defaultValue = "1") @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, @ApiParam(name = "pageSize", value = "每頁大小", required = false, defaultValue = "10") @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) { JSONObject jsonObject=new JSONObject(); //此處程式碼用的是mybatisplus的構造器,有興趣的自行了解 Page<SysLog> defendPage = new Page<>(); EntityWrapper<SysLog> entityWrapper = new EntityWrapper<>(); List<SysLog> dataList = new ArrayList<>(); if(StringUtils.isEmpty(startTime) && StringUtils.isEmpty(userName) && StringUtils.isEmpty(operate) && StringUtils.isEmpty(module) && pageSize==10){ Object o = stringRedisTemplate.opsForHash().entries(RedisConstants.USER_CACHE_LOG).get(page.toString()); //.entries 獲取變數中的鍵值對 .get獲取變數中指定的map鍵 存在該map鍵獲取值 沒有返回null Object total = stringRedisTemplate.opsForHash().entries(RedisConstants.USER_CACHE_LOG).get("total"); log.info("從快取中獲取使用者操作日誌資訊===========>>>"+o); if(!StringUtils.isEmpty(o) && !StringUtils.isEmpty(total)){ List list = JsonUtils.fromJson(o.toString(),List.class); Iterator iterator = list.iterator(); //迭代遍歷 while (iterator.hasNext()){ SysLog sysLog = JsonUtils.fromJson(iterator.next().toString(),SysLog.class); dataList.add(sysLog); } defendPage.setTotal(JsonUtils.fromJson(total.toString(),Integer.class)); jsonObject.put("dataList",dataList); jsonObject.put("totalCount",defendPage.getTotal()); return new R().data(jsonObject); }else{ defendPage.setCurrent(page); defendPage.setSize(pageSize); entityWrapper.orderBy("operate_time",false); defendPage = sysLogService.selectPage(defendPage,entityWrapper); dataList = defendPage.getRecords(); if (StringUtil.isNotNull(dataList)) { stringRedisTemplate.boundHashOps(RedisConstants.USER_CACHE_LOG).put(page.toString(), JsonUtils.toJson(dataList)); stringRedisTemplate.boundHashOps(RedisConstants.USER_CACHE_LOG).put("total", JsonUtils.toJson(defendPage.getTotal())); stringRedisTemplate.expire(RedisConstants.USER_CACHE_LOG, 30L, TimeUnit.DAYS); } defendPage.setTotal(defendPage.getTotal()); jsonObject.put("dataList",dataList); jsonObject.put("totalCount",defendPage.getTotal()); return new R().data(jsonObject); } }else{ if(!StringUtils.isEmpty(startTime)){ Date time= DateUtil.parseDate(startTime); Date startTime1=DateUtil.beginOfDay(time); Date endTime1=DateUtil.endOfDay(time); entityWrapper.between("operate_time",startTime1,endTime1); } if(!StringUtils.isEmpty(userName)){ entityWrapper.like("user_name",userName); } if(!StringUtils.isEmpty(operate)){ entityWrapper.like("operate",operate); } if(!StringUtils.isEmpty(module)){ entityWrapper.like("module",module); } entityWrapper.orderBy("operate_time",false); Page<SysLog> list=sysLogService.selectPage(defendPage,entityWrapper); jsonObject.put("dataList",list.getRecords()); jsonObject.put("totalCount",list.getTotal()); return new R().data(jsonObject); } }
`