| | |
| | | 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 java.util.ArrayList; |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @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::getCity, cityList).eq(MasterWorker::getIsDelete, 0).list(); |
| | | masterWorkerList = lambdaQuery().in(MasterWorker::getCityCode, cityList) |
| | | .eq(MasterWorker::getIsDelete, 0).list(); |
| | | } |
| | | if (null == masterWorkerList || masterWorkerList.isEmpty()) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<Integer> workerIdList = masterWorkerList.stream().map(MasterWorker::getId).collect(Collectors.toList()); |
| | | List<MasterWorkerRankVO> result = baseMapper.workerRanking(workerIdList); |
| | | return null == result ? new ArrayList<>() : result; |
| | | // 师傅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; |
| | | } |
| | | |
| | | } |