101captain
2022-04-28 a33990498e32fda774dacf849bfcd660c58da8e7
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
@@ -397,7 +397,19 @@
     */
    @Override
    public R pageDiscussAdmin(PageComActDiscussDTO pageComActDiscussDTO) {
        return R.ok(comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO));
        IPage<ComActDiscussVO> comActDiscussVOIPage=comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO);
        List<ComActDiscussVO> records = comActDiscussVOIPage.getRecords();
        if (!ObjectUtils.isEmpty(records)) {
            records.forEach(comActDiscussVO -> {
                Long id = comActDiscussVO.getId();
                String viewNumKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, id.toString());
                if (stringRedisTemplate.hasKey(viewNumKey)) {
                    ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
                    comActDiscussVO.setViewsNum(Integer.parseInt(opsForValue.get(viewNumKey)));
                }
            });
        }
        return R.ok(comActDiscussVOIPage);
    }
    /**
@@ -1297,8 +1309,14 @@
                //组装viewNum key
                List<String> viewNumKeys = new ArrayList<>();
                Iterator<String> iterator = needWriteDiscussIdSet.iterator();
                List<String> idList = new ArrayList<>();
                while (iterator.hasNext()) {
                    viewNumKeys.add(String.join("_", DISCUSS_VIEW_NUM_PREFIX, iterator.next()));
                    String next = iterator.next();
                    String key = String.join("_", DISCUSS_VIEW_NUM_PREFIX, next);
                    if (stringRedisTemplate.hasKey(key)) {
                        idList.add(next);
                        viewNumKeys.add(key);
                    }
                }
                ValueOperations opsForValue = stringRedisTemplate.opsForValue();
@@ -1306,13 +1324,18 @@
                //待处理集合,以key-value/discussId-viewNum 存放
                HashMap<Long, Integer> needDealMap = new HashMap<>();
                for (String discussId : needWriteDiscussIdSet) {
                    try {
                        needDealMap.put(Long.parseLong(discussId), Integer.parseInt(viewNumList.get(0)));
                        viewNumList.remove(0);
                    } catch (IndexOutOfBoundsException e) {
                        //数据存在异常了,跳过,继续执行正确的
                        continue;
                if (nonNull(idList) && !idList.isEmpty()) {
                    log.error("一起议id列表:" + idList.toString());
                    log.error("一起议浏览量:" + viewNumList.toString());
                    for (String discussId : idList) {
                        try {
                            needDealMap.put(Long.parseLong(discussId), Integer.parseInt(viewNumList.get(0)));
                            viewNumList.remove(0);
                        } catch (IndexOutOfBoundsException e) {
                            log.error("数据异常:" + discussId, e.getMessage());
                            //数据存在异常了,跳过,继续执行正确的
                            continue;
                        }
                    }
                }
                int result = comActDiscussDAO.batchUpdateViewNum(needDealMap);