webfuture 16.* 用户导入到指定用户分组的一些问题处理
webfuture 16.* 系统在后台导入用户数据的时候,下载的导入表单是没有对应的用户组字段的,导入用户是不属于任何组,要将指定用户归纳到对应用户组还需要做出相应的处理。
1,在网站后台手动操作,选择对应的用户数据批量设置到指定用户组(适用少量用户数据)
2,去到数据库里面处理(用户数据量大,在后台操作费时费力)
下面我们介绍一下数据库里面的处理过程
主要涉及以下3个表数据的更新与变动,操作之前务必备份好当前数据库
PE_Common_User:用户主表,Id是用户 IDPE_Common_UserGroup:用户组表,存储当前系统所有组
PE_Common_UserUserGroup:用户 - 用户组中间表,存储用户和所属用户组的关联关系
1,用户-用户组表数据库更新操作
首先在PE_Common_UserGroup查看对应的用户,如图:
#比如,我需要将导入的用户归纳到UserGroupId为2的用户组,那么我们执行下面SQL语句:
INSERT INTO PE_Common_UserUserGroup (UserId, UserGroupId) SELECT u.Id, 2 FROM PE_Common_User u WHERE NOT EXISTS ( SELECT 1 FROM PE_Common_UserUserGroup uug WHERE uug.UserId = u.Id );
#经过上面的SQL语句,给还没有任何用户组关联记录的所有用户,批量加入 ID=2 的用户组。用户与组之间确立了关联关系,对应的用户归纳到了员工用户组
#但是此步骤操作,直接在数据库里面修改触发了密码的保全机制,被更改的用户在网站前台无法登录。
2,密码批量重置处理
在系统后台,随便选 1 个用户(例如
Id=100),重置密码(设置成你统一要用的密码,比如Abc@123456),保存。执行查询,复制这两个字段的值:
SELECT Id,PasswordHash,PasswordHashSM3 FROM PE_Common_User WHERE Id=100; --换成你刚才重置密码的用户ID
拿到结果:
PasswordHash='xxxx',PasswordHashSM3='yyyy',保存好字符串,注意不要丢单引号
步骤 2:批量更新一批用户密码哈希
把上面拿到的值替换下面'xxxx'和'yyyy';Id范围按需修改。
UPDATE PE_Common_User SET PasswordHash = 'xxxx', PasswordHashSM3 = 'yyyy' WHERE Id < 790 AND Id > 0; --这里修改用户Id的上下限,根据实际的范围调整
✅ 建议先 SELECT 验证要更新的用户数量,防止误改:
SELECT COUNT(*),Id FROM PE_Common_User WHERE Id < 790 AND Id > 0;
步骤 3:后台操作
执行完上面 UPDATE 语句之后,在系统后台运维中心,用户管理点击【更新所有用户 hash 值】(系统内置功能,用于同步 / 刷新另一套密码校验逻辑)
至此,完成。用户数据批量设置到员工用户组,并重置了密码为Abc@123456
