Commit 157c2cad by 陈健智

修复用户行为列表分页问题

parent 837ca95f
......@@ -11,6 +11,7 @@ import com.zhiwei.brandkbs2.pojo.vo.BehaviorVO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.service.BehaviorService;
import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.Tools;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -77,8 +78,9 @@ public class BehaviorServiceImpl implements BehaviorService {
query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime).and("backstage").is(backstage));
behaviorDao.addSort(query, "{\"cTime\":\"descend\"}");
if (StringUtils.isNotEmpty(nickname)) {
userDao.addKeywordFuzz(query, nickname, "nickname");
List<User> userList = userDao.findList(query);
Query userQuery = new Query();
userDao.addKeywordFuzz(userQuery, nickname, "nickname");
List<User> userList = userDao.findList(userQuery);
// 根据nickname未查询
if (CollectionUtils.isEmpty(userList)) {
return PageVO.createPageVo(0, page, 0, size, Collections.emptyList());
......@@ -87,14 +89,29 @@ public class BehaviorServiceImpl implements BehaviorService {
query.addCriteria(Criteria.where("userId").in(userList.stream().map(User::getId).collect(Collectors.toList())));
}
long count = behaviorDao.count(query, collectionNames);
mongoUtil.start(page, size, query);
List<Behavior> behaviorList = behaviorDao.findList(query, collectionNames);
// 保证数据分表时正常分页
int skipCount = (page - 1) * size;
List<Behavior> behaviorList = new ArrayList<>();
int pageSizeFlag = size;
if (0 != collectionNames.length) {
for (int i = collectionNames.length - 1; i >= 0; i--) {
if (behaviorList.size() >= size) {
break;
} else {
query.limit(pageSizeFlag);
query.skip(skipCount);
List<Behavior> list = behaviorDao.findList(query, collectionNames[i]);
behaviorList.addAll(list);
}
skipCount = 0;
pageSizeFlag = size - behaviorList.size();
}
}
List<BehaviorVO> resList = behaviorList.stream().map(behavior -> {
Integer roleId = getRoleId(behavior.getUserId(), behavior.getProjectId());
return BehaviorVO.createFromBehavior(behavior, roleId);
}).collect(Collectors.toList());
MongoUtil.PageHelper<BehaviorVO> pageHelper = mongoUtil.pageHelperT(count, resList);
return PageVO.createPageVo(pageHelper, resList);
return PageVO.createPageVo(count, page, size, resList);
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment