瀏覽代碼

修改排序方法

zhy 2 周之前
父節點
當前提交
1994ce6583
共有 1 個文件被更改,包括 37 次插入8 次删除
  1. 37 8
      service-cms/app/service/imgnews.js

+ 37 - 8
service-cms/app/service/imgnews.js

@@ -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;
     }