From 08cc6d5cf7e93b75cfabe7dcc2aeaa9afa1117eb Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 12 五月 2026 15:01:47 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.1

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java |  140 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 132 insertions(+), 8 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
index 00c88c5..76b796e 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.PhoneUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.dto.account.UcUserInfo;
 import com.xiaopeng.api.feignClient.account.UserResourcesClient;
@@ -10,6 +11,7 @@
 import com.xiaopeng.api.model.operation.XpWhitelistOperlog;
 import com.xiaopeng.common.core.domain.R;
 import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
 import com.xiaopeng.common.core.utils.ip.IpUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.operation.constant.I18nKeyConstant;
@@ -25,6 +27,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
+import java.io.Serializable;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,15 +51,19 @@
 
     @Override
     public PageInfo<XpWhitelist> pageList(WhitelistPageListQuery query) {
+        query.setAccountQueryValues(SensitiveDataCryptoUtil.queryValues(query.getAccount()));
         PageInfo<XpWhitelist> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
         List<XpWhitelist> list = this.baseMapper.pageList(pageInfo,query);
+        decryptWhitelistAccounts(list);
         pageInfo.setRecords(list);
         return pageInfo;
     }
 
     @Override
     public List<XpWhitelist> exportList(WhitelistPageListQuery query) {
+        query.setAccountQueryValues(SensitiveDataCryptoUtil.queryValues(query.getAccount()));
         List<XpWhitelist> list = this.baseMapper.exportList(query);
+        decryptWhitelistAccounts(list);
         return list;
     }
 
@@ -115,13 +122,16 @@
 
         Set<String> existsAccounts = new HashSet<>();
         if (CollUtil.isNotEmpty(candidates)) {
-            existsAccounts = this.lambdaQuery()
+            Set<String> existsStoredAccounts = this.lambdaQuery()
                     .select(XpWhitelist::getAccount)
-                    .in(XpWhitelist::getAccount, candidates)
+                    .in(XpWhitelist::getAccount, buildQueryValues(candidates))
                     .list()
                     .stream()
                     .map(XpWhitelist::getAccount)
                     .filter(StringUtils::hasLength)
+                    .collect(Collectors.toSet());
+            existsAccounts = existsStoredAccounts.stream()
+                    .map(SensitiveDataCryptoUtil::decryptIfPossible)
                     .collect(Collectors.toSet());
         }
 
@@ -132,7 +142,7 @@
                 continue;
             }
             XpWhitelist xpWhitelist = new XpWhitelist();
-            xpWhitelist.setAccount(account);
+            xpWhitelist.setAccount(SensitiveDataCryptoUtil.encrypt(account));
             xpWhitelist.setNickName(userMap.get(account).getNickName());
             xpWhitelist.setAppUserId(userMap.get(account).getUid());
             xpWhitelist.setStatus(true);
@@ -165,7 +175,7 @@
         StringBuilder operationContent = new StringBuilder("新增账号:");
         StringBuilder accountBuilder = new StringBuilder();
         for (XpWhitelist item : addList) {
-            accountBuilder.append("\"").append(item.getAccount()).append("\"").append(",");
+            accountBuilder.append("\"").append(SensitiveDataCryptoUtil.decryptIfPossible(item.getAccount())).append("\"").append(",");
         }
         if (accountBuilder.length() > 0) {
             operationContent.append(accountBuilder.substring(0, accountBuilder.length() - 1));
@@ -257,13 +267,14 @@
         }
         UcUserInfo userByAccount = this.getUserByAccount(dto.getAccount());
         XpWhitelist old = this.lambdaQuery()
-                .eq(XpWhitelist::getAccount, dto.getAccount())
+                .in(XpWhitelist::getAccount, SensitiveDataCryptoUtil.queryValues(dto.getAccount()))
                 .ne(XpWhitelist::getId, dto.getId())
                 .last("limit 1").one();
         if (old != null) {
             return R.fail("该账号已存在");
         }
         XpWhitelist whitelist = this.getById(dto.getId());
+        whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount()));
 
         whitelist.setAppUserId(userByAccount.getUid());
 
@@ -310,7 +321,7 @@
         xpWhitelistOperlogMapper.insert(xpWhitelistOperlog);
         whitelist.setNickName(dto.getNickName());
         whitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch());
-        whitelist.setAccount(dto.getAccount());
+        whitelist.setAccount(SensitiveDataCryptoUtil.encrypt(dto.getAccount()));
         whitelist.setStatus(dto.getStatus());
         this.updateById(whitelist);
         return R.ok();
