123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- 'use strict';
- const _ = require('lodash');
- const moment = require('moment');
- const { CrudService } = require('naf-framework-mongoose/lib/service');
- const { ObjectId } = require('mongoose').Types;
- const fs = require('fs');
- class UtilService extends CrudService {
- constructor(ctx) {
- super(ctx);
- this.mq = this.ctx.mq;
- }
- async utilMethod(query, body) {
- const path = 'C:\\Users\\liuruifeng\\Desktop\\temp\\organization.json';
- let text = await fs.readFileSync(path, { encoding: 'utf-8' });
- text = JSON.parse(text);
- for (const i of text) {
- i.passwd = _.cloneDeep(i.password);
- delete i.password;
- }
- await fs.writeFileSync('C:\\Users\\liuruifeng\\Desktop\\temp\\no.json', JSON.stringify(text));
- // const path = 'C:\\Users\\liuruifeng\\Desktop\\temp\\expert.json';
- // let text = await fs.readFileSync(path, { encoding: 'utf-8' });
- // text = JSON.parse(text);
- // const ids = text.map(i => i.user_id.$oid);
- // const users = await this.ctx.model.Personal.find({ _id: ids }, '+password');
- // for (const i of text) {
- // const r = users.find(f => ObjectId(f._id).equals(i.user_id.$oid));
- // if (r) {
- // const { addr, office_phone, profession, name, phone } = r;
- // if (name)i.name = name;
- // if (phone)i.phone = phone;
- // if (addr)i.addr = addr;
- // if (office_phone)i.office_phone = office_phone;
- // if (profession)i.profession = profession;
- // }
- // const { img_path } = i;
- // const arr = [];
- // if (_.isString(img_path)) {
- // arr.push({ name: 'icon', url: img_path });
- // }
- // i.img_path = arr;
- // delete i.user_id;
- // }
- // await fs.writeFileSync('C:\\Users\\liuruifeng\\Desktop\\temp\\new-expert.json', JSON.stringify(text));
- // for (const obj of text) {
- // obj.channel_id = { $oid: obj.channel_id };
- // }
- // const path = 'C:\\Users\\liuruifeng\\Desktop\\temp\\export\\dock.json';
- // let text = await fs.readFileSync(path, { encoding: 'utf-8' });
- // text = JSON.parse(text);
- // const dockArr = [];
- // const dockUser = [];
- // for (const obj of text) {
- // const dock = _.pick(obj, [ '_id', 'room_id', 'password', 'title', 'start_time', 'end_time', 'province', 'place', 'adminuser', 'phone', 'sponsor', 'organizer', 'videodata', 'vipuser', 'desc', 'status' ]);
- // dockArr.push(dock);
- // const apply = _.get(obj, 'apply', []);
- // const { _id } = obj;
- // for (const a of apply) {
- // a.dock_id = _id;
- // a.user_id = { $oid: a.user_id };
- // dockUser.push(a);
- // }
- // }
- // // await fs.writeFileSync('C:\\Users\\liuruifeng\\Desktop\\temp\\export\\dock_data.json', JSON.stringify(dockArr));
- // const eupath = 'C:\\Users\\liuruifeng\\Desktop\\temp\\export\\expert,s_user.json';
- // let eutext = await fs.readFileSync(eupath, { encoding: 'utf-8' });
- // eutext = JSON.parse(eutext);
- // console.log(eutext.length);
- // for (const obj of text) {
- // if (_.isObject(obj.password)) continue;
- // const { password } = obj;
- // obj.password = { secret: password, mech: 'plain', createdAt: { $date: '2020-09-27T07:48:05.643Z' }, updatedAt: { $date: '2020-09-27T07:48:05.643Z' } };
- // }
- // await fs.writeFileSync('C:\\Users\\liuruifeng\\Desktop\\temp\\export\\role-5-rewrite.json', JSON.stringify(text));
- }
- dealQuery(query) {
- return this.turnFilter(this.turnDateRangeQuery(query));
- }
- /**
- * 将查询条件中模糊查询的标识转换成对应object
- * @param {Object} filter 查询条件
- */
- turnFilter(filter) {
- const str = /^%\S*%$/;
- const keys = Object.keys(filter);
- for (const key of keys) {
- const res = key.match(str);
- if (res) {
- const newKey = key.slice(1, key.length - 1);
- filter[newKey] = new RegExp(filter[key]);
- delete filter[key];
- }
- }
- return filter;
- }
- /**
- * 将时间转换成对应查询Object
- * @param {Object} filter 查询条件
- */
- turnDateRangeQuery(filter) {
- const keys = Object.keys(filter);
- for (const k of keys) {
- if (k.includes('@')) {
- const karr = k.split('@');
- // 因为是针对处理范围日期,所以必须只有,开始时间和结束时间
- if (karr.length === 2) {
- const type = karr[1];
- if (type === 'start') {
- filter[karr[0]] = {
- ..._.get(filter, karr[0], {}),
- $gte: filter[k],
- };
- } else {
- filter[karr[0]] = {
- ..._.get(filter, karr[0], {}),
- $lte: filter[k],
- };
- }
- delete filter[k];
- }
- }
- }
- return filter;
- }
- }
- module.exports = UtilService;
|