$message_type, 'from_user_id' => $from_user_id, 'to_user_id' => $to_user_id, 'title' => $title, 'content' => $content, 'extra_json' => $extra_json, 'is_read' => CommonService::STATUS_OFF, ]; $res = self::create($data); if (!$res) { Log::info(__METHOD__ . '-写入数据失败失败:' . json_encode($data, JSON_UNESCAPED_UNICODE)); exception('写入数据失败失败'); } return $res; } /** * 发送订阅消息时同步写入站内消息 * 数据来源:MSG_MAP 中模板的 name / message_type / valueNames / remark / page * @param int $to_user_id 收件用户 * @param string $template_id 订阅消息模板ID * @param array $msgData sendMsg 的原始参数 ['values'=>[], 'param'=>[], 'page'=>''] * @param string $page 打包后的跳转页面(含query),如 pages/demand/list/index?opType=my&demandId=1 * @return mixed */ public static function createBySubscribe($to_user_id, $template_id, array $msgData = [], $page = '') { $template = SubscribeMessageService::MSG_MAP[$template_id] ?? []; if (!$template) { //未定义的模板不写站内消息 return false; } //按模板字段名组装可读内容:工单号:xxx;服务项目:xxx;...;备注:xxx $values = $msgData['values'] ?? []; $valueNames = $template['valueNames'] ?? []; $lines = []; foreach ($valueNames as $key => $name) { if (isset($values[$key]) && $values[$key] !== '') { $lines[] = $name . ':' . $values[$key]; } } if (!empty($template['remark'])) { $lines[] = '备注:' . $template['remark']; } $content = implode("\n", $lines); return self::createData( $to_user_id, $template['name'] ?? '系统通知', $content, [ 'page' => $page ?: ($template['page'] ?? ''), 'template_id' => $template_id, ], 0, //系统发出 $template['message_type'] ?? self::TYPE_SYSTEM ); } }