123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 'use strict';
- const { CrudService } = require('naf-framework-mongoose-free/lib/service');
- const { BusinessError, ErrorCode } = require('naf-core').Error;
- const _ = require('lodash');
- const assert = require('assert');
- const path = require('path');
- //
- class InstallService extends CrudService {
- constructor(ctx) {
- super(ctx, 'install');
- this.dataIndex = path.resolve('app', 'public', 'defaultData');
- }
- async init() {
- // await this.initDict();
- // await this.initAdmin();
- // await this.initSelfShop();
- // await this.initTestCustomer();
- // await this.initGoodsTags();
- await this.initConfig();
- }
- async initConfig() {
- const model = this.ctx.model.System.Config;
- const num = await model.count({});
- if (num > 0) return;
- const p = path.resolve(this.dataIndex, 'config.js');
- const data = require(p);
- await model.create(data);
- }
- async initGoodsTags() {
- const model = this.ctx.model.System.GoodsTags;
- const p = path.resolve(this.dataIndex, 'goodsTags.js');
- const data = require(p);
- const loop = async (list, pid, level = 1) => {
- for (const i of list) {
- const { children = [], label, code } = i;
- let pdata;
- pdata = await model.findOne({ code });
- if (!pdata) pdata = await model.create({ label, code, pid, level });
- if (children.length > 0) loop(children, pdata._id, level + 1);
- }
- };
- await loop(data);
- }
- /**
- * 初始化测试顾客
- */
- async initTestCustomer() {
- const model = this.ctx.model.User.User;
- await model.deleteMany({ name: '测试用户', phone: '11111111111' });
- // const num = await model.count({ code: 'self' });
- // if (num > 0) return;
- // const p = path.resolve(this.dataIndex, 'user.js');
- // const data = require(p);
- // await model.create(data);
- }
- /**
- * 初始化自营店
- */
- async initSelfShop() {
- const model = this.ctx.model.Shop.Shop;
- const num = await model.count({ code: 'self' });
- if (num > 0) return;
- const p = path.resolve(this.dataIndex, 'selfShop.js');
- const data = require(p);
- await model.create(data);
- }
- /**
- * 初始化超级管理员
- */
- async initAdmin() {
- const model = this.ctx.model.User.Admin;
- const num = await model.count();
- if (num > 0) return;
- const p = path.resolve(this.dataIndex, 'admin.js');
- const data = require(p);
- await model.create(data);
- }
- /**
- * 初始化字典
- */
- async initDict() {
- const indexModel = this.ctx.model.Dev.DictIndex;
- const dataModel = this.ctx.model.Dev.DictData;
- const p = path.resolve(this.dataIndex, 'dict.js');
- const data = require(p);
- for (const i of data) {
- const { children, ...others } = i;
- const num = await indexModel.count({ code: others.code });
- if (num > 0) continue;
- await indexModel.create(others);
- const newChildren = children.map(i => ({ ...i, code: others.code }));
- await dataModel.insertMany(newChildren);
- }
- }
- }
- module.exports = InstallService;
|