Просмотр исходного кода

文章管理和翻页问题修复

xgb 2 недель назад
Родитель
Сommit
0863f8f379
17 измененных файлов с 391 добавлено и 144 удалено
  1. 1 1
      fs-admin/src/main/java/com/fs/admin/controller/AdminCompanyBridgeController.java
  2. 0 138
      fs-admin/src/main/java/com/fs/admin/controller/ArticleAdminController.java
  3. 1 0
      fs-admin/src/main/java/com/fs/admin/controller/audit/AdminLiveVideoController.java
  4. 2 1
      fs-admin/src/main/java/com/fs/admin/controller/audit/AdminStoreOrderAdminController.java
  5. 1 0
      fs-admin/src/main/java/com/fs/admin/controller/audit/AdminVideoResourceController.java
  6. 120 0
      fs-admin/src/main/java/com/fs/admin/controller/audit/ArticleAdminController.java
  7. 1 0
      fs-admin/src/main/java/com/fs/admin/controller/audit/LiveAdminController.java
  8. 2 0
      fs-admin/src/main/java/com/fs/admin/controller/audit/ProductAdminController.java
  9. 23 0
      fs-service/src/main/java/com/fs/admin/mapper/AdminArticleMapper.java
  10. 21 0
      fs-service/src/main/java/com/fs/admin/service/IAdminArticleService.java
  11. 91 0
      fs-service/src/main/java/com/fs/admin/service/impl/AdminArticleServiceImpl.java
  12. 9 1
      fs-service/src/main/java/com/fs/admin/service/impl/AdminLiveServiceImpl.java
  13. 9 1
      fs-service/src/main/java/com/fs/admin/service/impl/AdminLiveVideoServiceImpl.java
  14. 9 1
      fs-service/src/main/java/com/fs/admin/service/impl/AdminProductServiceImpl.java
  15. 9 1
      fs-service/src/main/java/com/fs/admin/service/impl/AdminStoreOrderServiceImpl.java
  16. 23 0
      fs-service/src/main/java/com/fs/admin/vo/AdminArticleVO.java
  17. 69 0
      fs-service/src/main/resources/mapper/admin/AdminArticleMapper.xml

+ 1 - 1
fs-admin/src/main/java/com/fs/admin/controller/audit/AdminCompanyBridgeController.java → fs-admin/src/main/java/com/fs/admin/controller/AdminCompanyBridgeController.java

@@ -1,4 +1,4 @@
-package com.fs.admin.controller.audit;
+package com.fs.admin.controller;
 
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;

+ 0 - 138
fs-admin/src/main/java/com/fs/admin/controller/ArticleAdminController.java

