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