From 80f6c17c34dae2c5f9f861e274f4e8d5e2394d5c Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 25 二月 2026 18:00:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java | 154 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 149 insertions(+), 5 deletions(-)
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
index 1bf9550..bc46af0 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -1,26 +1,33 @@
package com.xiaopeng.account.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xiaopeng.account.constant.I18nKeyConstant;
+import com.xiaopeng.account.mapper.SysRoleMapper;
import com.xiaopeng.account.mapper.XpOperationsRoleMapper;
import com.xiaopeng.account.mapper.XpOperationsUserMapper;
+import com.xiaopeng.account.model.dto.EnableDisableDTO;
+import com.xiaopeng.account.model.dto.RePasswordDTO;
+import com.xiaopeng.account.model.dto.XpOperationsUserAddDTO;
import com.xiaopeng.account.model.dto.XpOperationsUserDTO;
import com.xiaopeng.account.model.query.XpOperationsUserPageQuery;
+import com.xiaopeng.account.model.query.XpOperationsUserQuery;
+import com.xiaopeng.account.service.IXpOperationsRoleService;
import com.xiaopeng.account.service.IXpOperationsUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.account.service.IXpQualificationAuditService;
import com.xiaopeng.api.feignClient.maintenance.XpClockInClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
-import com.xiaopeng.api.model.account.XpOperationsUser;
-import com.xiaopeng.api.model.account.XpQualificationAudit;
+import com.xiaopeng.api.model.account.*;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
-import com.xiaopeng.api.vo.account.FleetInfoVO;
-import com.xiaopeng.api.vo.account.XpOperationsUserProfileVO;
-import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
+import com.xiaopeng.api.vo.account.*;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.security.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -52,12 +59,16 @@
@Autowired
private XpOperationsRoleMapper xpOperationsRoleMapper;
+ @Autowired
+ private IXpOperationsRoleService xpOperationsRoleService;
@Autowired
private XpClockInClient xpClockInClient;
@Autowired
private IXpQualificationAuditService xpQualificationAuditService;
+ @Autowired
+ private SysRoleMapper sysRoleMapper;
@Override
public List<XpOperationsUser> listByName(String nickName) {
@@ -168,4 +179,137 @@
xpQualificationAudit.setAuditStatus(1);
xpQualificationAuditService.save(xpQualificationAudit);
}
+
+ @Override
+ public PageInfo<XpOperationsUserVO> pageList(XpOperationsUserQuery query) {
+ PageInfo<XpOperationsUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+ List<XpOperationsUserVO> list = this.baseMapper.pageList(pageInfo, query);
+
+ if(CollectionUtils.isEmpty(list)){
+ return pageInfo;
+ }
+
+ // 查询角色名称
+ List<Long> operationsUserIds = list.stream().map(XpOperationsUserVO::getId).collect(Collectors.toList());
+
+ // 查询用户信息
+ List<XpOperationsRole> xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class)
+ .in(XpOperationsRole::getOperationsUserId, operationsUserIds));
+
+ if(!CollectionUtils.isEmpty(xpOperationsRoles)){
+ List<Long> roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList());
+ // 查询列表关联的所有角色
+ List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class)
+ .in(SysRole::getId, roleIds));
+ if(!CollectionUtils.isEmpty(sysRoles)){
+
+ // 角色匹配账号id
+ Map<Long, List<SysRole>> map = new HashMap<>();
+ for (XpOperationsRole xpOperationsRole : xpOperationsRoles) {
+ List<SysRole> sysRoleList = sysRoles.stream().filter(sysRole -> sysRole.getId().equals(xpOperationsRole.getRoleId())).collect(Collectors.toList());
+ map.put(xpOperationsRole.getOperationsUserId(), sysRoleList);
+ }
+ // 角色名称匹配
+ for (XpOperationsUserVO xpOperationsUserVO : list) {
+ xpOperationsUserVO.setSysRoles(map.get(xpOperationsUserVO.getId()));
+ }
+ }
+ }
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
+
+ @Override
+ public R<String> addOperationsUser(XpOperationsUserAddDTO dto) {
+ long userCount = this.count(Wrappers.lambdaQuery(XpOperationsUser.class)
+ .eq(XpOperationsUser::getPhoneNumber, dto.getPhoneNumber()));
+ if (StringUtils.isNotBlank(dto.getPhoneNumber()) && userCount>0) {
+ throw new ServiceException("登录账号重复", I18nKeyConstant.ACCOUNT_DUPLICATE);
+ }
+ //校验编号是否唯一
+ long numberCount = this.count(Wrappers.lambdaQuery(XpOperationsUser.class)
+ .eq(XpOperationsUser::getUniqueNumber, dto.getUniqueNumber()));
+ if (numberCount > 0) {
+ throw new ServiceException("用户编号已存在", I18nKeyConstant.ACCOUNT_UNIQUE_NUMBER_DUPLICATE);
+ }
+ // 密码加密
+ dto.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
+ // 保存
+ this.save(dto);
+ // 存储角色
+ List<Long> roleIds = dto.getRoleIds();
+ if(!CollectionUtils.isEmpty(roleIds)){
+ List<XpOperationsRole> xpOperationsRoles = roleIds.stream().map(roleId -> {
+ XpOperationsRole xpOperationsRole = new XpOperationsRole();
+ xpOperationsRole.setOperationsUserId(dto.getId());
+ xpOperationsRole.setRoleId(roleId);
+ return xpOperationsRole;
+ }).collect(Collectors.toList());
+ xpOperationsRoleService.saveBatch(xpOperationsRoles);
+ }
+ return R.ok();
+ }
+
+ @Override
+ public R<String> editOperationsUser(XpOperationsUserAddDTO dto) {
+ XpOperationsUser operationsUser = this.getOne(Wrappers.lambdaQuery(XpOperationsUser.class)
+ .eq(XpOperationsUser::getPhoneNumber, dto.getPhoneNumber())
+ .last("LIMIT 1"));
+
+ if (StringUtils.isNotBlank(dto.getPhoneNumber()) && (Objects.nonNull(operationsUser) && !dto.getId().equals(operationsUser.getId()) )) {
+ throw new ServiceException("手机号已开通账号", I18nKeyConstant.ACCOUNT_PHONE_DUPLICATE);
+ }
+ if (dto.getPassword() != null && !dto.getPassword().isEmpty()) {
+ dto.setPassword(null);
+ }
+ this.updateById(dto);
+
+ //删除旧的角色数据,添加新的角色
+ xpOperationsRoleService.remove(new LambdaQueryWrapper<XpOperationsRole>().eq(XpOperationsRole::getOperationsUserId, dto.getId()));
+ // 存储角色
+ List<Long> roleIds = dto.getRoleIds();
+ if(!CollectionUtils.isEmpty(roleIds)){
+ List<XpOperationsRole> xpOperationsRoles = roleIds.stream().map(roleId -> {
+ XpOperationsRole xpOperationsRole = new XpOperationsRole();
+ xpOperationsRole.setOperationsUserId(dto.getId());
+ xpOperationsRole.setRoleId(roleId);
+ return xpOperationsRole;
+ }).collect(Collectors.toList());
+ xpOperationsRoleService.saveBatch(xpOperationsRoles);
+ }
+ return R.ok();
+ }
+
+ @Override
+ public void enableDisableById(EnableDisableDTO dto) {
+ XpOperationsUser operationsUser = this.getById(dto.getId());
+ operationsUser.setStatus(dto.getStatus());
+ this.updateById(operationsUser);
+ }
+
+ @Override
+ public void rePassword(RePasswordDTO dto) {
+ XpOperationsUser operationsUser = this.getById(dto.getId());
+ // 密码加密
+ operationsUser.setPassword(SecurityUtils.encryptPassword(dto.getNewPassword()));
+ this.updateById(operationsUser);
+ }
+
+ @Override
+ public XpOperationsUserVO detailById(Long id) {
+ // 查询用户信息
+ XpOperationsUser xpOperationsUser = this.getById(id);
+ XpOperationsUserVO xpOperationsUserVO = new XpOperationsUserVO();
+ BeanUtils.copyProperties(xpOperationsUser, xpOperationsUserVO);
+ // 查询角色
+ List<XpOperationsRole> xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class)
+ .eq(XpOperationsRole::getOperationsUserId, id));
+ if(!CollectionUtils.isEmpty(xpOperationsRoles)){
+ List<Long> roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList());
+ List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class)
+ .in(SysRole::getId, roleIds));
+ xpOperationsUserVO.setSysRoles(sysRoles);
+ }
+ return xpOperationsUserVO;
+ }
}
--
Gitblit v1.7.1