@@ -1,138 +0,0 @@
-package com.fs.admin.controller;
-
-import java.util.*;
-
-import com.fs.admin.helper.AdminCrossTenantHelper;
-import com.fs.common.annotation.Excel;
-import com.fs.common.annotation.Log;
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.common.enums.BusinessType;
-import com.fs.common.utils.poi.ExcelUtil;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 总后台文章内容审计控制器
- * 遍历所有租户库查询 fs_article 数据
- */
-@RestController
-@RequestMapping("/admin/article")
-public class ArticleAdminController extends BaseController {
-
-    @Autowired
-    private AdminCrossTenantHelper crossTenantHelper;
-
-    private String str(Object o) { return o == null ? "" : o.toString(); }
-
-    @Data
-    public static class ArticleExportVO {
-        @Excel(name = "租户名称") private String companyName;
-        @Excel(name = "文章标题") private String articleTitle;
-        @Excel(name = "分类") private String categoryName;
-        @Excel(name = "作者") private String author;
-        @Excel(name = "状态") private String status;
-        @Excel(name = "创建时间") private String createTime;
-    }
-
-    @Log(title = "导出文章", businessType = BusinessType.EXPORT)
-    @PreAuthorize("@ss.hasPermi('admin:article:list')")
-    @GetMapping("/export")
-    public AjaxResult export(@RequestParam(required = false) String articleTitle,
-                             @RequestParam(required = false) Long companyId,
-                             @RequestParam(required = false) String companyName) {
-        List<Map<String, Object>> allList = crossTenantHelper.queryAcrossTenants(
-                companyId, companyName, (tenant, jdbc) -> {
-                    StringBuilder sql = new StringBuilder(
-                            "SELECT a.article_id, a.article_title, a.category_name, a.author, " +
-                            "a.create_time, a.status " +
-                            "FROM fs_article a WHERE 1=1");
-                    List<Object> params = new ArrayList<>();
-                    if (articleTitle != null && !articleTitle.isEmpty()) {
-                        sql.append(" AND a.article_title LIKE ?");
-                        params.add("%" + articleTitle + "%");
-                    }
-                    sql.append(" ORDER BY a.create_time DESC");
-                    return params.isEmpty()
-                            ? jdbc.queryForList(sql.toString())
-                            : jdbc.queryForList(sql.toString(), params.toArray());
-                });
-        List<ArticleExportVO> voList = new ArrayList<>();
-        for (Map<String, Object> m : allList) {
-            ArticleExportVO vo = new ArticleExportVO();
-            vo.setCompanyName(str(m.get("company_name")));
-            vo.setArticleTitle(str(m.get("article_title")));
-            vo.setCategoryName(str(m.get("category_name")));
-            vo.setAuthor(str(m.get("author")));
-            vo.setStatus(str(m.get("status")));
-            vo.setCreateTime(str(m.get("create_time")));
-            voList.add(vo);
-        }
-        ExcelUtil<ArticleExportVO> util = new ExcelUtil<>(ArticleExportVO.class);
-        return util.exportExcel(voList, "文章数据");
-    }
-
-    /**
-     * 查询所有租户的文章列表
-     */
-    @PreAuthorize("@ss.hasPermi('admin:article:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(@RequestParam(required = false) String articleTitle,
-                              @RequestParam(required = false) Long companyId,
-                              @RequestParam(required = false) String companyName) {
-        List<Map<String, Object>> allList = crossTenantHelper.queryAcrossTenants(
-                companyId, companyName, (tenant, jdbc) -> {
-                    StringBuilder sql = new StringBuilder(
-                            "SELECT a.article_id, a.article_title, a.category_name, a.author, " +
-                            "a.create_time, a.status " +
-                            "FROM fs_article a WHERE 1=1");
-                    List<Object> params = new ArrayList<>();
-                    if (articleTitle != null && !articleTitle.isEmpty()) {
-                        sql.append(" AND a.article_title LIKE ?");
-                        params.add("%" + articleTitle + "%");
-                    }
-                    sql.append(" ORDER BY a.create_time DESC LIMIT 200");
-                    return params.isEmpty()
-                            ? jdbc.queryForList(sql.toString())
-                            : jdbc.queryForList(sql.toString(), params.toArray());
-                });
-        return getDataTable(allList);
-    }
-
-    /**
-     * 查询待审计文章列表
-     */
-    @PreAuthorize("@ss.hasPermi('admin:article:list')")
-    @GetMapping("/pending")
-    public TableDataInfo pendingList(@RequestParam(required = false) Long companyId,
-                                     @RequestParam(required = false) String companyName) {
-        List<Map<String, Object>> allList = crossTenantHelper.queryAcrossTenants(
-                companyId, companyName, (tenant, jdbc) ->
-                        jdbc.queryForList(
-                                "SELECT a.article_id, a.article_title, a.category_name, a.author, " +
-                                "a.create_time, a.status " +
-                                "FROM fs_article a WHERE a.status = 0 ORDER BY a.create_time DESC LIMIT 200"));
-        return getDataTable(allList);
-    }
-
-    /**
-     * 文章统计信息
-     */
-    @PreAuthorize("@ss.hasPermi('admin:article:query')")
-    @GetMapping("/statistics")
-    public AjaxResult statistics(@RequestParam(required = false) Long companyId,
-                                 @RequestParam(required = false) String companyName) {
-        List<Map<String, Object>> allList = crossTenantHelper.queryAcrossTenants(
-                companyId, companyName, (tenant, jdbc) ->
-                        jdbc.queryForList("SELECT article_id, status FROM fs_article"));
-        Map<String, Object> result = new HashMap<>();
-        result.put("totalCount", allList.size());
-        result.put("pendingCount", allList.stream().filter(r -> "0".equals(String.valueOf(r.get("status")))).count());
-        result.put("approvedCount", allList.stream().filter(r -> "1".equals(String.valueOf(r.get("status")))).count());
-        result.put("rejectedCount", allList.stream().filter(r -> "2".equals(String.valueOf(r.get("status")))).count());
-        return AjaxResult.success(result);
-    }
-}

