wwh преди 1 месец
родител
ревизия
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 19
 import com.ruoyi.common.enums.BusinessType;
20 20
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
21 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 32
     @Autowired
31 33
     private IBizTechResourceService bizTechResourceService;
32 34
 
35
+    @Autowired
36
+    private TechResourceTypeValidator techResourceTypeValidator;
37
+
33 38
     @PreAuthorize("@ss.hasPermi('techService:techResource:list')")
34 39
     @GetMapping("/list")
35 40
     public TableDataInfo list(BizTechResource query,
@@ -40,6 +45,9 @@ public class BizTechResourceController extends BaseController
40 45
             query.setQueryPublishStatus(listPublishStatus);
41 46
             query.setPublishStatus(null);
42 47
         }
48
+        // 须在 startPage 之前完成校验:assertAllowed 会查库,否则 PageHelper 分页会落在类别查询上
49
+        TechResourceValidation.validateListQuery(query);
50
+        techResourceTypeValidator.assertAllowed(query.getResourceType());
43 51
         startPage();
44 52
         List<BizTechResource> list = bizTechResourceService.selectBizTechResourceList(query);
45 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 57
     @Override
58 58
     public List<BizTechResource> selectBizTechResourceList(BizTechResource query)
59 59
     {
60
-        TechResourceValidation.validateListQuery(query);
61
-        techResourceTypeValidator.assertAllowed(query.getResourceType());
60
+        // 列表入参校验与类型校验须在 Controller 中、startPage() 之前完成(避免 PageHelper 分页错位)
62 61
         List<BizTechResource> list = bizTechResourceMapper.selectBizTechResourceList(query);
63 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 11
  * 畜牧科技资源类型须为资讯类别下级(parentCode=004, categoryType=7)。
12
+ * <p>
13
+ * 分页列表须在 {@code startPage()} 之前调用 {@link #assertAllowed(String)},否则 PageHelper 会分页到类别查询而非主列表。
12 14
  */
13 15
 @Component
14 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 39
 import com.ruoyi.web.modules.farming.domain.BizTechResource;
40 40
 import com.ruoyi.web.modules.farming.service.IBizTechResourceService;
41 41
 import com.ruoyi.web.modules.farming.support.TechResourceRules;
42
+import com.ruoyi.web.modules.farming.support.TechResourceTypeValidator;
42 43
 
43 44
 @ExtendWith(MockitoExtension.class)
44 45
 @MockitoSettings(strictness = Strictness.LENIENT)
@@ -52,6 +53,9 @@ class BizTechResourceControllerApiTest
52 53
     @Mock
53 54
     private IBizTechResourceService bizTechResourceService;
54 55
 
56
+    @Mock
57
+    private TechResourceTypeValidator techResourceTypeValidator;
58
+
55 59
     @InjectMocks
56 60
     private BizTechResourceController controller;
57 61
 
@@ -98,7 +102,9 @@ class BizTechResourceControllerApiTest
98 102
         mockMvc.perform(get("/techService/techResource/list")
99 103
                 .param("resourceType", TechResourceRules.RESOURCE_TYPE_EXPERT)
100 104
                 .param("resourceName", "张")
101
-                .param("publishStatus", "0"))
105
+                .param("publishStatus", "0")
106
+                .param("pageNum", "1")
107
+                .param("pageSize", "20"))
102 108
                 .andExpect(status().isOk())
103 109
                 .andExpect(jsonPath("$.code").value(200));
104 110
     }