Browse Source

重置密码

dev-V1.10.2-temp
zhuibobo 4 months ago
parent
commit
a743b95a50
  1. 10
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/IEfcodeVirtualUnitService.java
  2. 31
      zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java
  3. 16
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/EfcodeVirtualUnitController.java
  4. 15
      zdxt-web-client/zdxt-admin-plus-ui/src/api/efcode/virtualUnit/index.ts
  5. 6
      zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitUserManager.vue

10
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/IEfcodeVirtualUnitService.java

@ -162,6 +162,16 @@ public interface IEfcodeVirtualUnitService {
*/ */
void updateUser(UnitUserBo bo); void updateUser(UnitUserBo bo);
/**
* 重置执法人员密码
* <p>
* 使用与登录校验一致的 MD5(loginName + password + salt) 方式加密
*
* @param userId 用户ID
* @param password 新密码明文
*/
void resetUserPwd(Long userId, String password);
/** /**
* 根据 sys_dept_id 查找对应的虚拟单位 vir_id * 根据 sys_dept_id 查找对应的虚拟单位 vir_id
* *

31
zdxt-modules/zdxt-enforcement-code-common/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeVirtualUnitServiceImpl.java

@ -435,6 +435,37 @@ public class EfcodeVirtualUnitServiceImpl implements IEfcodeVirtualUnitService {
sysUserMapper.update(null, uw); sysUserMapper.update(null, uw);
} }
/**
* 重置执法人员密码
* <p>
* 使用与登录校验一致的 MD5(loginName + password + salt) 方式加密,
* 确保重置后用户可正常登录(登录校验见 PasswordService.matches)。
*/
@Override
public void resetUserPwd(Long userId, String password) {
if (userId == null) {
throw new ServiceException("用户ID不能为空");
}
if (StringUtils.isBlank(password)) {
throw new ServiceException("新密码不能为空");
}
SysUser user = sysUserMapper.selectById(userId);
if (user == null) {
throw new ServiceException("用户不存在");
}
// salt 为空时生成新的 salt,保证与登录校验方式一致
String salt = user.getSalt();
LambdaUpdateWrapper<SysUser> uw = Wrappers.<SysUser>lambdaUpdate()
.eq(SysUser::getUserId, userId);
if (StringUtils.isBlank(salt)) {
salt = cn.hutool.core.util.RandomUtil.randomString("0123456789abcdef", 6);
uw.set(SysUser::getSalt, salt);
}
uw.set(SysUser::getPassword, DigestUtil.md5Hex(user.getLoginName() + password + salt));
sysUserMapper.update(null, uw);
}
/** /**
* 根据 sys_dept_id 查找对应的虚拟单位 vir_id * 根据 sys_dept_id 查找对应的虚拟单位 vir_id
*/ */

16
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/EfcodeVirtualUnitController.java

@ -22,11 +22,13 @@ import com.zdxt.enforcementcode.domain.vo.UnitUserVo;
import com.zdxt.enforcementcode.domain.vo.VirtualUnitDeptTreeVo; import com.zdxt.enforcementcode.domain.vo.VirtualUnitDeptTreeVo;
import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitBo; import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitBo;
import com.zdxt.enforcementcode.domain.bo.UnitUserBo; import com.zdxt.enforcementcode.domain.bo.UnitUserBo;
import com.zdxt.enforcementcode.domain.bo.UnitUserResetPwdBo;
import com.zdxt.enforcementcode.domain.bo.RefUserBo; import com.zdxt.enforcementcode.domain.bo.RefUserBo;
import com.zdxt.enforcementcode.domain.bo.RefUserRemarkBo; import com.zdxt.enforcementcode.domain.bo.RefUserRemarkBo;
import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitService; import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitService;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.encrypt.annotation.ApiEncrypt;
/** /**
* 虚拟单位树 * 虚拟单位树
@ -226,6 +228,20 @@ public class EfcodeVirtualUnitController extends BaseController {
return R.ok(); return R.ok();
} }
/**
* 重置执法人员密码
* <p>
* 请求体加密传输(与登录一致),密码存储使用 MD5(loginName + password + salt)。
*/
@ApiEncrypt
@Log(title = "执法人员", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/user/resetPwd")
public R<Void> resetUserPwd(@Validated @RequestBody UnitUserResetPwdBo bo) {
efcodeVirtualUnitService.resetUserPwd(bo.getUserId(), bo.getPassword());
return R.ok();
}
/** /**
* 删除执法人员 * 删除执法人员
*/ */

15
zdxt-web-client/zdxt-admin-plus-ui/src/api/efcode/virtualUnit/index.ts

@ -128,6 +128,21 @@ export const deleteUnitUser = (userIds: (number | string)[]) => {
}); });
}; };
/**
* 重置执法人员密码(加密传输,与登录一致)
*/
export const resetUnitUserPwd = (userId: number | string, password: string) => {
return request({
url: '/enforcementcode/virtualUnit/user/resetPwd',
method: 'put',
headers: {
isEncrypt: true,
repeatSubmit: false
},
data: { userId, password }
});
};
/** /**
* 查询虚拟单位引用的人员列表(分页) * 查询虚拟单位引用的人员列表(分页)
*/ */

6
zdxt-web-client/zdxt-admin-plus-ui/src/views/efcode/virtualUnit/unitUserManager.vue

@ -2,8 +2,8 @@
import { ref, computed, onMounted, watch, reactive, nextTick } from 'vue'; import { ref, computed, onMounted, watch, reactive, nextTick } from 'vue';
import { Search, Edit } from '@element-plus/icons-vue'; import { Search, Edit } from '@element-plus/icons-vue';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import { getBusinessTreeList, getUnitUsers, addUnitUser, updateUnitUser, deleteUnitUser, getReferencedUsers, addReferencedUsers, deleteReferencedUsers, updateReferencedUserRemark } from '@/api/efcode/virtualUnit'; import { getBusinessTreeList, getUnitUsers, addUnitUser, updateUnitUser, deleteUnitUser, resetUnitUserPwd, getReferencedUsers, addReferencedUsers, deleteReferencedUsers, updateReferencedUserRemark } from '@/api/efcode/virtualUnit';
import { getAuthRole, updateAuthRole, resetUserPwd } from '@/api/system/user'; import { getAuthRole, updateAuthRole } from '@/api/system/user';
import type { VirtualUnitVo, UnitUserVo } from '@/api/efcode/virtualUnit/types'; import type { VirtualUnitVo, UnitUserVo } from '@/api/efcode/virtualUnit/types';
import type { RoleVO } from '@/api/system/role/types'; import type { RoleVO } from '@/api/system/role/types';
@ -631,7 +631,7 @@ const handleResetPwd = (row: UnitUserVo) => {
const submitResetPwd = async () => { const submitResetPwd = async () => {
const valid = await resetPwdFormRef.value?.validate().catch(() => false); const valid = await resetPwdFormRef.value?.validate().catch(() => false);
if (!valid) return; if (!valid) return;
await resetUserPwd(currentResetUser.value.userId, resetPwdForm.newPassword); await resetUnitUserPwd(currentResetUser.value.userId, resetPwdForm.newPassword);
ElMessage.success('密码重置成功'); ElMessage.success('密码重置成功');
resetPwdDialogVisible.value = false; resetPwdDialogVisible.value = false;
}; };

Loading…
Cancel
Save