diff --git a/src/admin/controllers/shop_puzzle.controller.ts b/src/admin/controllers/shop_puzzle.controller.ts index 1140965..10c2a2e 100644 --- a/src/admin/controllers/shop_puzzle.controller.ts +++ b/src/admin/controllers/shop_puzzle.controller.ts @@ -88,4 +88,49 @@ export default class ShopPuzzleController extends BaseController { const { shop } = req.params return await ShopPuzzle.allTags(shop) } + + @router('post /api/:shop/puzzle/import') + async insertMany(req, res) { + let { datas, shop } = req.params + if (!Array.isArray(datas)) { + throw new ZError(11, '数据结构不正确, datas必须为数组') + } + if (!shop) { + throw new ZError(12, '请指定要导入的店铺') + } + for (let data of datas) { + data.shop = shop + if (!data.groups && data.tags) { + data.groups = data.tags.split(',') + } + } + let result: any = {} + try { + let results = await ShopPuzzle.bulkWrite( + datas.map(data => ({ + updateOne: { + filter: { shop: data.shop, question: data.question }, + update: { $set: data }, + upsert: true, + }, + })), + { ordered: false }, + ) + result.insert = results.upsertedCount + results.insertedCount + result.update = results.modifiedCount + result.skip = 0 + } catch (err) { + console.log(err) + result.insert = err.upsertedCount + err.insertedCount + result.update = err.modifiedCount + } + try { + await ShopPuzzle.updateMany({ deleted: { $exists: false } }, { $set: { deleted: 0 } }) + await ShopPuzzle.updateMany({ is_hide: { $exists: false } }, { $set: { is_hide: 0 } }) + await ShopPuzzle.updateMany({ quality: { $exists: false } }, { $set: { quality: 1 } }) + } catch (err) { + console.log(err) + } + return result + } } diff --git a/src/models/shop/ShopExam.ts b/src/models/shop/ShopExam.ts index e1097d8..6146cdb 100644 --- a/src/models/shop/ShopExam.ts +++ b/src/models/shop/ShopExam.ts @@ -138,6 +138,7 @@ export class ShopExamClass extends BaseModule { * 题目来源 * 0: 系统题目 * 1: 自定义 + * 2: 店铺自定义题库 * @type {number} */ @prop({ default: 0 }) diff --git a/src/models/shop/ShopPuzzle.ts b/src/models/shop/ShopPuzzle.ts index bbf5571..3969f88 100644 --- a/src/models/shop/ShopPuzzle.ts +++ b/src/models/shop/ShopPuzzle.ts @@ -15,6 +15,7 @@ export interface ShopPuzzleClass extends Base, TimeStamps {} @dbconn() @index({ shop: 1 }, { unique: false }) +@index({ shop: 1, question: 1 }, { unique: true }) @index({ groups: 1 }, { unique: false }) @index({ shop: 1, tag: 1, sub_tag: 1 }, { unique: false }) @modelOptions({ schemaOptions: { collection: 'shop_puzzle', timestamps: true } }) @@ -38,6 +39,13 @@ export class ShopPuzzleClass extends BaseModule { @prop({ default: 1 }) public quality: number + /** + * 题目类型: 1: 正常单选题, 2: 图片, 3: 问卷式题目 + * @type {number} + */ + @prop({ default: 1 }) + public type: number + /** * 大分类 * @type {string}