+ 1 - 0
fs-admin/src/main/java/com/fs/admin/controller/audit/AdminLiveVideoController.java

@@ -22,6 +22,7 @@ public class AdminLiveVideoController extends BaseController {
     public TableDataInfo list(@RequestParam(required = false) Long companyId,
                               @RequestParam(required = false) String companyName,
                               @RequestParam(required = false) String videoTitle) {
+        startPage();
         List<Map<String, Object>> allList = adminLiveVideoService.selectLiveVideoList(companyId, companyName, videoTitle);
         return getDataTable(allList);
     }

+ 2 - 1
fs-admin/src/main/java/com/fs/admin/controller/AdminStoreOrderAdminController.java → fs-admin/src/main/java/com/fs/admin/controller/audit/AdminStoreOrderAdminController.java

@@ -1,4 +1,4 @@
-package com.fs.admin.controller;
+package com.fs.admin.controller.audit;
 
 import java.util.*;
 
@@ -59,6 +59,7 @@ public class AdminStoreOrderAdminController extends BaseController {
     @PreAuthorize("@ss.hasPermi('admin:storeOrder:list')")
     @GetMapping("/list")
     public TableDataInfo list(@RequestParam(required = false) String orderNo) {
+        startPage();
         List<Map<String, Object>> allList = adminStoreOrderService.selectStoreOrderList(orderNo);
         return getDataTable(allList);
     }

+ 1 - 0
fs-admin/src/main/java/com/fs/admin/controller/audit/AdminVideoResourceController.java

@@ -28,6 +28,7 @@ public class AdminVideoResourceController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo list(@RequestParam(required = false) Long tenantId,
                               @RequestParam(required = false) String videoName) {
+        startPage();
         List<AdminVideoResourceVO> list = adminVideoResourceService.selectVideoResourceList(videoName);
         return getDataTable(list);
     }

+ 120 - 0
fs-admin/src/main/java/com/fs/admin/controller/audit/ArticleAdminController.java

@@ -0,0 +1,120 @@
+package com.fs.admin.controller.audit;
+
+import java.util.*;
+
+import com.fs.admin.service.IAdminArticleService;
+import com.fs.common.annotation.Excel;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/admin/article")
+public class ArticleAdminController extends BaseController {
+
+    @Autowired
+    private IAdminArticleService adminArticleService;
+
+    private String str(Object o) { return o == null ? "" : o.toString(); }
+
+    @Data
+    public static class ArticleExportVO {
+        @Excel(name = "租户名称") private String companyName;
+        @Excel(name = "文章标题") private String articleTitle;
+        @Excel(name = "分类") private String categoryName;
+        @Excel(name = "作者") private String author;
+        @Excel(name = "状态") private String status;
+        @Excel(name = "创建时间") private String createTime;
+    }
+
+    @Log(title = "导出文章", businessType = BusinessType.EXPORT)
+    @PreAuthorize("@ss.hasPermi('admin:article:list')")
+    @GetMapping("/export")
+    public AjaxResult export(@RequestParam(required = false) String articleTitle,
+                             @RequestParam(required = false) Integer status) {
+        List<Map<String, Object>> allList = adminArticleService.selectArticleListForExport(articleTitle, status);
+        List<ArticleExportVO> voList = new ArrayList<>();
+        for (Map<String, Object> m : allList) {
+            ArticleExportVO vo = new ArticleExportVO();
+            vo.setCompanyName(str(m.get("companyName")));
+            vo.setArticleTitle(str(m.get("articleTitle")));
+            vo.setCategoryName(str(m.get("categoryName")));
+            vo.setAuthor(str(m.get("author")));
+            vo.setStatus(statusText(str(m.get("status"))));
+            vo.setCreateTime(str(m.get("createTime")));
+            voList.add(vo);
+        }
+        ExcelUtil<ArticleExportVO> util = new ExcelUtil<>(ArticleExportVO.class);
+        return util.exportExcel(voList, "文章数据");
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(@RequestParam(required = false) String articleTitle,
+                              @RequestParam(required = false) Integer status) {
+        startPage();
+        List<Map<String, Object>> allList = adminArticleService.selectArticleList(articleTitle, status);
+        return getDataTable(allList);
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:list')")
+    @GetMapping("/pending")
+    public TableDataInfo pendingList() {
+        startPage();
+        List<Map<String, Object>> allList = adminArticleService.selectPendingArticleList();
+        return getDataTable(allList);
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:query')")
+    @GetMapping("/{articleId}")
+    public AjaxResult getInfo(@PathVariable Long articleId) {
+        Map<String, Object> data = adminArticleService.selectArticleById(articleId);
+        if (data == null) return AjaxResult.error("文章不存在");
+        return AjaxResult.success(data);
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:audit')")
+    @PutMapping("/audit/{articleId}")
+    public AjaxResult audit(@PathVariable Long articleId,
+                            @RequestParam Integer status,
+                            @RequestParam(required = false) String auditRemark) {
+        int rows = adminArticleService.auditArticle(articleId, status);
+        return rows > 0 ? AjaxResult.success("操作成功") : AjaxResult.error("操作失败");
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:remove')")
+    @DeleteMapping("/{articleId}")
+    public AjaxResult remove(@PathVariable Long articleId) {
+        int rows = adminArticleService.deleteArticle(articleId);
+        return rows > 0 ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
+    }
+
+    @PreAuthorize("@ss.hasPermi('admin:article:query')")
+    @GetMapping("/statistics")
+    public AjaxResult statistics() {
+        List<Map<String, Object>> allList = adminArticleService.selectArticleListForStatistics();
+        Map<String, Object> result = new HashMap<>();
+        result.put("totalCount", allList.size());
+        result.put("pendingCount", allList.stream().filter(r -> "0".equals(str(r.get("status")))).count());
+        result.put("approvedCount", allList.stream().filter(r -> "1".equals(str(r.get("status")))).count());
+        result.put("rejectedCount", allList.stream().filter(r -> "2".equals(str(r.get("status")))).count());
+        return AjaxResult.success(result);
+    }
+
+    private String statusText(String status) {
+        if (status == null || status.isEmpty()) return "";
+        switch (status) {
+            case "0": return "待审计";
+            case "1": return "已通过";
+            case "2": return "已拒绝";
+            default: return status;
+        }
+    }
+}

+ 1 - 0
fs-admin/src/main/java/com/fs/admin/controller/audit/LiveAdminController.java

@@ -79,6 +79,7 @@ public class LiveAdminController extends BaseController {
                               @RequestParam(required = false) Long companyId,
                               @RequestParam(required = false) String companyName,
                               @RequestParam(required = false) Integer status) {
+        startPage();
         List<Map<String, Object>> allList = adminLiveService.selectLiveList(companyId, companyName, liveTitle, status);
         return getDataTable(allList);
     }

+ 2 - 0
fs-admin/src/main/java/com/fs/admin/controller/audit/ProductAdminController.java

@@ -61,6 +61,7 @@ public class ProductAdminController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo list(@RequestParam(required = false) String productName,
                               @RequestParam(required = false) String status) {
+        startPage();
         List<Map<String, Object>> allList = adminProductService.selectProductList(productName, status);
         return getDataTable(allList);
     }
@@ -68,6 +69,7 @@ public class ProductAdminController extends BaseController {
     @PreAuthorize("@ss.hasPermi('admin:product:list')")
     @GetMapping("/pending")
     public TableDataInfo pendingList() {
+        startPage();
         List<Map<String, Object>> allList = adminProductService.selectProductPendingList();
         return getDataTable(allList);
     }

+ 23 - 0
fs-service/src/main/java/com/fs/admin/mapper/AdminArticleMapper.java

@@ -0,0 +1,23 @@
+package com.fs.admin.mapper;
+
+import com.fs.admin.vo.AdminArticleVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface AdminArticleMapper {
+
+    List<AdminArticleVO> selectArticleList(@Param("articleTitle") String articleTitle,
+                                            @Param("status") Integer status);
+
+    List<AdminArticleVO> selectPendingArticleList();
+
+    List<AdminArticleVO> selectArticleListForStatistics();
+
+    AdminArticleVO selectArticleById(@Param("articleId") Long articleId);
+
+    int updateArticleStatus(@Param("articleId") Long articleId,
+                            @Param("status") Integer status);
+
+    int deleteArticle(@Param("articleId") Long articleId);
+}

+ 21 - 0
fs-service/src/main/java/com/fs/admin/service/IAdminArticleService.java

@@ -0,0 +1,21 @@
+package com.fs.admin.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IAdminArticleService {
+
+    List<Map<String, Object>> selectArticleList(String articleTitle, Integer status);
+
+    List<Map<String, Object>> selectArticleListForExport(String articleTitle, Integer status);
+
+    List<Map<String, Object>> selectPendingArticleList();
+
+    List<Map<String, Object>> selectArticleListForStatistics();
+
+    Map<String, Object> selectArticleById(Long articleId);
+
+    int auditArticle(Long articleId, Integer status);
+
+    int deleteArticle(Long articleId);
+}

+ 91 - 0
fs-service/src/main/java/com/fs/admin/service/impl/AdminArticleServiceImpl.java

@@ -0,0 +1,91 @@
+package com.fs.admin.service.impl;
+
+import com.fs.admin.mapper.AdminArticleMapper;
+import com.fs.admin.service.IAdminArticleService;
+import com.fs.admin.vo.AdminArticleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class AdminArticleServiceImpl implements IAdminArticleService {
+
+    @Autowired
+    private AdminArticleMapper adminArticleMapper;
+
+    @Override
+    public List<Map<String, Object>> selectArticleList(String articleTitle, Integer status) {
+        return toMapList(adminArticleMapper.selectArticleList(articleTitle, status));
+    }
+
+    @Override
+    public List<Map<String, Object>> selectArticleListForExport(String articleTitle, Integer status) {
+        return toMapList(adminArticleMapper.selectArticleList(articleTitle, status));
+    }
+
+    @Override
+    public List<Map<String, Object>> selectPendingArticleList() {
+        return toMapList(adminArticleMapper.selectPendingArticleList());
+    }
+
+    @Override
+    public List<Map<String, Object>> selectArticleListForStatistics() {
+        return toMapList(adminArticleMapper.selectArticleListForStatistics());
+    }
+
+    @Override
+    public Map<String, Object> selectArticleById(Long articleId) {
+        AdminArticleVO vo = adminArticleMapper.selectArticleById(articleId);
+        if (vo == null) return null;
+        return toMap(vo);
+    }
+
+    @Override
+    public int auditArticle(Long articleId, Integer status) {
+        return adminArticleMapper.updateArticleStatus(articleId, status);
+    }
+
+    @Override
+    public int deleteArticle(Long articleId) {
+        return adminArticleMapper.deleteArticle(articleId);
+    }
+
+    private Map<String, Object> toMap(AdminArticleVO vo) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("articleId", vo.getArticleId());
+        map.put("cateId", vo.getCateId());
+        map.put("articleTitle", vo.getTitle());
+        map.put("title", vo.getTitle());
+        map.put("imageUrl", vo.getImageUrl());
+        map.put("isTui", vo.getIsTui());
+        map.put("isNews", vo.getIsNews());
+        map.put("content", vo.getContents());
+        map.put("contents", vo.getContents());
+        map.put("views", vo.getViews());
+        map.put("sort", vo.getSort());
+        map.put("createTime", vo.getCreateTime());
+        map.put("updateTime", vo.getUpdateTime());
+        map.put("publishTime", vo.getPublishTime());
+        map.put("categoryName", null);
+        map.put("author", null);
+        map.put("status", vo.getIsTui());
+        map.put("companyName", vo.getCompanyName());
+        map.put("tenantCode", vo.getTenantCode());
+        return map;
+    }
+
+    private List<Map<String, Object>> toMapList(List<AdminArticleVO> voList) {
+        List<Map<String, Object>> result = voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        if (voList instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<AdminArticleVO> page = (com.github.pagehelper.Page<AdminArticleVO>) voList;
+            com.github.pagehelper.Page<Map<String, Object>> newPage = new com.github.pagehelper.Page<>(page.getPageNum(), page.getPageSize());
+            newPage.setTotal(page.getTotal());
+            newPage.addAll(result);
+            return newPage;
+        }
+        return result;
+    }
+}

+ 9 - 1
fs-service/src/main/java/com/fs/admin/service/impl/AdminLiveServiceImpl.java

@@ -59,6 +59,14 @@ public class AdminLiveServiceImpl implements IAdminLiveService {
     }
 
     private List<Map<String, Object>> toMapList(List<AdminLiveVO> voList) {
-        return voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        List<Map<String, Object>> result = voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        if (voList instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<AdminLiveVO> page = (com.github.pagehelper.Page<AdminLiveVO>) voList;
+            com.github.pagehelper.Page<Map<String, Object>> newPage = new com.github.pagehelper.Page<>(page.getPageNum(), page.getPageSize());
+            newPage.setTotal(page.getTotal());
+            newPage.addAll(result);
+            return newPage;
+        }
+        return result;
     }
 }

+ 9 - 1
fs-service/src/main/java/com/fs/admin/service/impl/AdminLiveVideoServiceImpl.java

@@ -19,7 +19,7 @@ public class AdminLiveVideoServiceImpl implements IAdminLiveVideoService {
     @Override
     public List<Map<String, Object>> selectLiveVideoList(Long companyId, String companyName, String videoTitle) {
         List<AdminLiveVideoVO> voList = adminLiveVideoMapper.selectLiveVideoList(videoTitle);
-        return voList.stream().map(vo -> {
+        List<Map<String, Object>> result = voList.stream().map(vo -> {
             Map<String, Object> map = new HashMap<>();
             map.put("videoId", vo.getVideoId());
             map.put("liveId", vo.getLiveId());
@@ -35,5 +35,13 @@ public class AdminLiveVideoServiceImpl implements IAdminLiveVideoService {
             map.put("tenantCode", vo.getTenantCode());
             return map;
         }).collect(java.util.stream.Collectors.toList());
+        if (voList instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<AdminLiveVideoVO> page = (com.github.pagehelper.Page<AdminLiveVideoVO>) voList;
+            com.github.pagehelper.Page<Map<String, Object>> newPage = new com.github.pagehelper.Page<>(page.getPageNum(), page.getPageSize());
+            newPage.setTotal(page.getTotal());
+            newPage.addAll(result);
+            return newPage;
+        }
+        return result;
     }
 }

+ 9 - 1
fs-service/src/main/java/com/fs/admin/service/impl/AdminProductServiceImpl.java

@@ -71,6 +71,14 @@ public class AdminProductServiceImpl implements IAdminProductService {
     }
 
     private List<Map<String, Object>> toMapList(List<AdminProductVO> voList) {
-        return voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        List<Map<String, Object>> result = voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        if (voList instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<AdminProductVO> page = (com.github.pagehelper.Page<AdminProductVO>) voList;
+            com.github.pagehelper.Page<Map<String, Object>> newPage = new com.github.pagehelper.Page<>(page.getPageNum(), page.getPageSize());
+            newPage.setTotal(page.getTotal());
+            newPage.addAll(result);
+            return newPage;
+        }
+        return result;
     }
 }

+ 9 - 1
fs-service/src/main/java/com/fs/admin/service/impl/AdminStoreOrderServiceImpl.java

@@ -49,6 +49,14 @@ public class AdminStoreOrderServiceImpl implements IAdminStoreOrderService {
     }
 
     private List<Map<String, Object>> toMapList(List<AdminStoreOrderVO> voList) {
-        return voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        List<Map<String, Object>> result = voList.stream().map(this::toMap).collect(java.util.stream.Collectors.toList());
+        if (voList instanceof com.github.pagehelper.Page) {
+            com.github.pagehelper.Page<AdminStoreOrderVO> page = (com.github.pagehelper.Page<AdminStoreOrderVO>) voList;
+            com.github.pagehelper.Page<Map<String, Object>> newPage = new com.github.pagehelper.Page<>(page.getPageNum(), page.getPageSize());
+            newPage.setTotal(page.getTotal());
+            newPage.addAll(result);
+            return newPage;
+        }
+        return result;
     }
 }

+ 23 - 0
fs-service/src/main/java/com/fs/admin/vo/AdminArticleVO.java

@@ -0,0 +1,23 @@
+package com.fs.admin.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminArticleVO {
+
+    private Long articleId;
+    private Integer cateId;
+    private String title;
+    private String imageUrl;
+    private Integer isTui;
+    private Integer isNews;
+    private String contents;
+    private Integer views;
+    private Integer sort;
+    private String createTime;
+    private String updateTime;
+    private String publishTime;
+
+    private String companyName;
+    private String tenantCode;
+}

+ 69 - 0
fs-service/src/main/resources/mapper/admin/AdminArticleMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.admin.mapper.AdminArticleMapper">
+
+    <resultMap type="com.fs.admin.vo.AdminArticleVO" id="AdminArticleVOResult">
+        <id     property="articleId"        column="article_id"       />
+        <result property="cateId"           column="cate_id"          />
+        <result property="title"            column="title"            />
+        <result property="imageUrl"         column="image_url"        />
+        <result property="isTui"            column="is_tui"           />
+        <result property="isNews"           column="is_news"          />
+        <result property="contents"         column="contents"         />
+        <result property="views"            column="views"            />
+        <result property="sort"             column="sort"             />
+        <result property="createTime"       column="create_time"      />
+        <result property="updateTime"       column="update_time"      />
+        <result property="publishTime"      column="publish_time"     />
+    </resultMap>
+
+    <sql id="selectAdminArticleVo">
+        SELECT a.article_id, a.cate_id, a.title, a.image_url,
+               a.is_tui, a.is_news, a.contents, a.views,
+               a.sort, a.create_time, a.update_time, a.publish_time
+        FROM fs_article a
+    </sql>
+
+    <select id="selectArticleList" resultMap="AdminArticleVOResult">
+        <include refid="selectAdminArticleVo"/>
+        <where>
+            <if test="articleTitle != null and articleTitle != ''">
+                AND a.title LIKE CONCAT('%', #{articleTitle}, '%')
+            </if>
+            <if test="status != null">
+                AND a.is_tui = #{status}
+            </if>
+        </where>
+        ORDER BY a.create_time DESC
+    </select>
+
+    <select id="selectPendingArticleList" resultMap="AdminArticleVOResult">
+        <include refid="selectAdminArticleVo"/>
+        WHERE a.is_tui = 0
+        ORDER BY a.create_time DESC
+    </select>
+
+    <select id="selectArticleListForStatistics" resultMap="AdminArticleVOResult">
+        <include refid="selectAdminArticleVo"/>
+        ORDER BY a.create_time DESC
+    </select>
+
+    <select id="selectArticleById" resultMap="AdminArticleVOResult">
+        <include refid="selectAdminArticleVo"/>
+        WHERE a.article_id = #{articleId}
+    </select>
+
+    <update id="updateArticleStatus">
+        UPDATE fs_article
+        SET is_tui = #{status}, update_time = NOW()
+        WHERE article_id = #{articleId}
+    </update>
+
+    <delete id="deleteArticle">
+        DELETE FROM fs_article
+        WHERE article_id = #{articleId}
+    </delete>
+
+</mapper>