From ec6d43aa07ee0e8faf34498057ebcfbb446aa015 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期二, 16 七月 2024 09:21:51 +0800
Subject: [PATCH] feat: 代码重构

---
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java |   52 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
index 6d6bf62..516dacf 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MasterWorkerServiceImpl.java
@@ -1,14 +1,17 @@
 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.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;
 
 /**
@@ -22,25 +25,58 @@
 @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::getCity, 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) {
-        MasterWorker masterWorker = lambdaQuery().eq(MasterWorker::getPhone, phone).one();
+    public boolean checkOnlyPhone(String phone, Integer id) {
+        LambdaQueryChainWrapper<MasterWorker> wrapper = lambdaQuery().eq(MasterWorker::getPhone, phone);
+        if (null != id) {
+            wrapper.ne(MasterWorker::getId, id);
+        }
+        MasterWorker masterWorker = wrapper.one();
         return masterWorker == null;
     }
 

--
Gitblit v1.7.1