From edfa030a1d325c362769a8465a8afe3f4ec1d66b Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期六, 14 二月 2026 00:10:13 +0800
Subject: [PATCH] fix(management):帐号管理问题修改

---
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/DataUpdateHandlerConfig.java       |   72 ++++++++++++
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java         |   50 ++-----
 xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysUser.java                             |    2 
 xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpRegionMapper.xml                     |   38 ------
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleBakController.java      |   12 -
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java    |   21 +--
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java            |   20 ---
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysUserMapper.java                 |    8 
 xp-robotaxi-account-boot/src/main/resources/mapper/account/SysUserMapper.xml                          |   52 +++----
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupPageVO.java              |    7 +
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java          |    7 -
 xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml                         |    3 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java |   31 -----
 13 files changed, 131 insertions(+), 192 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/DataUpdateHandlerConfig.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/DataUpdateHandlerConfig.java
new file mode 100644
index 0000000..a0e7c56
--- /dev/null
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/DataUpdateHandlerConfig.java
@@ -0,0 +1,72 @@
+package com.xiaopeng.account.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.xiaopeng.common.core.utils.StringUtils;
+import com.xiaopeng.common.security.utils.SecurityUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.context.annotation.Configuration;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author xiaochen
+ * @ClassName DataUpdateInterceptor
+ * @Description 数据更新操作处理
+ * @date 2021-12-15
+ * <p>
+ * 注意,之前在此处注入了 JwtTokenUtils
+ * <p>
+ * 造成spring循环依赖,项目支棱不起来
+ */
+@Slf4j
+@Configuration
+public class DataUpdateHandlerConfig implements MetaObjectHandler {
+
+
+    /**
+     * 新增数据执行
+     *
+     * @param metaObject
+     */
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        String userName = "";
+        try{
+            //  获取登录信息
+            userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
+            log.info("DataUpdateInterceptor insertFill");
+        } catch (Exception e) {
+            log.error("DataUpdateInterceptor insertFill error:{}", e.getMessage());
+        }
+        if (StringUtils.isNotBlank(userName)) {
+            this.setFieldValByName("createBy", userName, metaObject);
+            this.setFieldValByName("updateBy", userName, metaObject);
+        } else {
+            this.setFieldValByName("createBy", userName, metaObject);
+            this.setFieldValByName("updateBy", userName, metaObject);
+        }
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+    }
+
+    /**
+     * 修改数据执行
+     *
+     * @param metaObject
+     */
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        String userName = "";
+        try{
+            //  获取登录信息
+            userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
+            log.info("DataUpdateInterceptor insertFill");
+        } catch (Exception e) {
+            log.error("DataUpdateInterceptor insertFill error:{}", e.getMessage());
+        }
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+        this.setFieldValByName("updateBy", userName, metaObject);
+
+    }
+}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleBakController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleBakController.java
index 981870c..4f24bf4 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleBakController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysRoleBakController.java
@@ -10,11 +10,7 @@
 import com.xiaopeng.account.vo.RoleAddDto;
 import com.xiaopeng.account.vo.RoleInfoVo;
 import com.xiaopeng.account.vo.RoleUpdateDto;
-import com.xiaopeng.api.model.account.SysRoleBak;
-import com.xiaopeng.api.model.account.SysRoleMenu;
-import com.xiaopeng.api.model.account.SysUser;
-import com.xiaopeng.api.model.account.SysUserRole;
-import com.xiaopeng.api.model.account.SysDept;
+import com.xiaopeng.api.model.account.*;
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.web.controller.BaseController;
 import com.xiaopeng.common.core.web.domain.AjaxResult;
@@ -26,7 +22,6 @@
 import com.xiaopeng.common.security.annotation.Logical;
 import com.xiaopeng.common.security.annotation.RequiresPermissions;
 import com.xiaopeng.common.security.utils.SecurityUtils;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
@@ -45,7 +40,6 @@
  */
 @RestController
 @RequestMapping("/role")
