wwh 1 месяц назад
Родитель
Сommit
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
 import com.ruoyi.common.enums.BusinessType;
19
 import com.ruoyi.common.enums.BusinessType;
20
 import com.ruoyi.web.modules.diagnosis.domain.BizMedicalResource;
20
 import com.ruoyi.web.modules.diagnosis.domain.BizMedicalResource;
21
 import com.ruoyi.web.modules.diagnosis.service.IBizMedicalResourceService;
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
     @Autowired
32
     @Autowired
31
     private IBizMedicalResourceService bizMedicalResourceService;
33
     private IBizMedicalResourceService bizMedicalResourceService;
32
 
34
 
35
+    @Autowired
36
+    private MedicalResourceTypeValidator medicalResourceTypeValidator;
37
+
33
     @PreAuthorize("@ss.hasPermi('diseaseTreatment:medicalResource:list')")
38
     @PreAuthorize("@ss.hasPermi('diseaseTreatment:medicalResource:list')")
34
     @GetMapping("/list")
39
     @GetMapping("/list")
35
     public TableDataInfo list(BizMedicalResource query,
40
     public TableDataInfo list(BizMedicalResource query,
@@ -40,6 +45,9 @@ public class BizMedicalResourceController 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
+        MedicalResourceValidation.validateListQuery(query);
50
+        medicalResourceTypeValidator.assertAllowed(query.getResourceType());
43
         startPage();
51
         startPage();
44
         List<BizMedicalResource> list = bizMedicalResourceService.selectBizMedicalResourceList(query);
52
         List<BizMedicalResource> list = bizMedicalResourceService.selectBizMedicalResourceList(query);
45
         return getDataTable(list);
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
     @Override
53
     @Override
54
     public List<BizMedicalResource> selectBizMedicalResourceList(BizMedicalResource query)
54
     public List<BizMedicalResource> selectBizMedicalResourceList(BizMedicalResource query)
55
     {
55
     {
56
-        MedicalResourceValidation.validateListQuery(query);
57
-        medicalResourceTypeValidator.assertAllowed(query.getResourceType());
56
+        // 列表入参校验与类型校验须在 Controller 中、startPage() 之前完成(避免 PageHelper 分页错位)
58
         List<BizMedicalResource> list = bizMedicalResourceMapper.selectBizMedicalResourceList(query);
57
         List<BizMedicalResource> list = bizMedicalResourceMapper.selectBizMedicalResourceList(query);
59
         if (list != null)
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
  * 畜牧医疗资源类型须为资讯类别下级(parentCode=004, categoryType=6)。
11
  * 畜牧医疗资源类型须为资讯类别下级(parentCode=004, categoryType=6)。
12
+ * <p>
13
+ * 分页列表须在 {@code startPage()} 之前调用 {@link #assertAllowed(String)},否则 PageHelper 会分页到类别查询而非主列表。
12
  */
14
  */
13
 @Component
15
 @Component
14
 public class MedicalResourceTypeValidator
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
 import com.ruoyi.web.modules.diagnosis.domain.BizMedicalResource;
39
 import com.ruoyi.web.modules.diagnosis.domain.BizMedicalResource;
40
 import com.ruoyi.web.modules.diagnosis.service.IBizMedicalResourceService;
40
 import com.ruoyi.web.modules.diagnosis.service.IBizMedicalResourceService;
41
 import com.ruoyi.web.modules.diagnosis.support.MedicalResourceRules;
41
 import com.ruoyi.web.modules.diagnosis.support.MedicalResourceRules;
42
+import com.ruoyi.web.modules.diagnosis.support.MedicalResourceTypeValidator;
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 BizMedicalResourceControllerApiTest
52
     @Mock
53
     @Mock
53
     private IBizMedicalResourceService bizMedicalResourceService;
54
     private IBizMedicalResourceService bizMedicalResourceService;
54
 
55
 
56
+    @Mock
57
+    private MedicalResourceTypeValidator medicalResourceTypeValidator;
58
+
55
     @InjectMocks
59
     @InjectMocks
56
     private BizMedicalResourceController controller;
60
     private BizMedicalResourceController controller;
57
 
61
 
@@ -100,7 +104,9 @@ class BizMedicalResourceControllerApiTest
100
         mockMvc.perform(get("/diseaseTreatment/medicalResource/list")
104
         mockMvc.perform(get("/diseaseTreatment/medicalResource/list")
101
                 .param("resourceType", MedicalResourceRules.RESOURCE_TYPE_VET)
105
                 .param("resourceType", MedicalResourceRules.RESOURCE_TYPE_VET)
102
                 .param("resourceName", "张")
106
                 .param("resourceName", "张")
103
-                .param("publishStatus", "0"))
107
+                .param("publishStatus", "0")
108
+                .param("pageNum", "1")
109
+                .param("pageSize", "20"))
104
                 .andExpect(status().isOk())
110
                 .andExpect(status().isOk())
105
                 .andExpect(jsonPath("$.code").value(200));
111
                 .andExpect(jsonPath("$.code").value(200));
106
     }
112
     }