package com.ruoyi.admin.service.impl;
|
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.admin.entity.MasterWorker;
|
import com.ruoyi.admin.mapper.MasterWorkerMapper;
|
import com.ruoyi.admin.service.MasterWorkerService;
|
import com.ruoyi.admin.vo.MasterWorkerRankVO;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.order.api.entity.WorkerOrderRankVO;
|
import com.ruoyi.order.api.feignClient.OrderClient;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 师傅信息表 服务实现类
|
* </p>
|
*
|
* @author hjl
|
* @since 2024-05-29
|
*/
|
@Service
|
public class MasterWorkerServiceImpl extends ServiceImpl<MasterWorkerMapper, MasterWorker> implements MasterWorkerService {
|
|
@Resource
|
private OrderClient orderClient;
|
|
@Override
|
public List<MasterWorkerRankVO> workerRanking(List<String> cityList) {
|
List<MasterWorker> masterWorkerList;
|
if (null == cityList || cityList.isEmpty()) {
|
masterWorkerList = lambdaQuery().eq(MasterWorker::getIsDelete, 0).list();
|
} else {
|
masterWorkerList = lambdaQuery().in(MasterWorker::getCityCode, cityList)
|
.eq(MasterWorker::getIsDelete, 0).list();
|
}
|
if (null == masterWorkerList || masterWorkerList.isEmpty()) {
|
return new ArrayList<>();
|
}
|
// 师傅id查询
|
List<Integer> workerIds = masterWorkerList.stream().map(MasterWorker::getId).collect(Collectors.toList());
|
List<WorkerOrderRankVO> data = orderClient.workerOrderRank(workerIds).getData();
|
Map<Integer, Integer> map = data.stream().collect(Collectors.toMap(WorkerOrderRankVO::getWorkerId,
|
WorkerOrderRankVO::getOrderNumber));
|
// 结果数据封装
|
List<MasterWorkerRankVO> result = new ArrayList<>();
|
for (MasterWorker masterWorker : masterWorkerList) {
|
Integer id = masterWorker.getId();
|
Integer orderNumber = map.get(id);
|
if (null != orderNumber) {
|
// 展示数据
|
MasterWorkerRankVO masterWorkerRankVO = new MasterWorkerRankVO();
|
masterWorkerRankVO.setProfilePicture(masterWorker.getProfilePicture());
|
masterWorkerRankVO.setRealName(masterWorker.getRealName());
|
masterWorkerRankVO.setOrderNumber(orderNumber);
|
result.add(masterWorkerRankVO);
|
}
|
}
|
// 创建一个 Comparator
|
Comparator<MasterWorkerRankVO> comparator = Comparator
|
// 按照 orderNumber 字段排序
|
.comparingInt(MasterWorkerRankVO::getOrderNumber)
|
// 倒序
|
.reversed();
|
// 使用 Collections.sort 方法进行排序
|
result.sort(comparator);
|
return result;
|
}
|
|
@Override
|
public boolean checkOnlyPhone(String phone, Integer id) {
|
LambdaQueryChainWrapper<MasterWorker> wrapper = lambdaQuery().eq(MasterWorker::getPhone, phone).eq(BaseEntity::getIsDelete, 0);
|
if (null != id) {
|
wrapper.ne(MasterWorker::getId, id);
|
}
|
MasterWorker masterWorker = wrapper.one();
|
return masterWorker == null;
|
}
|
|
}
|