Commit 157c2cad by 陈健智

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

parent 837ca95f
...@@ -11,6 +11,7 @@ import com.zhiwei.brandkbs2.pojo.vo.BehaviorVO; ...@@ -11,6 +11,7 @@ import com.zhiwei.brandkbs2.pojo.vo.BehaviorVO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO; import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.service.BehaviorService; import com.zhiwei.brandkbs2.service.BehaviorService;
import com.zhiwei.brandkbs2.util.MongoUtil; import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.Tools;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -77,8 +78,9 @@ public class BehaviorServiceImpl implements BehaviorService { ...@@ -77,8 +78,9 @@ public class BehaviorServiceImpl implements BehaviorService {
query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime).and("backstage").is(backstage)); query.addCriteria(Criteria.where("cTime").gte(startTime).lt(endTime).and("backstage").is(backstage));
behaviorDao.addSort(query, "{\"cTime\":\"descend\"}"); behaviorDao.addSort(query, "{\"cTime\":\"descend\"}");
if (StringUtils.isNotEmpty(nickname)) { if (StringUtils.isNotEmpty(nickname)) {
userDao.addKeywordFuzz(query, nickname, "nickname"); Query userQuery = new Query();
List<User> userList = userDao.findList(query); userDao.addKeywordFuzz(userQuery, nickname, "nickname");
List<User> userList = userDao.findList(userQuery);
// 根据nickname未查询 // 根据nickname未查询
if (CollectionUtils.isEmpty(userList)) { if (CollectionUtils.isEmpty(userList)) {
return PageVO.createPageVo(0, page, 0, size, Collections.emptyList()); return PageVO.createPageVo(0, page, 0, size, Collections.emptyList());
...@@ -87,14 +89,29 @@ public class BehaviorServiceImpl implements BehaviorService { ...@@ -87,14 +89,29 @@ public class BehaviorServiceImpl implements BehaviorService {
query.addCriteria(Criteria.where("userId").in(userList.stream().map(User::getId).collect(Collectors.toList()))); query.addCriteria(Criteria.where("userId").in(userList.stream().map(User::getId).collect(Collectors.toList())));
} }
long count = behaviorDao.count(query, collectionNames); 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 -> { List<BehaviorVO> resList = behaviorList.stream().map(behavior -> {
Integer roleId = getRoleId(behavior.getUserId(), behavior.getProjectId()); Integer roleId = getRoleId(behavior.getUserId(), behavior.getProjectId());
return BehaviorVO.createFromBehavior(behavior, roleId); return BehaviorVO.createFromBehavior(behavior, roleId);
}).collect(Collectors.toList()); }).collect(Collectors.toList());
MongoUtil.PageHelper<BehaviorVO> pageHelper = mongoUtil.pageHelperT(count, resList); return PageVO.createPageVo(count, page, size, resList);
return PageVO.createPageVo(pageHelper, resList);
} }
@Override @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