# 通知公告功能需求文档

[原型地址](https://pro.modao.cc/app/pKC7StsBjjWljraSVl4sKyiI4YoI8NM)

通知公告用于物业公司向住户发布诸如注意事项，温馨提示，小区公共事务等内容。传统的方式是将通知公告张贴在小区出入口，电梯轿厢等处，其目的在于尽可能让更多住户知晓通知内容，对突发事项及时做好准备。绘管家的在线通知公告要让更多的住户知晓的方法是使用消息推送，如微信模板消息，App推送通知等。

## 名词定义

| 名词   | 说明                               |
| ---- | -------------------------------- |
| 通知小区 | 约定哪些小区的住户可以阅读此通知                 |
| 立即发布 | 通知内容保存后立即对住户可见                   |
| 草稿   | 未完成或未定稿的通知                       |
| 定时发布 | 在指定时间发布通知公告（如节假日前编辑好内容，在节假日当天发布） |
| 撤回   | 由于通知内容不当需要修改或不再对住户开放时，将该通知对住户屏蔽。 |

## 表单内容

![添加通知](image/add_notice.png)

| 字段名称 | 字段类型   | 字段说明                                                     | 是否必填 |
| ---- | ------ | -------------------------------------------------------- | ---- |
| 发布小区 | Array  | 通知公告发布的小区，一条通知公告可能发布到多个小区，支持多选                           | 是    |
| 标题   | String | 通知公告标题                                                   | 是    |
| 主题词  | String | 通知公告的主题词，3-5个短词语，字数不要超过20个汉字。                            | 是    |
| 发布方式 | Enum   | 从立即发布，草稿和定时发布三个选项中选择，其中选择定时发布时需要选择发布的具体时间，发布的时间必须晚于当前时间。 | 是    |
| 通知正文 | Text   | 通知公告的正文内容，富文本格式。                                         | 是    |
| 发布人  | String | 如果是立即发布或定时发布则是当前登录用户的ID，如果是草稿，暂不存储。注意，创建人和发布人可能不同。       | 否    |

## 业务说明

* 通知公告正文支持插入图片，富文本的图片需要处理，如果是其他网站的网络图片则保留绝对链接,如使用图片链接插入了http://www.baidu.com/a.jpg，该图片不需要做额外处理。如果是上传的图片则需要转换为文件相对应用的路径。示例存储如下：

```
<!-- 外网图片 -->
<p><img src="http://www.baidu.com/a.jpg"/></p>
<!-- 上传的图片 -->
<p><img src="/attachment/images/a.jpg"/></p>
```

* 定时发布：选择为定时发布时，需要设置一个单次执行的定时任务，在指定的时间将该通知公告发布出去。由于定时发布的通知公告可能更改（如更改发布时间，更改为立即发布），因此定时任务需要检查该通知状态是否变更（被删除，改成已发布或草稿）、或者是否更改过发布时间。若变更后不再符合发布条件，则该任务不能将该条通知公告发布。

* 撤回：已发布的通知公告内容可能有误，发现错误时需要执行撤回操作。撤回要求只能撤回__3天__内发布的通知公告，撤回后未保留原先通知功能的阅读情况，撤回的通知公告标记为`废弃`。考虑撤回的通知公告可能需要再次编辑，此时操作人员可以选择复制功能将废弃的通知公告内容复制一条用于新增通知公告。

* 发布小区：支持一条通知发布到多个小区。

* 阅读数统计 ：按照一个用户读取一次的方式统计阅读数，需要分小区统计每个小区的阅读数。前端用户浏览通知详情时，接口需要告知该用户是否已读，如果为未读，则前端提交更新阅读次数接口给后台。

* 创建人与发布人：创建人仅仅是指创建该条通知的人员，该人员不一定是发布人。发布人是执行发布操作的人（定时发布时先指定为当时的操作人员，如果发布取消后再次发布需要更新发布人）。

* 消息推送：通知发布成功后需要调用__消息中心__的接口向C端住户推送本条通知，以提高通知公告的阅读率和平台用户的嗯活跃度。












