### 最低基线版本：10.0.2405.01

### 使用说明

引用时需要保证基线版本高于上文中最低基线版本，针对任务提醒设置中包含的提醒类型，可以对消息接收人及消息内容进行操作，实现自定义修改消息内容、过滤消息接收人或截取数据实现自定义业务需求，最后将处理后的消息内容及消息接收人返回

### 钩子名称：

task\_remind\_send\_message

### 参数：

List\<Map\<String,Object\>\>  args

#### 参数说明：

二开口子默认参数以List传递，该口子只需取第一个元素即可

#### 参数明细：

| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| msgContent | String | 消息内容 |
| receiverList | List\<SimpleEmployee\> | 消息接收人 |
| remindType | String | 消息类型 |
| task | String | 任务信息，以json字符串传入，若有引用weaver-project-bean.jar建议转为SimpleTask对象 |

#### 类型对照表(remindType)：

| remindType | 名称 |
| --- | --- |
| taskCreated | 任务新建提醒 |
| taskReceived | 任务负责人接收提醒 |
| taskRefused | 任务责任人拒绝接收提醒 |
| taskFeedback | 任务评论提醒 |
| taskUrge | 任务催办提醒 |
| taskStart | 任务起始提醒 |
| taskEnd | 任务到期提醒 |
| taskFinished | 任务完成提醒 |
| taskUpdate | 任务变更提醒 |
| taskDelete | 任务删除提醒 |

### 返回值：

Map\<String,Object\>

#### 返回值说明：

- 将处理后的消息内容和消息接收人返回，未操作则原样返回
- 返回null，则消息提醒以原来的数据进行发送(等同于未做二开处理)
- 返回map，则已实际返回值为准(key不存在等同于置为null)

#### 返回值明细：

| 字段名 | 类型 | 说明 |
| --- | --- | --- |
| msgContent | String | 调整后的消息内容 |
| receiverList | List\<SimpleEmployee\> | 调整后的消息接收人 |

### 示例：

```java
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.weaver.loom.api.annotation.RegHook;
import com.weaver.loom.context.register.AbstractRegHookEvent;
// import com.weaver.task.entity.SimpleTask;
import com.weaver.teams.domain.user.SimpleEmployee;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j
@RegHook(module = "task", event = "task_remind_send_message")
public class TaskRemindMessageEventTrigger extends AbstractRegHookEvent {

    @Override
    public Map<String,Object> handle(Object[] args){
        log.error("args:{}", JSONObject.toJSONString(args), null);
        Map<String,Object> params = (Map<String, Object>) args[0];

        // 消息内容
        String msgContent = MapUtils.getString(params,"msgContent");
        // 提醒类型
        String remindType = MapUtils.getString(params,"remindType");
        // 消息接收人
        List<SimpleEmployee> receiverList= (List<SimpleEmployee>) params.get("receiverList");
        // 任务详情
        String taskStr = MapUtils.getString(params, "task");
        Map<String, Object> task = JSONObject.parseObject(taskStr, new TypeReference<Map<String, Object>>() {});
        // 若有引用weaver-project-bean.jar建议转为SimpleTask对象
        // SimpleTask task2 = JSONObject.parseObject(taskStr, new TypeReference<SimpleTask>() {});

        // 业务逻辑
        msgContent = msgContent + "收到请回复！！！";
        List<SimpleEmployee> finalReceivers = receiverList.stream().limit(1).collect(Collectors.toList());

        // 返回处理后的数据
        Map<String, Object> result = new HashMap<>();
        result.put("msgContent", msgContent);
        result.put("receiverList", finalReceivers );
        return result;
    }
}
```
