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-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java |   69 +++++++++++++++++++++++++++++++++-
 1 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
index 59aa63f..b9a3a73 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -30,7 +30,11 @@
 import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
 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.web.page.PageInfo;
+import com.xiaopeng.common.log.annotation.AdminOperationLog;
+import com.xiaopeng.common.log.enums.AdminBusinessType;
+import com.xiaopeng.common.log.enums.AdminOperationType;
 import com.xiaopeng.common.security.service.TokenService;
 import com.xiaopeng.evi.oss.service.AliOssService;
 import io.swagger.annotations.ApiOperation;
@@ -95,7 +99,9 @@
      */
     @PostMapping("/logan/inner/xpOperationsUser/listByIds")
     public R<List<XpOperationsUser>> listByIds(@RequestBody List<Long> ids) {
-        return R.ok(xpOperationsUserService.listByIds(ids));
+        List<XpOperationsUser> users = xpOperationsUserService.listByIds(ids);
+        users.forEach(user -> user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber())));
+        return R.ok(users);
     }
 
     @PostMapping("/logan/inner/xpOperationsUser/pageListByIds")
@@ -118,6 +124,7 @@
         XpOperationsRole operationsUserId = xpOperationsRoleMapper.selectOne(new QueryWrapper<XpOperationsRole>().eq("operations_user_id", id));
         SysRole sysRole = sysRoleService.getById(operationsUserId.getRoleId());
         operationsUser.setRoleName(sysRole.getRoleName());
+        operationsUser.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(operationsUser.getPhoneNumber()));
         return R.ok(operationsUser);
     }
 
@@ -167,8 +174,10 @@
         List<XpOperationsUserWithRoleVO> result = xpOperationsRoleMapper.selectUsersByConditions(
                 dto.getNickName(),
                 dto.getPhoneNumber(),
+                SensitiveDataCryptoUtil.queryValues(dto.getPhoneNumber()),
                 dto.getRoleId()
         );
+        result.forEach(user -> user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber())));
         return R.ok(result);
     }
 
@@ -245,6 +254,7 @@
     @PostMapping("/api/v1/operationsUser/listAll")
     public R<List<XpOperationsUser>> listAll() {
         List<XpOperationsUser> listAll = xpOperationsUserService.list();
+        listAll.forEach(user -> user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber())));
         for (XpOperationsUser xpOperationsUser : listAll) {
             // todo 需要上传工单id,根据距离进行排序
         }
@@ -261,23 +271,42 @@
         List<XpOperationsUser> users = xpOperationsUserService.lambdaQuery()
                 .eq(XpOperationsUser::getStatus, true)
                 .list();
+        users.forEach(user -> user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber())));
         return R.ok(users);
     }
 
     @ApiOperation(value = "运维人员管理新增", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/add")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.ADD,
+            content = "新增运维人员",
+            appendRequestData = true
+    )
     public R<String> add(@RequestBody XpOperationsUserAddDTO dto) {
         return xpOperationsUserService.addOperationsUser(dto);
     }
 
     @ApiOperation(value = "运维人员管理编辑", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/edit")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.EDIT,
+            content = "编辑运维人员",
+            appendRequestData = true
+    )
     public R<String> edit(@RequestBody XpOperationsUserAddDTO dto) {
         return xpOperationsUserService.editOperationsUser(dto);
     }
 
     @ApiOperation(value = "运维人员管理启用禁用", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/enableDisableById")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.SWITCH_STATUS,
+            content = "运维人员管理启用禁用",
+            appendRequestData = true
+    )
     public R<String> enableDisableById(@RequestBody EnableDisableDTO dto) {
         xpOperationsUserService.enableDisableById(dto);
         return R.ok();
@@ -285,6 +314,12 @@
 
     @ApiOperation(value = "运维人员管理删除", tags = {"管理后台-运维执行"})
     @DeleteMapping("/api/v1/operationsUser/deleteById")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.DELETE,
+            content = "删除运维人员",
+            appendRequestData = true
+    )
     public R<String> deleteById(@RequestParam Long id) {
         try {
             R<XpFleet> fleetResult = xpFleetClient.getFleetByOperationsUserId(id);
@@ -313,6 +348,12 @@
 
     @ApiOperation(value = "运维人员管理重置密码", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/rePassword")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.RESET_PASSWORD,
+            content = "重置运维人员密码",
+            appendRequestData = true
+    )
     public R<String> rePassword(@RequestBody RePasswordDTO dto) {
         xpOperationsUserService.rePassword(dto);
         return R.ok();
@@ -406,6 +447,12 @@
 
     @ApiOperation(value = "运维人员管理导出列表", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/exportOperationsUser")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.EXPORT,
+            content = "导出运维人员列表",
+            appendRequestData = true
+    )
     public void exportOperationsUser(@RequestBody XpOperationsUserQuery query, HttpServletResponse response) {
         xpOperationsUserService.exportOperationsUser(query, response);
     }
@@ -413,6 +460,12 @@
 
     @ApiOperation(value = "运维人员管理导出模板", tags = {"管理后台-运维执行"})
     @GetMapping("/api/v1/operationsUser/exportTemplate")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.EXPORT,
+            content = "导出运维人员模板",
+            appendRequestData = false
+    )
     public void exportTemplate(HttpServletResponse response) {
         xpOperationsUserService.exportTemplate(response);
     }
@@ -420,6 +473,12 @@
 
     @ApiOperation(value = "运维人员管理导入数据", tags = {"管理后台-运维执行"})
     @PostMapping("/api/v1/operationsUser/importOperationsUser")
+    @AdminOperationLog(
+            businessType = AdminBusinessType.OPERATIONS_USER_MANAGEMENT,
+            operationType = AdminOperationType.IMPORT,
+            content = "导入运维人员数据",
+            appendRequestData = false
+    )
     public R<String> importOperationsUser(@RequestParam("file") MultipartFile file) {
         xpOperationsUserService.importOperationsUser(file);
         return R.ok();
@@ -447,10 +506,16 @@
     @ApiOperation(value = "根据手机号精确查询运维用户", tags = {"内部接口"})
     @GetMapping("/logan/inner/xpOperationsUser/getByExactPhone")
     public R<XpOperationsUser> getByExactPhone(@RequestParam("phoneNumber") String phoneNumber) {
+        if (com.xiaopeng.common.core.utils.StringUtils.isBlank(phoneNumber)) {
+            return R.ok();
+        }
         XpOperationsUser user = xpOperationsUserService.lambdaQuery()
-                .eq(XpOperationsUser::getPhoneNumber, phoneNumber)
+                .in(XpOperationsUser::getPhoneNumber, SensitiveDataCryptoUtil.queryValues(phoneNumber))
                 .last("LIMIT 1")
                 .one();
+        if (user != null) {
+            user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber()));
+        }
         return R.ok(user);
     }
 }

--
Gitblit v1.7.1