-@Api(tags = "角色模块")
 public class SysRoleBakController extends BaseController {
 	@Resource
 	private ISysRoleBakService roleService;
@@ -78,7 +72,6 @@
 	@RequiresPermissions(value = {"/roleManagement"}, logical = Logical.OR)
 	@ResponseBody
 	@GetMapping("/listPage")
-	@ApiOperation(value = "获取角色列表", tags = {"管理后台-角色管理"})
 	public AjaxResult listPage(String name, BasePage basePage) {
 		PageInfo<SysRoleBak> pageInfo = new PageInfo<>(basePage.getPageNum(), basePage.getPageSize());
 		LambdaQueryWrapper<SysRoleBak> wrapper = new LambdaQueryWrapper<SysRoleBak>().eq(SysRoleBak::getStatus, 0).eq(SysRoleBak::getDelFlag, 0);
@@ -124,7 +117,6 @@
 	
 	@RequiresPermissions(value = {"/roleManagement/info", "/roleManagement/update"}, logical = Logical.OR)
 	@GetMapping("/roleInfo")
-	@ApiOperation(value = "角色详情", tags = {"管理后台-角色管理"})
 	public AjaxResult roleInfo(@RequestParam Long id) {
 		SysRoleBak role = roleService.selectRoleById(id);
 		RoleInfoVo roleInfoVo = new RoleInfoVo();
@@ -161,7 +153,6 @@
 	
 	@RequiresPermissions(value = {"/roleManagement/update"}, logical = Logical.OR)
 	@PostMapping("/roleUpdate")
-	@ApiOperation(value = "编辑角色", tags = {"管理后台-角色管理"})
 	public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) {
 		SysRoleBak role = new SysRoleBak();
 		role.setRoleName(dto.getRoleName());
@@ -208,7 +199,6 @@
 	@RequiresPermissions(value = {"/roleManagement/del"}, logical = Logical.OR)
 	@Log(title = "角色管理", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{roleIds}")
-	@ApiOperation(value = "删除角色", tags = {"管理后台-角色管理"})
 	public AjaxResult remove(@PathVariable Long[] roleIds) {
 		return toAjax(roleService.deleteRoleByIds(roleIds));
 	}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
index ad9a758..8e3a174 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
@@ -7,12 +7,9 @@
 import com.xiaopeng.account.model.dto.UserPwdResetDTO;
 import com.xiaopeng.account.model.query.SysUserListQuery;
 import com.xiaopeng.account.service.*;
-import com.xiaopeng.api.model.account.SysRole;
-import com.xiaopeng.api.model.account.SysRoleBak;
-import com.xiaopeng.api.model.account.SysUser;
-import com.xiaopeng.api.model.account.SysUserRole;
-import com.xiaopeng.api.model.account.SysDept;
+import com.xiaopeng.api.model.account.*;
 import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.enums.DisabledEnum;
 import com.xiaopeng.common.core.exception.ServiceException;
 import com.xiaopeng.common.core.utils.RSAUtil;
 import com.xiaopeng.common.core.utils.StringUtils;
@@ -22,8 +19,6 @@
 import com.xiaopeng.common.log.annotation.Log;
 import com.xiaopeng.common.log.enums.BusinessType;
 import com.xiaopeng.common.redis.service.RedisService;
-import com.xiaopeng.common.security.annotation.Logical;
-import com.xiaopeng.common.security.annotation.RequiresPermissions;
 import com.xiaopeng.common.security.service.TokenService;
 import com.xiaopeng.common.security.utils.SecurityUtils;
 import io.swagger.annotations.ApiOperation;
@@ -72,7 +67,6 @@
     /**
      * 获取用户列表
      */
-    @RequiresPermissions(value = {"/systemUserManagement", "/roleManagement/info"}, logical = Logical.OR)
     @GetMapping("/api/v1/sys-user/pageList")
     @ApiOperation(value = "账号管理分页列表", tags = {"管理后台-账号管理"})
     public AjaxResult<PageInfo<SysUser>> list(SysUserListQuery sysUserListQuery) {
@@ -86,7 +80,6 @@
     /**
      * 新增用户
      */
-    @RequiresPermissions(value = {"/systemUserManagement/add"}, logical = Logical.OR)
     @Log(title = "帐号管理", businessType = BusinessType.INSERT)
     @PostMapping("/api/v1/sys-user/add")
     @ApiOperation(value = "添加帐号", tags = {"管理后台-帐号管理"})
@@ -102,7 +95,6 @@
         if (count > 0) {
             throw new ServiceException("用户编号已存在", I18nKeyConstant.ACCOUNT_UNIQUE_NUMBER_DUPLICATE);
         }
-        user.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         //TODO 手机号脱敏存储
         userService.insertUser(user);
@@ -114,7 +106,6 @@
     }
     
     
-    @RequiresPermissions(value = {"/systemUserManagement/add", "/systemUserManagement/update"}, logical = Logical.OR)
     @GetMapping("/verifyUserNameRepeat/{username}")
     @ApiOperation(value = "校验账号是否重复", tags = {"管理后台-系统用户管理"})
     public AjaxResult verifyUserNameRepeat(@PathVariable String username){
@@ -155,18 +146,10 @@
     /**
      * 修改用户
      */
-    @RequiresPermissions(value = {"/systemUserManagement/update"}, logical = Logical.OR)
     @Log(title = "帐号管理", businessType = BusinessType.UPDATE)
     @PutMapping("/api/v1/sys-user/edit")
     @ApiOperation(value = "编辑帐号", tags = {"管理后台-帐号管理"})
     public AjaxResult edit(@Validated @RequestBody SysUser user) {
-        R<Integer> admin = this.isAdmin(user.getId());
-        Integer data = admin.getData();
-        if(data == null || data != 1){
-            SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, user.getId()));
-            one.setRoleId(user.getRoleId());
-            sysUserRoleService.updateSysUserRole(one);
-        }
         userService.checkUserAllowed(user);
         // userService.checkUserDataScope(user.getId());
         SysUser sysUser = userService.getOne(Wrappers.lambdaQuery(SysUser.class)
@@ -182,12 +165,10 @@
         if (StringUtils.isNotEmpty(user.getUserAccount()) && (Objects.nonNull(sysUser) && !user.getId().equals(sysUser.getId()) )) {
             throw new ServiceException("登录账号重复", I18nKeyConstant.ACCOUNT_DUPLICATE);
         }
-        user.setUpdateBy(SecurityUtils.getUsername());
         if (user.getPassword() != null && !user.getPassword().isEmpty()) {
-            user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+            user.setPassword(null);
         }
-        user.setUpdateBy(SecurityUtils.getUsername());
-        userService.updateUser(user);
+        userService.updateById(user);
         
         //删除旧的角色数据,添加新的角色
         sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, user.getId()));
@@ -204,7 +185,6 @@
     /**
      * 删除用户
      */
-    @RequiresPermissions(value = {"/systemUserManagement/del"}, logical = Logical.OR)
     @Log(title = "帐号管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/api/v1/sys-user/{userIds}")
     @ApiOperation(value = "删除账号", tags = {"管理后台-帐号管理"})
@@ -218,15 +198,14 @@
     
 
 
-    @RequiresPermissions(value = {"/systemUserManagement/forbidden"}, logical = Logical.OR)
     @PostMapping("/api/v1/sys-user/switchStatus/{id}")
     @ApiOperation(value = "账号管理--禁用/启用", tags = {"管理后台-帐号管理"})
     public AjaxResult shopUserStart(@ApiParam(name = "id", value = "帐号ID") @PathVariable("id") Long id) {
-        SysUser sysUser = userService.selectUserById(id);
-        if (sysUser.getStatus().equals("0")) {
-            sysUser.setStatus("1");
+        SysUser sysUser = userService.getById(id);
+        if (sysUser.getStatus().equals(DisabledEnum.NO.getCode())) {
+            sysUser.setStatus(DisabledEnum.YES.getCode());
         } else {
-            sysUser.setStatus("0");
+            sysUser.setStatus(DisabledEnum.NO.getCode());
         }
         return toAjax(userService.updateById(sysUser));
     }
@@ -240,10 +219,13 @@
 
 
     @PostMapping("/isAdmin")
-    public R<Integer> isAdmin(@RequestBody Long userId){
+    public R<Long> isAdmin(@RequestBody Long userId){
+        Long id = null;
         SysUserRole one = sysUserRoleService.getOne(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
-        Long id =one.getRoleId();
-        return R.ok(id.intValue());
+        if (Objects.nonNull(one)) {
+            id =one.getRoleId();
+        }
+        return R.ok(id);
     }
 
     @PostMapping("/getSysUser")
@@ -287,7 +269,6 @@
     /**
      * 重置密码
      */
-    @RequiresPermissions(value = {"/systemUserManagement/reset_passwords"}, logical = Logical.OR)
     @Log(title = "帐号管理", businessType = BusinessType.UPDATE)
     @PutMapping("/api/v1/sys-user/rePassword")
     @ApiOperation(value = "重置密码", tags = {"管理后台-帐号管理"})
@@ -299,8 +280,7 @@
         userService.checkUserAllowed(user);
         // userService.checkUserDataScope(user.getId());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
-        user.setUpdateBy(SecurityUtils.getUsername());
-        return toAjax(userService.resetPwd(user));
+        return toAjax(userService.updateById(user));
     }
 
     /**
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysUserMapper.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysUserMapper.java
index 80be7cb..818db0d 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysUserMapper.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysUserMapper.java
@@ -110,18 +110,18 @@
     /**
      * 校验用户名称是否唯一
      * 
-     * @param userName 用户名称
+     * @param userAccount 用户名称
      * @return 结果
      */
-    public SysUser checkUserNameUnique(String userName);
+    public SysUser checkUserNameUnique(String userAccount);
 
     /**
      * 校验手机号码是否唯一
      *
-     * @param phonenumber 手机号码
+     * @param phoneNumber 手机号码
      * @return 结果
      */
-    public SysUser checkPhoneUnique(String phonenumber);
+    public SysUser checkPhoneUnique(String phoneNumber);
     
     
 
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupPageVO.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupPageVO.java
index 4fc3a2a..f738884 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupPageVO.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupPageVO.java
@@ -1,8 +1,11 @@
 package com.xiaopeng.account.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.time.LocalDateTime;
 
 /**
  * 权限组分页列表VO
@@ -27,4 +30,8 @@
 
     @ApiModelProperty(value = "关联账号数")
     private Long bindCount;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
 }
diff --git a/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml b/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
index 911accf..24cb087 100644
--- a/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
+++ b/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
@@ -27,11 +27,12 @@
         FROM sys_user su
         INNER JOIN sys_user_role sur ON su.id = sur.user_id
         INNER JOIN sys_role sr ON sur.role_id = sr.id
+        LEFT JOIN sys_group sg ON sr.group_id = sg.id
         WHERE sr.group_id = #{query.groupId}
           AND sr.is_deleted = 0
           AND su.is_deleted = 0
         <if test="query.groupType != null">
-            AND sr.group_type = #{query.groupType}
+            AND sg.group_type = #{query.groupType}
         </if>
         <if test="query.nickName != null and query.nickName != ''">
             AND su.nick_name LIKE CONCAT('%', #{query.nickName}, '%')
diff --git a/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysUserMapper.xml b/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysUserMapper.xml
index 563dea3..aeb7731 100644
--- a/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysUserMapper.xml
+++ b/xp-robotaxi-account-boot/src/main/resources/mapper/account/SysUserMapper.xml
@@ -5,29 +5,21 @@
 <mapper namespace="com.xiaopeng.account.mapper.SysUserMapper">
 
     <resultMap type="com.xiaopeng.api.model.account.SysUser" id="SysUserResult">
-        <id     property="userId"       column="id"      />
-        <result property="deptId"       column="dept_id"      />
-        <result property="userName"     column="user_name"    />
-        <result property="nickName"     column="nick_name"    />
-        <result property="email"        column="email"        />
-        <result property="phonenumber"  column="phonenumber"  />
-        <result property="sex"          column="sex"          />
-        <result property="avatar"       column="avatar"       />
-        <result property="password"     column="password"     />
+        <id     property="id"       column="id"      />
+		<result property="nickName"     column="nick_name"    />
+		<result property="uniqueNumber"     column="unique_number"    />
+		<result property="userAccount"     column="user_account"    />
+        <result property="phoneNumber"  column="phone_number"  />
+		<result property="password"     column="password"     />
+		<result property="avatar"       column="avatar"       />
         <result property="status"       column="status"       />
-        <result property="delFlag"      column="del_flag"     />
-        <result property="loginIp"      column="login_ip"     />
-        <result property="loginDate"    column="login_date"   />
+        <result property="remarks"       column="remarks"       />
+        <result property="deleted"      column="is_deleted"     />
         <result property="createBy"     column="create_by"    />
         <result property="createTime"   column="create_time"  />
         <result property="updateBy"     column="update_by"    />
         <result property="updateTime"   column="update_time"  />
-	    <result property="forbiddenRemark"           column="forbidden_remark"/>
-        <result property="remark"       column="remark"       />
-	    <result property="passWordUpdate"       column="passWordUpdate"       />
-        <result property="roleType"       column="roleType"       />
-        <result property="objectId"       column="objectId"       />
-        <association property="dept"    column="dept_id" javaType="com.xiaopeng.api.model.account.SysDept" resultMap="deptResult" />
+        <result property="roleId"   column="role_id"  />
         <collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />
     </resultMap>
 	
@@ -42,11 +34,10 @@
     </resultMap>
 	
     <resultMap id="RoleResult" type="com.xiaopeng.api.model.account.SysRole">
-        <id     property="roleId"       column="role_id"        />
+        <id     property="id"       column="role_id"        />
         <result property="roleName"     column="role_name"      />
-        <result property="roleKey"      column="role_key"       />
-        <result property="dataScope"     column="data_scope"    />
-        <result property="status"       column="role_status"    />
+        <result property="groupId"      column="group_id"       />
+        <result property="remarks"     column="remarks"    />
     </resultMap>
 	
 	<sql id="selectUserVo">
@@ -114,22 +105,25 @@
 	</select>
 	
 	<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
-		select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
+		select id, user_account from sys_user where user_account = #{userName} and is_deleted = 0 limit 1
 	</select>
 	
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
-		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
+		select id, phone_number from sys_user where phone_number = #{phonenumber} and is_deleted = 0 limit 1
 	</select>
 	
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
 	</select>
 	<select id="getList" resultMap="SysUserResult">
-		select su.*,sr.role_name from sys_user su
+		select su.*,sr.role_name, sur.role_id from sys_user su
 		left join sys_user_role sur on su.id= sur.user_id
 		left join sys_role sr on sr.id = sur.role_id where 1=1
-		<if test="req.nickname !=null and req.nickname !=''">
-			and nick_name like concat("%", #{req.nickname},"%")
+		<if test="req.nickName !=null and req.nickName !=''">
+			and su.nick_name like concat("%", #{req.nickName},"%")
+		</if>
+		<if test="req.phoneNumber !=null and req.phoneNumber !=''">
+			and su.phone_number like concat("%", #{req.phoneNumber},"%")
 		</if>
 		<if test="null != req.roleId">
 			and sur.role_id = #{req.roleId}
@@ -214,7 +208,7 @@
  			<if test="userName != null and userName != ''">user_name = #{userName},</if>
  			<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
  			<if test="email != null ">email = #{email},</if>
- 			<if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
+ 			<if test="phoneNumber != null ">phone_number = #{phonenumber},</if>
  			<if test="sex != null and sex != ''">sex = #{sex},</if>
  			<if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
  			<if test="password != null and password != ''">password = #{password},</if>
@@ -247,7 +241,7 @@
  	</delete>
  	
  	<delete id="deleteUserByIds" parameterType="Long">
- 		update sys_user set del_flag = '2' where user_id in
+ 		update sys_user set is_deleted = 1 where id in
  		<foreach collection="array" item="userId" open="(" separator="," close=")">
  			#{userId}
         </foreach> 
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysUser.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysUser.java
index d00f659..7b60c1b 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysUser.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysUser.java
@@ -57,7 +57,7 @@
     /** 帐号状态(0正常 1停用) */
     @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
     @ApiModelProperty(value = "帐号状态 0=正常,1=停用")
-    private String status;
+    private Integer status;
 
     @ApiModelProperty(value = "备注")
     private String remarks;
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java
index 0897562..dfbb4b6 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpRegionController.java
@@ -12,11 +12,13 @@
 import com.xiaopeng.operation.service.XpOpenCityService;
 import com.xiaopeng.operation.service.XpRegionService;
 import com.xiaopeng.operation.vo.RegionCascaderVO;
-import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Collections;
 import java.util.List;
@@ -30,7 +32,6 @@
  */
 @Api(tags = "省市管理")
 @RestController
-@RequestMapping("/base/v1/mini-program")
 public class XpRegionController {
 
     private final XpRegionService regionService;
@@ -51,7 +52,7 @@
      * 查询省市管理
      */
     @ApiOperation(value = "查询省市管理",tags = {"小程序-省市管理"},response = XpRegion.class)
-    @GetMapping(value = "/open/t-region/getRegion")
+    @GetMapping(value = "/base/v1/mini-program/open/t-region/getRegion")
     public R<List<List<XpRegion>>> geXpRegion() {
         return R.ok(regionService.getXpRegion());
     }
@@ -61,7 +62,7 @@
      * 查询市
      */
     @ApiOperation(value = "查询市",tags = {"小程序-查询市"},response = XpRegion.class)
-    @PostMapping(value = "/open/t-region/getProvince")
+    @PostMapping(value = "/base/v1/mini-program/open/t-region/getProvince")
     public R<List<XpRegion>> getProvince(@RequestBody getProvinceQuery query) {
         // 缓存数据
         List<Object> cacheList = redisService.getCacheList(CacheConstants.XP_REGION_CITY);
@@ -108,14 +109,4 @@
     public R<List<RegionCascaderVO>> getRegionCascader() {
         return R.ok(regionService.getRegionCascader());
     }
-
-    /**
-     * 管理后台-同步区级数据
-     */
-    @ApiOperation(value = "管理后台-同步区级数据", tags = {"管理后台-省市区管理"})
-    @PostMapping("/api/v1/region/syncDistrict")
-    public R<RegionDistrictSyncResultVO> syncDistrict() {
-        return R.ok(regionService.syncDistrictFromRegionAll());
-    }
-
 }
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java
index cd68b44..7234d03 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpRegionMapper.java
@@ -4,8 +4,6 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xiaopeng.api.model.operation.XpRegion;
 
-import java.util.List;
-
 /**
  * <p>
  * 省市区三级联动 Mapper 接口
@@ -15,23 +13,5 @@
  * @since 2026-02-03
  */
 public interface XpRegionMapper extends BaseMapper<XpRegion> {
-
-    /**
-     * 查询缺失的区级数据
-     * @return 待同步区级数据
-     */
-    List<XpRegion> selectMissingDistrictFromRegionAll();
-
-    /**
-     * 查询可参与同步的市级总数
-     * @return 市级总数
-     */
-    Long countCityForDistrictSync();
-
-    /**
-     * 查询候选区级总数(无论是否已存在)
-     * @return 候选区级总数
-     */
-    Long countCandidateDistrictForSync();
 
 }
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java
index 1e91674..6c469db 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpRegionService.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xiaopeng.api.model.operation.XpRegion;
 import com.xiaopeng.operation.vo.RegionCascaderVO;
-import com.xiaopeng.operation.vo.RegionDistrictSyncResultVO;
 
 import java.util.List;
 
@@ -29,11 +28,5 @@
      * @return 级联树
      */
     List<RegionCascaderVO> getRegionCascader();
-
-    /**
-     * 从xp_region_all同步区级数据到xp_region
-     * @return 同步结果
-     */
-    RegionDistrictSyncResultVO syncDistrictFromRegionAll();
 
 }
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
index b75f141..20796db 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRegionServiceImpl.java
@@ -178,35 +178,4 @@
             .comparing((XpRegion region) -> StringUtils.defaultString(region.getInitial()))
             .thenComparing((XpRegion region) -> StringUtils.defaultString(region.getCode()));
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public RegionDistrictSyncResultVO syncDistrictFromRegionAll() {
-        Long cityCount = this.baseMapper.countCityForDistrictSync();
-        if (cityCount == null) {
-            cityCount = 0L;
-        }
-        Long candidateDistrictCount = this.baseMapper.countCandidateDistrictForSync();
-        if (candidateDistrictCount == null) {
-            candidateDistrictCount = 0L;
-        }
-
-        List<XpRegion> missingDistrictList = this.baseMapper.selectMissingDistrictFromRegionAll();
-        long insertedCount = 0L;
-        if (missingDistrictList != null && !missingDistrictList.isEmpty()) {
-            this.saveBatch(missingDistrictList);
-            insertedCount = missingDistrictList.size();
-        }
-
-        redisService.deleteObject(CacheConstants.XP_REGION);
-        redisService.deleteObject(CacheConstants.XP_REGION_CITY);
-        redisService.deleteObject(CacheConstants.XP_REGION_CASCADER);
-
-        RegionDistrictSyncResultVO result = new RegionDistrictSyncResultVO();
-        result.setCityCount(cityCount);
-        result.setCandidateDistrictCount(candidateDistrictCount);
-        result.setInsertedCount(insertedCount);
-        result.setSkippedCount(Math.max(candidateDistrictCount - insertedCount, 0));
-        result.setMessage("区级数据同步完成");
-        return result;
-    }
 }
diff --git a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpRegionMapper.xml b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpRegionMapper.xml
index 221ba39..e510162 100644
--- a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpRegionMapper.xml
+++ b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpRegionMapper.xml
@@ -2,42 +2,4 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xiaopeng.operation.mapper.XpRegionMapper">
 
-    <select id="selectMissingDistrictFromRegionAll" resultType="com.xiaopeng.api.model.operation.XpRegion">
-        select
-            district.name as name,
-            district.code as code,
-            district.citycode as cityCode,
-            city.id as parentId,
-            district.english as english,
-            city.initial as initial
-        from xp_region city
-                 join xp_region_all all_city on all_city.code = city.code
-                 join xp_region_all district on district.parent_id = all_city.id
-                 left join xp_region existing on existing.code = district.code
-        where city.parentId != 0
-          and city.code like '%00'
-          and city.code not like '%0000'
-          and existing.id is null
-        order by city.code, district.code
-    </select>
-
-    <select id="countCityForDistrictSync" resultType="java.lang.Long">
-        select count(1)
-        from xp_region city
-                 join xp_region_all all_city on all_city.code = city.code
-        where city.parentId != 0
-          and city.code like '%00'
-          and city.code not like '%0000'
-    </select>
-
-    <select id="countCandidateDistrictForSync" resultType="java.lang.Long">
-        select count(1)
-        from xp_region city
-                 join xp_region_all all_city on all_city.code = city.code
-                 join xp_region_all district on district.parent_id = all_city.id
-        where city.parentId != 0
-          and city.code like '%00'
-          and city.code not like '%0000'
-    </select>
-
 </mapper>

--
Gitblit v1.7.1