@@ -319,6 +330,7 @@
     @Override
     public R freezeUnfreeze(Long id, SysUser sysUser) {
         XpWhitelist whitelist = this.getById(id);
+        whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount()));
         StringBuilder operationContent = new StringBuilder("编辑账号:"+"\""+whitelist.getAccount()+"\"");
         StringBuilder accountBuilder = new StringBuilder();
         accountBuilder.append("状态" + "\"" + (whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\"" + "为" + "\"" + (!whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\"");
@@ -339,7 +351,9 @@
     @Override
     public R deleteByIds(List<Long> ids, SysUser sysUser) {
         List<String> accounts = this.lambdaQuery().in(XpWhitelist::getId, ids).list()
-                .stream().map(XpWhitelist::getAccount).collect(Collectors.toList());
+                .stream().map(XpWhitelist::getAccount)
+                .map(SensitiveDataCryptoUtil::decryptIfPossible)
+                .collect(Collectors.toList());
         this.removeBatchByIds(ids);
         StringBuilder operationContent = new StringBuilder("删除账号:");
         StringBuilder accountBuilder = new StringBuilder();
@@ -384,6 +398,116 @@
     @Override
     public List<String> getAllWhiteList() {
         return lambdaQuery().select(XpWhitelist::getAccount).list()
-                .stream().map(XpWhitelist::getAccount).collect(Collectors.toList());
+                .stream().map(XpWhitelist::getAccount)
+                .map(SensitiveDataCryptoUtil::decryptIfPossible)
+                .collect(Collectors.toList());
+    }
+
+    private static List<String> buildQueryValues(Collection<String> plainValues) {
+        Set<String> values = new LinkedHashSet<>();
+        if (plainValues == null) {
+            return new ArrayList<>();
+        }
+        for (String plainValue : plainValues) {
+            if (StringUtils.hasLength(plainValue)) {
+                values.addAll(SensitiveDataCryptoUtil.queryValues(plainValue));
+            }
+        }
+        return new ArrayList<>(values);
+    }
+
+    private static void decryptWhitelistAccounts(List<XpWhitelist> list) {
+        if (CollUtil.isEmpty(list)) {
+            return;
+        }
+        for (XpWhitelist item : list) {
+            item.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(item.getAccount()));
+        }
+    }
+
+    @Override
+    public XpWhitelist getById(Serializable id) {
+        XpWhitelist whitelist = super.getById(id);
+        decryptWhitelistAccount(whitelist);
+        return whitelist;
+    }
+
+    @Override
+    public boolean save(XpWhitelist entity) {
+        encryptWhitelistAccount(entity);
+        try {
+            return super.save(entity);
+        } finally {
+            decryptWhitelistAccount(entity);
+        }
+    }
+
+    @Override
+    public boolean saveBatch(Collection<XpWhitelist> entityList) {
+        if (entityList != null) {
+            entityList.forEach(this::encryptWhitelistAccount);
+        }
+        try {
+            return super.saveBatch(entityList);
+        } finally {
+            decryptWhitelistAccounts(entityList);
+        }
+    }
+
+    @Override
+    public boolean updateById(XpWhitelist entity) {
+        encryptWhitelistAccount(entity);
+        try {
+            return super.updateById(entity);
+        } finally {
+            decryptWhitelistAccount(entity);
+        }
+    }
+
+    @Override
+    public boolean updateBatchById(Collection<XpWhitelist> entityList) {
+        if (entityList != null) {
+            entityList.forEach(this::encryptWhitelistAccount);
+        }
+        try {
+            return super.updateBatchById(entityList);
+        } finally {
+            decryptWhitelistAccounts(entityList);
+        }
+    }
+
+    @Override
+    public List<XpWhitelist> list(Wrapper<XpWhitelist> queryWrapper) {
+        List<XpWhitelist> list = super.list(queryWrapper);
+        decryptWhitelistAccounts(list);
+        return list;
+    }
+
+    @Override
+    public List<XpWhitelist> list() {
+        List<XpWhitelist> list = super.list();
+        decryptWhitelistAccounts(list);
+        return list;
+    }
+
+    private void encryptWhitelistAccount(XpWhitelist whitelist) {
+        if (whitelist != null) {
+            whitelist.setAccount(SensitiveDataCryptoUtil.encrypt(whitelist.getAccount()));
+        }
+    }
+
+    private static void decryptWhitelistAccount(XpWhitelist whitelist) {
+        if (whitelist != null) {
+            whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount()));
+        }
+    }
+
+    private void decryptWhitelistAccounts(Collection<XpWhitelist> list) {
+        if (CollUtil.isEmpty(list)) {
+            return;
+        }
+        for (XpWhitelist item : list) {
+            decryptWhitelistAccount(item);
+        }
     }
 }

--
Gitblit v1.7.1