Files
guoju0808/发送邀请-待确认参数.md
T
郭庆泰 5a0a892574 feat: 邀请函邮件发送 + 首次设密/密码为空 + 姓名单一可信源
邀请发送 (菜单暂隐藏, 待确认参数见 发送邀请-待确认参数.md):
- 后端: BizInvite / BizInviteRecipient + Controller/Service/Mapper/XML
- 邮件: InviteMailSender (spring-boot-starter-mail SMTP) + application*.yml 邮件配置
- 上传进度: UploadProgressRegistry + UploadProgressController
- 前端: InviteList / InviteNew / InviteDetail / InviteView + api/business/invite.js
- 原型: proto/html/components/invite-detail / new-invitation / send-invitation

登录/账号:
- 首次设密: /getInfo 返回 isPasswordEmpty, SysProfileController 密码为空时跳过旧密码校验, ForcePasswordDialog 强制弹窗
- 姓名单一可信源 resolveDisplayName: doctor→biz_expert.name, sponsor/executor→biz_person.name, 其余回退 nick_name
- OA compliance 门禁改为按手机号查 ecology 视图 (不再限定 manager/leader)

其它:
- OSS zip 在线查看 (列清单+取单文件, 公开只读) + SecurityConfig permitAll
- doctor 项目详情 ProjectDetail.vue
- 数据库/测试/设计文档 (md) 入库
2026-09-10 20:40:49 +08:00

5.7 KiB
Raw Blame History

发送邀请 — 待确认参数清单

开发已按「默认口径」推进,下面这些值未最终确认,代码里全部做成配置项/占位符,等确认后回填即可,不需要改代码结构

一、短信(新增独立模板,不复用 SMS_512040098

当前值/占位 状态
短信模板 code 待确认(阿里云控制台新建「邀请」模板后填入) 未确认
模板占位符 建议 1 个:${link}(邀请链接) 未确认
短信正文参考 北京整合医学学会诚挚邀请您参加,请点击链接确认:${link} 待定稿
签名 北京整合医学学会(复用 ruoyi.sms.signName 已确认
accessKeyId/Secret 复用 ruoyi.sms.accessKeyId / accessKeySecret 已确认

落地:application.yml 新增 ruoyi.sms.inviteTemplate: 待填

二、邮件(参考 xxl-job EmailJobAlarm,走 spring-boot-starter-mail

当前值/占位 状态
发件账号 (from) contactus@bahim.org.cn(原型稿) 待确认 SMTP 账号
SMTP host 待确认 未确认
SMTP port 待确认465 SSL / 587 STARTTLS 未确认
SMTP 用户名/密码 待确认 未确认
邮件主题 诚邀您参加"{会议名称}"项目 待定稿
邮件正文 富文本邀请内容 + 邀请链接(点开即邀请函页) 待定稿

落地:application.yml 新增 spring.mail.*pom.xml 新增 spring-boot-starter-mail需重新 mvn install)。

三、邀请链接 baseUrl

生产 测试
域名 待确认(参考 esignBaseUrl prod=https://hegui.bahim.org.cn https://risingdoctor.com/hg

落地:application.yml 新增 ruoyi.invite.baseUrl,公开链接 = {baseUrl}/#/invite/{token}

四、数据库(2 张新表 + biz_expert 补列)

库结构手工维护,未生成 .sql。建表前需按下方清单核对,确认字段名/类型后执行

biz_invite(批次/邀请函主表)

id, project_no, meeting_name, period_no, meeting_time(datetime), send_time(datetime), content(longtext), redhead_file_url(varchar), send_channel(varchar), create_by, create_time

biz_invite_recipient(收件人明细)

id, invite_id, name, phone, email, source(char1), remark(char1), send_status(char1), fail_reason, confirm_status(char1), confirmed_at(datetime), token(varchar36), create_time

biz_expert 补列

email varchar待确认是否新增(邮件渠道前置依赖)。

五、业务口径(已按默认实现,可回改)

决策 默认口径
确认是否可逆 不可逆(已确认→不可取消)
备注语义 1=发 / 空=不发(原型「备注空默认已确认」判为 demo 示意)
未发专家 详情仍列出,发送状态标「未发送」
确认与参会人表 v1 不联动 biz_meeting_attendee

六、代码落地对照(已开发,待你确认参数后回填)

后端(新增/改动文件)

文件 说明
domain/BizInvite.java 主表对象(含聚合列 recipientCount/confirmedCount、暂存 recipients
domain/BizInviteRecipient.java 收件人明细对象
mapper/BizInviteMapper.java + .xml 主表 CRUD + 列表聚合 + 回填 send_time
mapper/BizInviteRecipientMapper.java + .xml 明细 CRUD + insertBatch + updateConfirmByToken + updateSendStatus
service/IBizInviteService.java + impl/BizInviteServiceImpl.java create(含 token 生成)/send/confirm/delete
controller/BizInviteController.java manager 端点 /business/invite/*
controller/BizPublicController.java 公开端点 /business/public/invite/{token} + /{token}/confirm(已加 inviteService
mail/InviteMailSender.java 邮件发送(spring-boot-starter-mailJavaMailSender 未配置时降级返回 false
sms/AliyunSmsSender.java 已加 sendInvite(phone, link) + inviteLink(token) + inviteTemplate 字段
ruoyi-business/pom.xml 已加 spring-boot-starter-mail需重新 mvn install

配置落点

配置项 文件 当前值
ruoyi.sms.inviteTemplate application.yml 待填(阿里云新建模板后回填)
ruoyi.invite.baseUrl application.yml / -prod / -test prod=https://hegui.bahim.org.cntest=https://risingdoctor.com/hg
spring.mail.* application.yml host=待确认、port=465、username=contactus@bahim.org.cn、password=待确认

前端(新增/改动文件)

文件 说明
api/business/invite.js manager + 公开 API
views/manager/InviteList.vue 列表页(新建/详情/发送/删除)
views/manager/InviteNew.vue 新建页(手输字段 + RichEditor + 专家库选择 + 批量导入)
views/manager/InviteDetail.vue 详情页(含收件人发送/确认状态)
views/portal/InviteView.vue 公开邀请页(富文本 + 底部确认按钮)
router/index.js invite/:token(公开)+ invites*manager
layout/AdminLayout.vue manager 菜单加「发送邀请」(icon Promotion

上线前待办(对应上面的待确认项)

  1. 阿里云新建「邀请」短信模板 → 回填 ruoyi.sms.inviteTemplate
  2. 确认 SMTP host/port/账号密码 → 回填 spring.mail.*
  3. 确认生产邀请链接域名 ruoyi.invite.baseUrl
  4. 建 2 张表 biz_invite / biz_invite_recipient(手工库,无 .sql,字段见第四节)。
  5. biz_expert.email 是否补列(邮件渠道前置依赖,否则邮件渠道需手工填邮箱)。
  6. mvn install(新增 spring-boot-starter-mail 依赖后)。