Explorar o código

修复分页问题

wwh hai 1 mes
pai
achega
1a2d046e38

+ 8 - 0
baqing-admin/src/main/java/com/ruoyi/web/modules/farming/controller/BizTechResourceController.java

@@ -19,6 +19,8 @@ import com.ruoyi.common.core.page.TableDataInfo;
19
 import com.ruoyi.common.enums.BusinessType;
19
 import com.ruoyi.common.enums.BusinessType;
20
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
20
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
21
 import com.ruoyi.web.modules.farming.service.IBizTechResourceService;
21
 import com.ruoyi.web.modules.farming.service.IBizTechResourceService;
22
+import com.ruoyi.web.modules.farming.support.TechResourceTypeValidator;
23
+import com.ruoyi.web.modules.farming.support.TechResourceValidation;
22
 
24
 
23
 /**
25
 /**
24
  * 畜牧科技资源管理
26
  * 畜牧科技资源管理
@@ -30,6 +32,9 @@ public class BizTechResourceController extends BaseController
30
     @Autowired
32
     @Autowired
31
     private IBizTechResourceService bizTechResourceService;
33
     private IBizTechResourceService bizTechResourceService;
32
 
34
 
35
+    @Autowired
36
+    private TechResourceTypeValidator techResourceTypeValidator;
37
+
33
     @PreAuthorize("@ss.hasPermi('techService:techResource:list')")
38
     @PreAuthorize("@ss.hasPermi('techService:techResource:list')")
34
     @GetMapping("/list")
39
     @GetMapping("/list")
35
     public TableDataInfo list(BizTechResource query,
40
     public TableDataInfo list(BizTechResource query,
@@ -40,6 +45,9 @@ public class BizTechResourceController extends BaseController
40
             query.setQueryPublishStatus(listPublishStatus);
45
             query.setQueryPublishStatus(listPublishStatus);
41
             query.setPublishStatus(null);
46
             query.setPublishStatus(null);
42
         }
47
         }
48
+        // 须在 startPage 之前完成校验:assertAllowed 会查库,否则 PageHelper 分页会落在类别查询上
49
+        TechResourceValidation.validateListQuery(query);
50
+        techResourceTypeValidator.assertAllowed(query.getResourceType());
43
         startPage();
51
         startPage();
44
         List<BizTechResource> list = bizTechResourceService.selectBizTechResourceList(query);
52
         List<BizTechResource> list = bizTechResourceService.selectBizTechResourceList(query);
45
         return getDataTable(list);
53
         return getDataTable(list);

+ 1 - 2
baqing-admin/src/main/java/com/ruoyi/web/modules/farming/service/impl/BizTechResourceServiceImpl.java

@@ -57,8 +57,7 @@ public class BizTechResourceServiceImpl implements IBizTechResourceService
57
     @Override
57
     @Override
58
     public List<BizTechResource> selectBizTechResourceList(BizTechResource query)
58
     public List<BizTechResource> selectBizTechResourceList(BizTechResource query)
59
     {
59
     {
60
-        TechResourceValidation.validateListQuery(query);
61
-        techResourceTypeValidator.assertAllowed(query.getResourceType());
60
+        // 列表入参校验与类型校验须在 Controller 中、startPage() 之前完成(避免 PageHelper 分页错位)
62
         List<BizTechResource> list = bizTechResourceMapper.selectBizTechResourceList(query);
61
         List<BizTechResource> list = bizTechResourceMapper.selectBizTechResourceList(query);
63
         if (list != null)
62
         if (list != null)
64
         {
63
         {

+ 2 - 0
baqing-admin/src/main/java/com/ruoyi/web/modules/farming/support/TechResourceTypeValidator.java

@@ -9,6 +9,8 @@ import com.ruoyi.web.modules.category.service.IBizInformationCategoryService;
9
 
9
 
10
 /**
10
 /**
11
  * 畜牧科技资源类型须为资讯类别下级(parentCode=004, categoryType=7)。
11
  * 畜牧科技资源类型须为资讯类别下级(parentCode=004, categoryType=7)。
12
+ * <p>
13
+ * 分页列表须在 {@code startPage()} 之前调用 {@link #assertAllowed(String)},否则 PageHelper 会分页到类别查询而非主列表。
12
  */
14
  */
13
 @Component
15
 @Component
14
 public class TechResourceTypeValidator
16
 public class TechResourceTypeValidator

+ 7 - 1
baqing-admin/src/test/java/com/ruoyi/web/modules/farming/controller/BizTechResourceControllerApiTest.java

@@ -39,6 +39,7 @@ import com.ruoyi.web.modules.farming.TechResourceTestSamples;
39
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
39
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
40
 import com.ruoyi.web.modules.farming.service.IBizTechResourceService;
40
 import com.ruoyi.web.modules.farming.service.IBizTechResourceService;
41
 import com.ruoyi.web.modules.farming.support.TechResourceRules;
41
 import com.ruoyi.web.modules.farming.support.TechResourceRules;
42
+import com.ruoyi.web.modules.farming.support.TechResourceTypeValidator;
42
 
43
 
43
 @ExtendWith(MockitoExtension.class)
44
 @ExtendWith(MockitoExtension.class)
44
 @MockitoSettings(strictness = Strictness.LENIENT)
45
 @MockitoSettings(strictness = Strictness.LENIENT)
@@ -52,6 +53,9 @@ class BizTechResourceControllerApiTest
52
     @Mock
53
     @Mock
53
     private IBizTechResourceService bizTechResourceService;
54
     private IBizTechResourceService bizTechResourceService;
54
 
55
 
56
+    @Mock
57
+    private TechResourceTypeValidator techResourceTypeValidator;
58
+
55
     @InjectMocks
59
     @InjectMocks
56
     private BizTechResourceController controller;
60
     private BizTechResourceController controller;
57
 
61
 
@@ -98,7 +102,9 @@ class BizTechResourceControllerApiTest
98
         mockMvc.perform(get("/techService/techResource/list")
102
         mockMvc.perform(get("/techService/techResource/list")
99
                 .param("resourceType", TechResourceRules.RESOURCE_TYPE_EXPERT)
103
                 .param("resourceType", TechResourceRules.RESOURCE_TYPE_EXPERT)
100
                 .param("resourceName", "张")
104
                 .param("resourceName", "张")
101
-                .param("publishStatus", "0"))
105
+                .param("publishStatus", "0")
106
+                .param("pageNum", "1")
107
+                .param("pageSize", "20"))
102
                 .andExpect(status().isOk())
108
                 .andExpect(status().isOk())
103
                 .andExpect(jsonPath("$.code").value(200));
109
                 .andExpect(jsonPath("$.code").value(200));
104
     }
110
     }