修改自定义题库的导入接口

This commit is contained in:
zhl 2021-05-31 18:59:02 +08:00
parent 9b65560dd4
commit 6963e7e626
3 changed files with 54 additions and 0 deletions

View File

@ -88,4 +88,49 @@ export default class ShopPuzzleController extends BaseController {
const { shop } = req.params const { shop } = req.params
return await ShopPuzzle.allTags(shop) 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
}
} }

View File

@ -138,6 +138,7 @@ export class ShopExamClass extends BaseModule {
* *
* 0: 系统题目 * 0: 系统题目
* 1: 自定义 * 1: 自定义
* 2: 店铺自定义题库
* @type {number} * @type {number}
*/ */
@prop({ default: 0 }) @prop({ default: 0 })

View File

@ -15,6 +15,7 @@ export interface ShopPuzzleClass extends Base, TimeStamps {}
@dbconn() @dbconn()
@index({ shop: 1 }, { unique: false }) @index({ shop: 1 }, { unique: false })
@index({ shop: 1, question: 1 }, { unique: true })
@index({ groups: 1 }, { unique: false }) @index({ groups: 1 }, { unique: false })
@index({ shop: 1, tag: 1, sub_tag: 1 }, { unique: false }) @index({ shop: 1, tag: 1, sub_tag: 1 }, { unique: false })
@modelOptions({ schemaOptions: { collection: 'shop_puzzle', timestamps: true } }) @modelOptions({ schemaOptions: { collection: 'shop_puzzle', timestamps: true } })
@ -38,6 +39,13 @@ export class ShopPuzzleClass extends BaseModule {
@prop({ default: 1 }) @prop({ default: 1 })
public quality: number public quality: number
/**
* 题目类型: 1: , 2: 图片, 3: 问卷式题目
* @type {number}
*/
@prop({ default: 1 })
public type: number
/** /**
* *
* @type {string} * @type {string}