From 40f296b59de6708bb2522c60aa47dfa5a209935d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=BA=86=E6=B3=B0?= <12369755+htcloud1@user.noreply.gitee.com> Date: Tue, 18 Aug 2026 21:32:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor(executor):=20=E5=AF=B9=E9=BD=90=20spon?= =?UTF-8?q?sor=20=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86=E6=A8=A1=E5=BC=8F=20?= =?UTF-8?q?+=20=E4=BF=AE=203=20=E4=B8=AA=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端: - BizAuthController.registerExecutor step 6 同步建 biz_person (主账号自己=管理员, name=unitName, role='admin', unit_type='executor'), 让"人员管理"能看见自己 (跟 registerSponsor 同模式, 走 BizPersonMapper 直插, 绕过 SUB 子账号逻辑) - BizPersonMapper.xml selectExecutorList 加 OR u.user_id=主账号 (主账号自己能查到), + countAdminByOrgId (校验公司唯一管理员) - SysUserMapper.xml 手机号正则 1[3-9] → 1[0-9] (允许 10 开头测试号段, 跟 sponsor 一致) 前端 executor/NewPerson.vue 1:1 对齐 sponsor/NewPerson.vue: - el-card form-card 包裹 + el-row :gutter=12 两列布局 - 用户名/初始密码 行 (v-if=!isEdit) - 状态改用 el-radio-group, 值 0=正常 1=禁用 - 修了状态值反向 bug: 原 executor 正常→"1" 禁用→"0" 跟 DB/UserStatus enum 相反, 编辑时反向生效 (BizPersonServiceImpl.insert 硬编码 status='0' 掩盖了 bug) - role 统一 el-select + admin 选项 :disabled=true (管理员只能注册时建) - 编辑模式 el-select :disabled=true (不能改角色) - phone 正则 /^1[0-9]\d{9}$/, userName 3-30 模式, password 6-30, department maxlength=100 - 新建成功 ElMessageBox.alert 展示子账号+密码 - 重复手机号走 warning 黄 (isDuplicateError) - confirmCancel 取消确认 - loadMyOrg 自动带出主账号公司 前端 executor/People.vue: - 状态列对齐 sponsor: row.status === '0' ? '正常' : '禁用' (修原 || '正常' fallback bug 导致显示原始 '0' + 颜色永远红的两个 bug) - 批量导入 完整实装 (原 downloadTemplate/submitImport 都是 stub, 只弹提示): - downloadTemplate GET /business/person/executorImportTemplate + blob 下载 + 解析 Content-Disposition 文件名 - submitImport POST /business/person/executorImport + FormData + 导入结果 dialog (行号/姓名/手机号/成功+错误信息) - el-upload 加 :on-change=:on-remove 自管 file, footer 改 "关闭/开始导入" 带 loading/disabled - 新增 onImport 先 clearFiles 再开 dialog --- .../controller/BizAuthController.java | 16 + .../mapper/business/BizPersonMapper.xml | 4 +- .../resources/mapper/system/SysUserMapper.xml | 3 + ry-vue3/src/views/executor/NewPerson.vue | 356 +++++++++++------- ry-vue3/src/views/executor/People.vue | 124 +++++- 5 files changed, 348 insertions(+), 155 deletions(-) diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizAuthController.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizAuthController.java index 8cc578f..634caaf 100644 --- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizAuthController.java +++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizAuthController.java @@ -228,6 +228,22 @@ public class BizAuthController extends BaseController { bizOrgService.insert(org); Long orgId = org.getOrgId(); + // 6. 同步建 biz_person (主账号自己 = 管理员, 让"人员管理"能看到自己) + // 跟 registerSponsor 同样的 5 字段: 走 BizPersonMapper 直插, 绕过 SUB 子账号逻辑 + BizPerson self = new BizPerson(); + SnowflakeId.injectIfEmpty(self, "personId"); + self.setName(unitName); + self.setPhone(phone); + self.setOrgId(orgId); + self.setDepartment("管理部"); + self.setPosition("总负责人"); + self.setRole("admin"); // 主账号 = 管理员 (与子账号的会议执行区分) + self.setUnitType("executor"); + self.setUserId(userId); + self.setCreateBy(username); + self.setUpdateBy(username); + bizPersonMapper.insert(self); + return success("注册成功, 请等待审核").put("userId", userId).put("orgId", orgId); } diff --git a/ry-api/ruoyi-business/src/main/resources/mapper/business/BizPersonMapper.xml b/ry-api/ruoyi-business/src/main/resources/mapper/business/BizPersonMapper.xml index e612c4e..97ae706 100644 --- a/ry-api/ruoyi-business/src/main/resources/mapper/business/BizPersonMapper.xml +++ b/ry-api/ruoyi-business/src/main/resources/mapper/business/BizPersonMapper.xml @@ -166,12 +166,14 @@ +