|
|
@@ -1,10 +1,14 @@
|
|
|
package com.sqx.modules.errand.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.sqx.common.utils.Result;
|
|
|
+import com.sqx.modules.app.entity.UserEntity;
|
|
|
import com.sqx.modules.app.service.UserService;
|
|
|
import com.sqx.modules.errand.dao.ErrandEvaluateDao;
|
|
|
import com.sqx.modules.errand.dao.TbIndentDao;
|
|
|
@@ -17,8 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class ErrandEvaluateServiceImpl extends ServiceImpl<ErrandEvaluateDao, ErrandEvaluate> implements ErrandEvaluateService {
|
|
|
@@ -55,14 +59,64 @@ public class ErrandEvaluateServiceImpl extends ServiceImpl<ErrandEvaluateDao, Er
|
|
|
|
|
|
@Override
|
|
|
public Result selectEvaluate(Integer page, Integer limit,String nickName,String riderName,Long userId,Long riderUserId,String satisfactionFlag,String indentNumber) {
|
|
|
+ // 参数校验
|
|
|
+ if (page == null || page < 1) {
|
|
|
+ page = 1;
|
|
|
+ }
|
|
|
+ if (limit == null || limit < 1) {
|
|
|
+ limit = 10;
|
|
|
+ }
|
|
|
+
|
|
|
Page<ErrandEvaluate> pages = new Page<>(page, limit);
|
|
|
IPage<ErrandEvaluate> evaluateIPage = baseMapper.selectEvaluateList(pages, nickName, riderName, userId,riderUserId, satisfactionFlag, indentNumber);
|
|
|
List<ErrandEvaluate> records = evaluateIPage.getRecords();
|
|
|
- for(ErrandEvaluate evaluate:records){
|
|
|
- evaluate.setUser(userService.getById(evaluate.getUserId()));
|
|
|
- evaluate.setRiderUser(userService.getById(evaluate.getRiderUserId()));
|
|
|
- evaluate.setIndent(indentService.findIndentByIndentNumber(evaluate.getIndentNumber()));
|
|
|
+// 校验参数
|
|
|
+ if (ObjectUtils.isNotEmpty(records)) {
|
|
|
+ // 批量查询用户信息
|
|
|
+ List<Long> userList = records.stream().map(ErrandEvaluate::getUserId).collect(Collectors.toList());
|
|
|
+ Map<Long, UserEntity> userMap = new HashMap<>();
|
|
|
+ if (userList.size()>0) {
|
|
|
+ LambdaQueryWrapper<UserEntity> wrapper=new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(UserEntity::getUserId,userList);
|
|
|
+ List<UserEntity> users = userService.list(wrapper);
|
|
|
+ userMap = users.stream().collect(Collectors.toMap(
|
|
|
+ UserEntity::getUserId,
|
|
|
+ user -> user
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量查询骑手信息(riderUserId 也是用户表中的ID)
|
|
|
+ List<Long> riderUserList = records.stream().map(ErrandEvaluate::getRiderUserId).collect(Collectors.toList());
|
|
|
+ Map<Long, UserEntity> riderUserMap = new HashMap<>();
|
|
|
+ if (riderUserList.size()>0) {
|
|
|
+ LambdaQueryWrapper<UserEntity> wrapperR=new LambdaQueryWrapper<>();
|
|
|
+ wrapperR.in(UserEntity::getUserId,riderUserList);
|
|
|
+ List<UserEntity> riderUsers = userService.list(wrapperR);
|
|
|
+ riderUserMap = riderUsers.stream().collect(Collectors.toMap(
|
|
|
+ UserEntity::getUserId,
|
|
|
+ rider -> rider
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量查询订单信息
|
|
|
+ List<String> indentNumberList = records.stream().map(ErrandEvaluate::getIndentNumber).collect(Collectors.toList());
|
|
|
+ Map<String, TbIndent> indentMap = new HashMap<>();
|
|
|
+ if (indentNumberList.size()>0) {
|
|
|
+ List<TbIndent> indents = indentService.findIndentsByIndentNumbers(indentNumberList);
|
|
|
+ indentMap = indents.stream().collect(Collectors.toMap(
|
|
|
+ TbIndent::getIndentNumber,
|
|
|
+ indent -> indent
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置关联信息
|
|
|
+ for(ErrandEvaluate evaluate:records){
|
|
|
+ evaluate.setUser(userMap.get(evaluate.getUserId()));
|
|
|
+ evaluate.setRiderUser(riderUserMap.get(evaluate.getRiderUserId()));
|
|
|
+ evaluate.setIndent(indentMap.get(evaluate.getIndentNumber()));
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
return Result.success().put("data", evaluateIPage);
|
|
|
}
|
|
|
|