邀请发送 (菜单暂隐藏, 待确认参数见 发送邀请-待确认参数.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) 入库
5.7 KiB
5.7 KiB
发送邀请 — 待确认参数清单
开发已按「默认口径」推进,下面这些值未最终确认,代码里全部做成配置项/占位符,等确认后回填即可,不需要改代码结构。
一、短信(新增独立模板,不复用 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-mail,JavaMailSender 未配置时降级返回 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.cn,test=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) |
上线前待办(对应上面的待确认项)
- 阿里云新建「邀请」短信模板 → 回填
ruoyi.sms.inviteTemplate。 - 确认 SMTP host/port/账号密码 → 回填
spring.mail.*。 - 确认生产邀请链接域名
ruoyi.invite.baseUrl。 - 建 2 张表
biz_invite/biz_invite_recipient(手工库,无 .sql,字段见第四节)。 biz_expert.email是否补列(邮件渠道前置依赖,否则邮件渠道需手工填邮箱)。mvn install(新增 spring-boot-starter-mail 依赖后)。