企业负责人修改驾驶员密码
This commit is contained in:
@@ -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()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除驾驶员基本信息
|
* 删除驾驶员基本信息
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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("仅企业负责人可修改驾驶员密码");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增驾驶员基本信息
|
* 新增驾驶员基本信息
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user