From d3d65af98906ccc78652c16be7e8a9fbdc03f258 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 12 五月 2026 19:13:27 +0800
Subject: [PATCH] 日志 + 加密

---
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java |  126 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 116 insertions(+), 10 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 3cef6a2..c9d6c73 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,5 +1,6 @@
 package com.xiaopeng.account.service.impl;
 
+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;
@@ -11,6 +12,7 @@
 import com.xiaopeng.api.model.account.SysUserRole;
 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;
@@ -22,7 +24,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;
 
 /**
@@ -53,7 +57,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;
 	}
 
 	/**
@@ -87,7 +93,9 @@
 	 */
 	@Override
 	public SysUser selectUserById(Long userId) {
-		return userMapper.selectUserById(userId);
+		SysUser user = userMapper.selectUserById(userId);
+		decryptPhone(user);
+		return user;
 	}
 
 	/**
@@ -114,8 +122,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;
 		}
@@ -170,7 +180,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);
+		}
 	}
 
 	/**
@@ -180,10 +195,15 @@
 	 * @return 结果
 	 */
 	@Override
-    @Transactional
+	@Transactional
     @ShardingSphereTransactionType(TransactionType.BASE)
 	public int updateUser(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -208,7 +228,12 @@
 	 */
 	@Override
 	public int updateUserStatus(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -219,7 +244,12 @@
 	 */
 	@Override
 	public int resetPwd(SysUser user) {
-		return userMapper.updateUser(user);
+		encryptPhone(user);
+		try {
+			return userMapper.updateUser(user);
+		} finally {
+			decryptPhone(user);
+		}
 	}
 
 	/**
@@ -263,11 +293,87 @@
 
     @Override
     public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, SysUserListQuery sysUserListQuery) {
-        return userMapper.getList(pageInfo, sysUserListQuery);
+		sysUserListQuery.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(sysUserListQuery.getPhoneNumber()));
+        PageInfo<SysUser> page = userMapper.getList(pageInfo, sysUserListQuery);
+		decryptPhones(page.getRecords());
+		return page;
     }
 
 	@Override
 	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