1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const presetCondition = {
- // 预设条件:全部
- all: {},
- // 预设条件:7天未登录用户
- '7-day-offline-users': () => ({
- last_login_date: {
- type: 'lt',
- value: Date.now() - (7 * 24 * 60 * 60 * 1000)
- }
- }),
- // 预设条件:15天未登录用户
- '15-day-offline-users': () => ({
- last_login_date: {
- type: 'lt',
- value: Date.now() - (15 * 24 * 60 * 60 * 1000)
- }
- }),
- // 预设条件:30天未登录用户
- '30-day-offline-users': () => ({
- last_login_date: {
- type: 'lt',
- value: Date.now() - (30 * 24 * 60 * 60 * 1000)
- }
- })
- };
- function conditionConvert(condition, command) {
- const newCondition = {};
- for (const key in condition) {
- const field = condition[key];
- switch (field.type) {
- case 'search':
- // 搜索条件
- newCondition[key] = new RegExp(field.value);
- break;
- case 'select':
- // 选择条件
- if (field.value.length) {
- newCondition[key] = command.or(
- field.value.map(value => command.eq(value))
- );
- }
- break;
- case 'range':
- // 范围条件
- if (field.value.length) {
- const [gt, lt] = field.value;
- newCondition[key] = command.and([
- command.gte(gt),
- command.lte(lt)
- ]);
- }
- break;
- case 'date':
- // 日期条件
- if (field.value.length) {
- const [startTimestamp, endTimestamp] = field.value;
- const startDate = new Date(startTimestamp);
- const endDate = new Date(endTimestamp);
- newCondition[key] = command.and([
- command.gte(startDate),
- command.lte(endDate)
- ]);
- }
- break;
- case 'timestamp':
- // 时间戳条件
- if (field.value.length) {
- const [startDate, endDate] = field.value;
- newCondition[key] = command.and([
- command.gte(startDate),
- command.lte(endDate)
- ]);
- }
- break;
- case 'lt':
- // 小于条件
- newCondition[key] = command.lt(field.value);
- break;
- }
- }
- return newCondition;
- }
- module.exports.presetCondition = presetCondition;
- module.exports.conditionConvert = conditionConvert;
|