|
|
@@ -15,7 +15,7 @@ const { getListBuilder } = require('../libs/pager');
|
|
|
const CACHE_PREFIX = "art_v1";
|
|
|
const CACHE_EXPIRES = 60; // 60s刷新一次
|
|
|
|
|
|
-const artSelect = 'name title desc width height date publishTime tags lastMod mystery hasSpecial useSpecialThumb publishVersion lock pageId desc name';
|
|
|
+const artSelect = 'name title desc width height date publishTime tags lastMod mystery hasSpecial useSpecialThumb publishVersion lock pageId';
|
|
|
|
|
|
|
|
|
router.get('/', (req, res, next) => {
|
|
|
@@ -498,7 +498,6 @@ router.get('/:lang/coloring-page/:str', function (req, res, next) {
|
|
|
organizeDetail(doc, lang);
|
|
|
|
|
|
// find relate
|
|
|
- // 算法: 排除掉主流的tag,用剩下的tag去检索,取最多12条记录
|
|
|
let tags = [...doc.tags];
|
|
|
let cates = categories.map(e => e.id);
|
|
|
tags = tags.filter(e => !cates.includes(e));
|
|
|
@@ -518,7 +517,8 @@ router.get('/:lang/coloring-page/:str', function (req, res, next) {
|
|
|
|
|
|
|
|
|
let data = {
|
|
|
- title: `${doc.name.replace(/[_]+/g, '-')}`,
|
|
|
+ // title: `${doc.name.replace(/[_]+/g, '-')}`,
|
|
|
+ title: `${doc.title}`,
|
|
|
description: `${doc.desc}`,
|
|
|
detail: doc,
|
|
|
data: result.data,
|
|
|
@@ -557,24 +557,26 @@ router.get('/:lang/detail/:id', function (req, res, next) {
|
|
|
organizeDetail(doc, lang);
|
|
|
|
|
|
// find relate
|
|
|
- // 算法: 排除掉主流的tag,用剩下的tag去检索,取最多12条记录
|
|
|
let tags = [...doc.tags];
|
|
|
let cates = categories.map(e => e.id);
|
|
|
tags = tags.filter(e => !cates.includes(e));
|
|
|
- let baseSort = { publishTime: 'desc' };
|
|
|
|
|
|
- let relates = await models.Art
|
|
|
- .find({ tags: { $in: tags }, status: 9000 })
|
|
|
- .select(artSelect)
|
|
|
- .sort(baseSort)
|
|
|
- .limit(12)
|
|
|
- .lean()
|
|
|
- .exec();
|
|
|
- organizeData(relates, lang);
|
|
|
+ let query = {
|
|
|
+ page: req.query.page,
|
|
|
+ length: req.query.length,
|
|
|
+ search: req.query.search,
|
|
|
+ orderBy: 'publishTime',
|
|
|
+ order: 'desc',
|
|
|
+ base: { status: 9000 },
|
|
|
+ filters: { tags },
|
|
|
+ }
|
|
|
|
|
|
+ let result = await getListBuilder(query, models.Art);
|
|
|
+ organizeData(result.data, lang);
|
|
|
|
|
|
let data = {
|
|
|
- title: `${doc.name.replace(/[_]+/g, '-')}`,
|
|
|
+ // title: `${doc.name.replace(/[_]+/g, '-')}`,
|
|
|
+ title: `${doc.title}`,
|
|
|
description: `${doc.desc}`,
|
|
|
data: doc,
|
|
|
translate,
|
|
|
@@ -649,9 +651,24 @@ const organizeData = (data, lang) => {
|
|
|
doc.thumb = `${host}/thumbs/v2/${str}/480/${doc._id}.jpeg`;
|
|
|
}
|
|
|
|
|
|
- doc.zip = `${host}/zips/v2/number_mini/${version}/${doc._id}.zip`
|
|
|
+ doc.zip = `${host}/zips/v2/number_mini/${version}/${doc._id}.zip`;
|
|
|
|
|
|
- let utf8name = encodeURIComponent(doc.name.replace(/[\s_]+/g, '-'));
|
|
|
+ let utf8name = encodeURIComponent(doc.name.replace(/[\s_]+/g, '-')).toLowerCase();
|
|
|
+ if (doc.title) { // 如果有英文title,就用英文title作为url,而不用原来的name字段,name字段没有多语
|
|
|
+ try {
|
|
|
+ let titleJson = JSON.parse(doc.title);
|
|
|
+ if (titleJson && titleJson.en) {
|
|
|
+ utf8name = encodeURIComponent(titleJson.en.replace(/[\s_]+/g, '-')).toLowerCase();
|
|
|
+ }
|
|
|
+ if (titleJson && titleJson[lang]) {
|
|
|
+ doc.title = titleJson[lang];
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e.message);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ doc.title = doc.name;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
doc.uri = `${lang}/coloring-page/${utf8name}-${doc._id}`;
|
|
|
@@ -660,6 +677,7 @@ const organizeData = (data, lang) => {
|
|
|
delete doc.useSpecialThumb;
|
|
|
delete doc.publishVersion;
|
|
|
delete doc.pageId;
|
|
|
+ delete doc.desc;
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -686,8 +704,26 @@ const organizeDetail = (doc, lang) => {
|
|
|
|
|
|
doc.zip = `${host}/zips/v2/number_mini/${version}/${doc._id}.zip`
|
|
|
|
|
|
- doc.desc = translate.descTest[lang];
|
|
|
- doc.title = translate.titleTest[lang];
|
|
|
+ // doc.title = translate.titleTest[lang];
|
|
|
+ // doc.desc = translate.descTest[lang];
|
|
|
+ if (doc.title) {
|
|
|
+ try {
|
|
|
+ let titleJson = JSON.parse(doc.title);
|
|
|
+ doc.title = titleJson && titleJson[lang] ? titleJson[lang] : doc.name;
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e.message);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ doc.title = doc.name;
|
|
|
+ }
|
|
|
+ if (doc.desc) {
|
|
|
+ try {
|
|
|
+ let descJson = JSON.parse(doc.desc);
|
|
|
+ doc.desc = descJson && descJson[lang] ? descJson[lang] : '';
|
|
|
+ } catch (e) {
|
|
|
+ console.error(e.message);
|
|
|
+ }
|
|
|
+ }
|
|
|
doc.publishTime = format(new Date(doc.publishTime), 'yyyy/MM/dd');
|
|
|
|
|
|
let utf8name = encodeURIComponent(doc.name.replace(/[\s_]+/g, '-'));
|