企业负责人修改驾驶员密码

This commit is contained in:
2026-05-15 10:59:49 +08:00
parent 2c89af8019
commit ebe1ef8309
4 changed files with 108 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.hotwj.platform.driverManagement.driver.domain.bo.DriverRegisterBo; import com.hotwj.platform.driverManagement.driver.domain.bo.DriverRegisterBo;
import com.hotwj.platform.driverManagement.driver.domain.bo.HotDriverBo; import com.hotwj.platform.driverManagement.driver.domain.bo.HotDriverBo;
import com.hotwj.platform.driverManagement.driver.domain.bo.HotDriverPasswordBo;
import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverImportVo; import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverImportVo;
import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverLedgerExportVo; import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverLedgerExportVo;
import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverVo; import com.hotwj.platform.driverManagement.driver.domain.vo.HotDriverVo;
@@ -19,6 +20,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.encrypt.annotation.ApiEncrypt;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
@@ -251,6 +253,22 @@ public class HotDriverController extends BaseController {
return toAjax(hotDriverService.updateByBo(bo)); return toAjax(hotDriverService.updateByBo(bo));
} }
/**
* 企业负责人修改驾驶员登录密码
*
* @param id 驾驶员ID
* @param bo 密码信息
* @return 是否成功
*/
@ApiEncrypt
@Log(title = "驾驶员密码", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/{id}/password")
@Operation(summary = "企业负责人修改驾驶员登录密码")
public R<Void> updatePassword(@PathVariable String id, @Validated @RequestBody HotDriverPasswordBo bo) {
return toAjax(hotDriverService.updatePassword(id, bo.getNewPassword()));
}
/** /**
* 删除驾驶员基本信息 * 删除驾驶员基本信息
* *

View File

@@ -0,0 +1,26 @@
package com.hotwj.platform.driverManagement.driver.domain.bo;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 驾驶员密码修改对象
*
* @author shihongwei
* @date 2026-05-15
*/
@Data
public class HotDriverPasswordBo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 新密码
*/
@NotBlank(message = "新密码不能为空")
private String newPassword;
}

View File

@@ -110,4 +110,13 @@ public interface IHotDriverService {
* @return * @return
*/ */
boolean updateUserFaceInitialOssId(String businessUserId, Long ossId); boolean updateUserFaceInitialOssId(String businessUserId, Long ossId);
/**
* 企业负责人修改驾驶员登录密码
*
* @param driverId 驾驶员ID
* @param newPassword 新密码
* @return 是否成功
*/
Boolean updatePassword(String driverId, String newPassword);
} }

View File

@@ -54,6 +54,7 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
@@ -168,6 +169,35 @@ public class HotDriverServiceImpl implements IHotDriverService {
.eq(HotDriver::getId, businessUserId)) > 0; .eq(HotDriver::getId, businessUserId)) > 0;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updatePassword(String driverId, String newPassword) {
HotDriver driver = baseMapper.selectById(driverId);
if (driver == null || Long.valueOf(1L).equals(driver.getIsDeleted())) {
throw new ServiceException("驾驶员不存在");
}
if (driver.getCompanyId() == null) {
throw new ServiceException("驾驶员未关联企业,无法修改密码");
}
validateCompanyHeadPermission(driver.getCompanyId());
if (StringUtils.isBlank(driver.getPhone())) {
throw new ServiceException("驾驶员手机号为空,无法修改密码");
}
SysUserVo sysUser = sysUserService.selectUserByPhonenumber(driver.getPhone());
if (sysUser == null || sysUser.getUserId() == null) {
throw new ServiceException("未找到驾驶员关联账号");
}
int rows = sysUserService.resetUserPwd(sysUser.getUserId(), PasswordUtils.createPassword(newPassword), driver.getCompanyId());
if (rows <= 0) {
throw new ServiceException("修改失败,请确认驾驶员账号已开通");
}
log.info("[驾驶员修改密码] driverId={}, userId={}, operator={}, companyId={}",
driverId, sysUser.getUserId(), LoginHelper.getUserId(), driver.getCompanyId());
return true;
}
/** /**
* 分页查询驾驶员基本信息列表 * 分页查询驾驶员基本信息列表
* *
@@ -254,6 +284,31 @@ public class HotDriverServiceImpl implements IHotDriverService {
return lqw; return lqw;
} }
private void validateCompanyHeadPermission(Long targetCompanyId) {
Long loginUserId = LoginHelper.getUserId();
Long loginCompanyId = LoginHelper.getCompanyId();
if (loginUserId == null) {
throw new ServiceException("当前登录信息已失效");
}
if (loginCompanyId == null || !Objects.equals(loginCompanyId, targetCompanyId)) {
throw new ServiceException("仅可修改本企业驾驶员密码");
}
String loginPort = LoginHelper.getLoginUser() != null ? LoginHelper.getLoginUser().getLoginPort() : null;
if (!ISysUserLoginPortService.ENTERPRISE_PORT.equals(loginPort)) {
throw new ServiceException("仅企业端负责人可修改驾驶员密码");
}
Long count = managerMapper.selectCount(Wrappers.<HotCompanySafetyManager>lambdaQuery()
.eq(HotCompanySafetyManager::getUserId, loginUserId)
.eq(HotCompanySafetyManager::getCompanyId, targetCompanyId)
.eq(HotCompanySafetyManager::getCompanyHead, 1L)
.eq(HotCompanySafetyManager::getIsDeleted, 0L)
.eq(HotCompanySafetyManager::getIsResigned, 0L)
.eq(HotCompanySafetyManager::getStatus, 1L));
if (count == null || count == 0) {
throw new ServiceException("仅企业负责人可修改驾驶员密码");
}
}
/** /**
* 新增驾驶员基本信息 * 新增驾驶员基本信息
* *