|
@@ -55,16 +55,45 @@ class ImgnewsService extends Service {
|
|
|
if (bind) filter.bind = bind;
|
|
|
if (isshow) filter.isshow = isshow;
|
|
|
try {
|
|
|
- let res;
|
|
|
- const total = await this.model.find({ ...filter }, { content: false });
|
|
|
+ // let res;
|
|
|
+ // const total = await this.model.find({ ...filter }, { content: false });
|
|
|
+ // if (skip && limit) {
|
|
|
+ // res = await this.model.find({ ...filter }, { content: false })
|
|
|
+ // .skip(Number(skip) * Number(limit))
|
|
|
+ // .limit(Number(limit));
|
|
|
+ // } else {
|
|
|
+ // res = await this.model.find({ ...filter }, { content: false });
|
|
|
+ // }
|
|
|
+ // return { errcode: 0, errmsg: '', data: res, total: total.length };
|
|
|
+ // 获取完整未分页结果
|
|
|
+ const totalList = await this.model.find({ ...filter }, { content: false });
|
|
|
+
|
|
|
+ // 在 JS 层进行排序:将 date 为 0 的放最后,其它按 date 降序
|
|
|
+ const sorted = totalList.sort((a, b) => {
|
|
|
+ const aDate = a.date || 0;
|
|
|
+ const bDate = b.date || 0;
|
|
|
+
|
|
|
+ // 把 date=0 的排在后面
|
|
|
+ if (aDate === 0 && bDate !== 0) return 1;
|
|
|
+ if (aDate !== 0 && bDate === 0) return -1;
|
|
|
+
|
|
|
+ return bDate - aDate; // 正常降序排序
|
|
|
+ });
|
|
|
+
|
|
|
+ // 再进行分页
|
|
|
+ let res = sorted;
|
|
|
if (skip && limit) {
|
|
|
- res = await this.model.find({ ...filter }, { content: false })
|
|
|
- .skip(Number(skip) * Number(limit))
|
|
|
- .limit(Number(limit));
|
|
|
- } else {
|
|
|
- res = await this.model.find({ ...filter }, { content: false });
|
|
|
+ const start = Number(skip) * Number(limit);
|
|
|
+ const end = start + Number(limit);
|
|
|
+ res = sorted.slice(start, end);
|
|
|
}
|
|
|
- return { errcode: 0, errmsg: '', data: res, total: total.length };
|
|
|
+
|
|
|
+ return {
|
|
|
+ errcode: 0,
|
|
|
+ errmsg: '',
|
|
|
+ data: res,
|
|
|
+ total: totalList.length,
|
|
|
+ };
|
|
|
} catch (error) {
|
|
|
throw error;
|
|
|
}
|