import { mergeOperationResult } from 'oak-domain/lib/utils/operationResult'; import { shipProjection, refreshShipState } from '../utils/ship'; const QUERY_PAYING_STATE_GAP = process.env.NODE_ENV === 'production' ? 3600 * 1000 : 60 * 1000; const watchers = [ { name: '对shipping状态的物流,同步其真实状态', entity: 'ship', filter: async () => { const now = Date.now(); return { type: 'express', iState: 'shipping', $$updateAt$$: { $lte: now - QUERY_PAYING_STATE_GAP, }, }; }, projection: shipProjection, fn: async (context, data) => { const results = []; for (const ship of data) { const result = await refreshShipState(ship.id, context); if (result) { results.push(result); } } if (results.length === 0) { return {}; } return results.reduce((prev, cur) => mergeOperationResult(prev, cur)); } } ]; export default watchers;