Bladeren bron

修复分页问题

wwh 1 maand geleden
bovenliggende
commit
f8f4403931

+ 8 - 0
baqing-admin/src/main/java/com/ruoyi/web/modules/diagnosis/controller/BizMedicalResourceController.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.diagnosis.domain.BizMedicalResource;
21 21
 import com.ruoyi.web.modules.diagnosis.service.IBizMedicalResourceService;
22
+import com.ruoyi.web.modules.diagnosis.support.MedicalResourceTypeValidator;
23
+import com.ruoyi.web.modules.diagnosis.support.MedicalResourceValidation;
22 24
 
23 25
 /**
24 26
  * 畜牧医疗资源管理
@@ -30,6 +32,9 @@ public class BizMedicalResourceController extends BaseController
30 32
     @Autowired
31 33
     private IBizMedicalResourceService bizMedicalResourceService;
32 34
 
35
+    @Autowired
36
+    private MedicalResourceTypeValidator medicalResourceTypeValidator;
37
+
33 38
     @PreAuthorize("@ss.hasPermi('diseaseTreatment:medicalResource:list')")
34 39
     @GetMapping("/list")
35 40
     public TableDataInfo list(BizMedicalResource query,
@@ -40,6 +45,9 @@ public class BizMedicalResourceController extends BaseController
40 45
             query.setQueryPublishStatus(listPublishStatus);
41 46
             query.setPublishStatus(null);
42 47
         }
48
+        // 须在 startPage 之前完成校验:assertAllowed 会查库,否则 PageHelper 分页会落在类别查询上
49
+        MedicalResourceValidation.validateListQuery(query);
50
+        medicalResourceTypeValidator.assertAllowed(query.getResourceType());
43 51
         startPage();
44 52
         List<BizMedicalResource> list = bizMedicalResourceService.selectBizMedicalResourceList(query);
45 53
         return getDataTable(list);

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

@@ -53,8 +53,7 @@ public class BizMedicalResourceServiceImpl implements IBizMedicalResourceService
53 53
     @Override
54 54
     public List<BizMedicalResource> selectBizMedicalResourceList(BizMedicalResource query)
55 55
     {
56
-        MedicalResourceValidation.validateListQuery(query);
57
-        medicalResourceTypeValidator.assertAllowed(query.getResourceType());
56
+        // 列表入参校验与类型校验须在 Controller 中、startPage() 之前完成(避免 PageHelper 分页错位)
58 57
         List<BizMedicalResource> list = bizMedicalResourceMapper.selectBizMedicalResourceList(query);
59 58
         if (list != null)
60 59
         {

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

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

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

@@ -39,6 +39,7 @@ import com.ruoyi.web.modules.diagnosis.MedicalResourceTestSamples;
39 39
 import com.ruoyi.web.modules.diagnosis.domain.BizMedicalResource;
40 40
 import com.ruoyi.web.modules.diagnosis.service.IBizMedicalResourceService;
41 41
 import com.ruoyi.web.modules.diagnosis.support.MedicalResourceRules;
42
+import com.ruoyi.web.modules.diagnosis.support.MedicalResourceTypeValidator;
42 43
 
43 44
 @ExtendWith(MockitoExtension.class)
44 45
 @MockitoSettings(strictness = Strictness.LENIENT)
@@ -52,6 +53,9 @@ class BizMedicalResourceControllerApiTest
52 53
     @Mock
53 54
     private IBizMedicalResourceService bizMedicalResourceService;
54 55
 
56
+    @Mock
57
+    private MedicalResourceTypeValidator medicalResourceTypeValidator;
58
+
55 59
     @InjectMocks
56 60
     private BizMedicalResourceController controller;
57 61
 
@@ -100,7 +104,9 @@ class BizMedicalResourceControllerApiTest
100 104
         mockMvc.perform(get("/diseaseTreatment/medicalResource/list")
101 105
                 .param("resourceType", MedicalResourceRules.RESOURCE_TYPE_VET)
102 106
                 .param("resourceName", "张")
103
-                .param("publishStatus", "0"))
107
+                .param("publishStatus", "0")
108
+                .param("pageNum", "1")
109
+                .param("pageSize", "20"))
104 110
                 .andExpect(status().isOk())
105 111
                 .andExpect(jsonPath("$.code").value(200));
106 112
     }