From 76b3532393aa98c2daaeb67caeefa2ab9556e866 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 12 五月 2026 09:26:48 +0800
Subject: [PATCH] 日志

---
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 113 insertions(+), 7 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
index d1f9dd9..f4a5f06 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
@@ -1,6 +1,7 @@
 package com.xiaopeng.account.service.impl;
 
 import cn.hutool.core.util.DesensitizedUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.account.constant.I18nKeyConstant;
@@ -14,6 +15,7 @@
 import com.xiaopeng.api.vo.account.LoginUser;
 import com.xiaopeng.common.core.constant.UserConstants;
 import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.common.security.service.TokenService;
@@ -26,7 +28,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -59,7 +63,9 @@
 	@Override
 	public SysUser selectUserByUserName(String userName)
 	{
-		return userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserAccount, userName).last("limit 1"));
+		SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserAccount, userName).last("limit 1"));
+		decryptPhone(user);
+		return user;
 	}
 
 	/**
@@ -93,7 +99,9 @@
 	 */
 	@Override
 	public SysUser selectUserById(Long userId) {
-		return userMapper.selectUserById(userId);
+		SysUser user = userMapper.selectUserById(userId);
+		decryptPhone(user);
+		return user;
 	}
 
 	/**
@@ -121,7 +129,10 @@
 	@Override
 	public boolean checkPhoneUnique(SysUser user) {
 		Long userId = StringUtils.isNull(user.getId()) ? -1L : user.getId();
-		SysUser info = userMapper.checkPhoneUnique(user.getPhoneNumber());
+		SysUser info = lambdaQuery()
+				.in(SysUser::getPhoneNumber, SensitiveDataCryptoUtil.queryValues(user.getPhoneNumber()))
+				.last("limit 1")
+				.one();
 		if (StringUtils.isNotNull(info)) {
 			return UserConstants.NOT_UNIQUE;
 		}
@@ -176,7 +187,12 @@
 //        insertUserRole(user);
 		user.setCreateBy(tokenService.getLoginUser().getUsername());
 		user.setUpdateBy(tokenService.getLoginUser().getUsername());
-		return userMapper.insert(user);
+		encryptPhone(user);
+		try {
+			return userMapper.insert(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -189,7 +205,12 @@
     @Transactional
     @ShardingSphereTransactionType(TransactionType.BASE)
 	public int updateUser(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -214,7 +235,12 @@
 	 */
 	@Override
 	public int updateUserStatus(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -225,7 +251,12 @@
 	 */
 	@Override
 	public int resetPwd(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -269,7 +300,9 @@
 
     @Override
     public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, SysUserListQuery sysUserListQuery) {
+		sysUserListQuery.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(sysUserListQuery.getPhoneNumber()));
         PageInfo<SysUser> page = userMapper.getList(pageInfo, sysUserListQuery);
+		decryptPhones(page.getRecords());
 		return page;
     }
 
@@ -277,4 +310,77 @@
 	public boolean resetUserPwd(Long id, String newPassword) {
 		return lambdaUpdate().eq(SysUser::getId, id).set(SysUser::getPassword, newPassword).update();
 	}
+
+	@Override
+	public boolean save(SysUser entity) {
+		encryptPhone(entity);
+		try {
+			return super.save(entity);
+		} finally {
+			decryptPhone(entity);
+		}
+	}
+
+	@Override
+	public boolean updateById(SysUser entity) {
+		encryptPhone(entity);
+		try {
+			return super.updateById(entity);
+		} finally {
+			decryptPhone(entity);
+		}
+	}
+
+	@Override
+	public SysUser getById(Serializable id) {
+		SysUser user = super.getById(id);
+		decryptPhone(user);
+		return user;
+	}
+
+	@Override
+	public SysUser getOne(Wrapper<SysUser> queryWrapper) {
+		SysUser user = super.getOne(queryWrapper);
+		decryptPhone(user);
+		return user;
+	}
+
+	@Override
+	public List<SysUser> list() {
+		List<SysUser> list = super.list();
+		decryptPhones(list);
+		return list;
+	}
+
+	@Override
+	public List<SysUser> list(Wrapper<SysUser> queryWrapper) {
+		List<SysUser> list = super.list(queryWrapper);
+		decryptPhones(list);
+		return list;
+	}
+
+	@Override
+	public List<SysUser> listByIds(Collection<? extends Serializable> idList) {
+		List<SysUser> list = super.listByIds(idList);
+		decryptPhones(list);
+		return list;
+	}
+
+	private void encryptPhone(SysUser user) {
+		if (user != null) {
+			user.setPhoneNumber(SensitiveDataCryptoUtil.encrypt(user.getPhoneNumber()));
+		}
+	}
+
+	private void decryptPhone(SysUser user) {
+		if (user != null) {
+			user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber()));
+		}
+	}
+
+	private void decryptPhones(List<SysUser> users) {
+		if (users != null) {
+			users.forEach(this::decryptPhone);
+		}
+	}
 }

--
Gitblit v1.7.1