Переглянути джерело

:space_invader: 通过 adminId 获取上级账号信息; 通过 username 获取账号的 id; 设置关联上级(x); 根据旧系统的层级关系来关联上级客户; 获取旧系统用户的 parentId

Ritchie 1 рік тому
батько
коміт
769fe7bf96

+ 25 - 20
src/main/java/com/szwl/controller/SyncOldAdminController.java

@@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Slf4j
 @Api(value = "/syncOldAdmin", tags = {"同步旧系统的 admin 用户数据"})
@@ -41,32 +42,36 @@ public class SyncOldAdminController {
     }
 
 
-    // TODO:
     @ApiOperation(value = "根据旧系统的层级关系来关联上级客户")
     @PostMapping("/relevanceSuperiorCustomer")
-    public ResponseModel<TAdmin> relevanceSuperiorCustomer(String startTime, String endTime) {
-
-        // 根据时间获取用户信息
+    public ResponseModel<?> relevanceSuperiorCustomer(String startTime, String endTime) {
+        int i = 0;
+        // 根据时间获取旧系统用户信息
         List<TAdmin> oldAdminList = R.getDataIfSuccess(syncOldFeign.getAdminInTime(startTime, endTime));
-        for (TAdmin oldAdmin : oldAdminList) {
-            // 获取这些用户的 parent_id
-            Long oldAdminId = oldAdmin.getId();
-//            syncOldFeign.getParentIdByAdminId(oldAdminId);
 
-            // 关联到新系统的 admin 中
-            LambdaQueryWrapper<TAdmin> lqw = Wrappers.lambdaQuery();
-            lqw.eq(TAdmin::getId, oldAdminId);
-            TAdmin admin = adminService.getOne(lqw);
-//            admin.setRelationAdminId(parentId);
-            adminService.updateById(admin);
+        // 先看在新系统中这些用户有没有关联上级
+        for (TAdmin admin : oldAdminList) {
+            Long id = admin.getId();
+            LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
+            wrapper.eq(TAdmin::getId, id);
+            TAdmin adminNew = adminService.getOne(wrapper);
+            if (Objects.nonNull(adminNew)) {
+                String relationAdminId = adminNew.getRelationAdminId();
+                String adminId = String.valueOf(id);
+                if (StringUtils.isEmpty(relationAdminId)) { // 如果在新系统中未关联上级
+                    // 获取旧系统中对应的parentId
+                    Long parentId = R.getDataIfSuccess(syncOldFeign.getParentId(adminId));
+                    if (parentId == null) {
+                        adminNew.setRelationAdminId("");
+                    }
+                    adminNew.setRelationAdminId(String.valueOf(parentId));
+                    adminService.updateById(adminNew);
+                    i++;
+                }
+            }
         }
 
-
-        // 根据当前用户的 adminId 获取旧系统账户的上级 adminId,也就是parent_id
-//        syncOldFeign.getAdminById(adminId);
-
-
-        return R.ok();
+        return R.ok("关联成功" + i + "个客户");
     }
 
 

+ 69 - 0
src/main/java/com/szwl/controller/TAdminController.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sun.javafx.logging.PulseLogger;
 import com.szwl.annotation.Audit;
 import com.szwl.constant.AuditEnum;
 import com.szwl.constant.ResponseCodesEnum;
@@ -852,11 +853,50 @@ public class TAdminController {
         if (admin.getApplyEndTime() != null) {
             oldAdmin.setApplyEndTime(admin.getApplyEndTime());
         }
+        if (StringUtils.isNotEmpty(admin.getRelationAdminId())) {
+            oldAdmin.setRelationAdminId(admin.getRelationAdminId());
+        }
         oldAdmin.setModifyDate(new Date());
         tAdminService.updateById(oldAdmin);
         return R.ok(null, "修改成功");
     }
 
+    @ApiOperation(value = "设置关联上级")
+    @PostMapping("/setRelationAdminId")
+    public ResponseModel<?> setRelationAdminId(@RequestBody Map<String, String> params) {
+        String managerId = params.get("managerId");
+        String username = params.get("username");
+        String relationUsername = params.get("relationUsername");
+        if (StringUtils.isEmpty(managerId) || StringUtils.isEmpty(username)) {
+            return R.fail(ResponseCodesEnum.A0001, "参数不能为空");
+        }
+        LambdaQueryWrapper<TAdmin> lqw = Wrappers.lambdaQuery();
+        lqw.eq(TAdmin::getUsername, username);
+        TAdmin admin = tAdminService.getOne(lqw);
+        if (Objects.isNull(admin)) {
+            return R.fail(ResponseCodesEnum.A0206, "用户不存在");
+        }
+        String managerId1 = admin.getManagerId();
+
+        if (!managerId1.equals(managerId)) {
+            return R.fail(ResponseCodesEnum.B0001, "用户名或系统id不匹配");
+        }
+        if (username.equals(relationUsername)) {
+            return R.fail(ResponseCodesEnum.B0001, "同一账户不能构成上下级");
+        }
+        if (StringUtils.isEmpty(relationUsername) || "".equals(relationUsername)) { // 无上级,或取消上级
+            admin.setRelationAdminId("");
+        } else {
+            LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
+            wrapper.eq(TAdmin::getUsername, relationUsername);
+            TAdmin relationAdmin = tAdminService.getOne(wrapper);
+            Long relationAdminId = relationAdmin.getId();
+            admin.setRelationAdminId(String.valueOf(relationAdminId));
+        }
+        tAdminService.saveOrUpdate(admin);
+        return R.ok("关联成功");
+    }
+
     @ApiOperation(value = "绑定上级账户")
     @GetMapping("/setRelationAdmin")
     @Transactional
@@ -934,6 +974,35 @@ public class TAdminController {
         return R.ok();
     }
 
+    @ApiOperation(value = "通过 adminId 获取上级账号信息")
+    @GetMapping("/getRelation")
+    public ResponseModel<TAdmin> getRelation(String adminId) {
+        LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(TAdmin::getId, adminId);
+        TAdmin admin = tAdminService.getOne(wrapper);
+        if (Objects.nonNull(admin)) {
+            String relationAdminId = admin.getRelationAdminId();
+            if (StringUtils.isNotEmpty(relationAdminId) && !"".equals(relationAdminId)) {
+                TAdmin relationAdmin = tAdminService.getById(relationAdminId);
+                return R.ok(relationAdmin);
+            }
+        }
+        return null;
+    }
+
+    @ApiOperation(value = "通过 username 获取账号的 id")
+    @GetMapping("/getRelationAdminId")
+    public ResponseModel<String> getRelationAdminId(String relationUsername) {
+        LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(TAdmin::getUsername, relationUsername);
+        TAdmin admin = tAdminService.getOne(wrapper);
+        if (Objects.nonNull(admin)) {
+            Long adminId = admin.getId();
+            return R.ok(String.valueOf(adminId));
+        }
+        return null;
+    }
+
     @ApiOperation(value = "获取上级账号名")
     @GetMapping("/getRelationAdminUsername")
     public String getRelationAdminUsername(String relationAdminId) {

+ 9 - 4
src/main/java/com/szwl/feign/bean/SyncOldFeign.java

@@ -3,10 +3,7 @@ package com.szwl.feign.bean;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.entity.*;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 import java.util.List;
@@ -24,6 +21,14 @@ public interface SyncOldFeign {
     ResponseModel<List<TProduct>> getProductByEquipmentId(@RequestParam String equipmentId);
 
     /**
+     * 获取旧系统用户的 parentId
+     * @param adminId
+     * @return
+     */
+    @GetMapping("/oldAdmin/getParentId")
+    ResponseModel<Long> getParentId(@RequestParam String adminId);
+
+    /**
      * 通过 adminId 获取用户信息
      * @param adminId
      * @return

+ 4 - 4
src/test/java/com/szwl/model/utils/usaEquipment/ContainsTest.java

@@ -4,9 +4,9 @@ import org.apache.commons.lang.StringUtils;
 
 public class ContainsTest {
     public static void main(String[] args) {
-        String addr = "浙江省杭州市 联通";
-        String country = "国";
-        String location = "浙江省杭州";
+        String addr = "日本";
+        String country = "国";
+        String location = "日本,韩国";
 
         ContainsTest containsTest = new ContainsTest();
         String s = containsTest.cTest(addr, country, location);
@@ -28,7 +28,7 @@ public class ContainsTest {
             if (country.equals("中国")) {
                 containsUserInput = addr.contains(location);
             } else {
-                containsUserInput = addr.contains(country) || addr.contains(location);
+                containsUserInput = addr.contains(country) || addr.contains(location) || location.contains(addr);
             }
         }