import WechatSDK from 'oak-external-sdk/lib/WechatSDK'; import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid'; import fs from 'fs'; import { assert } from 'oak-domain/lib/utils/assert'; import { cloneDeep } from 'oak-domain/lib/utils/lodash'; import { applicationProjection } from '../types/Projection'; // 请求链接获取标题,发布时间,图片等信息 export async function getInfoByUrl(params) { const { url } = params; return await WechatSDK.analyzePublicArticle(url); } export async function uploadExtraFile(params, // FormData表单提交 context) { const { applicationId, file, extraFileId, } = params; assert(applicationId); const filename = file.originalFilename; const filetype = file.mimetype; const fileLength = file.size; const fileStream = fs.createReadStream(file.filepath); const [application] = await context.select('application', { data: cloneDeep(applicationProjection), filter: { id: applicationId, }, }, { dontCollect: true, }); const { type, config } = application; // 保存文件 if (extraFileId) { const closeRootMode = context.openRootMode(); try { await context.operate('extraFile', { id: await generateNewIdAsync(), action: 'update', data: {}, filter: { id: extraFileId, }, }, {}); closeRootMode(); } catch (err) { closeRootMode(); throw err; } } return { success: true, }; }