From d25b4981ff23108d68e07d3329618b7acab4e5e5 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Thu, 28 May 2026 13:14:39 +0800 Subject: [PATCH] =?UTF-8?q?getBoundLevel=E6=8E=A5=E5=8F=A3=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../back/dao/ex/LevelRoleMapperExt.java | 2 - .../resources/mappers/ex/LevelMapperExt.xml | 123 +++++++++++++----- .../mappers/ex/LevelRoleMapperExt.xml | 44 ++----- .../back/dto/level/DeleteLevelParam.java | 2 +- .../back/dto/level/OptLevelParam.java | 4 +- .../back/dto/level/PageLevelSearchParam.java | 5 +- .../back/vo/level/BuildingPathDTO.java | 7 +- .../dashboard/back/vo/level/LevelPageDTO.java | 2 +- .../service/impl/LevelRoleServiceImpl.java | 50 ++++--- .../back/service/impl/LevelServiceImpl.java | 58 ++++++--- .../service/impl/OverviewServiceImpl.java | 19 ++- 11 files changed, 193 insertions(+), 123 deletions(-) diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java index 76334b2..2f5a68a 100644 --- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java +++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java @@ -40,6 +40,4 @@ public interface LevelRoleMapperExt extends DashboardLevelRoleMapper { List getCanBeBoundUserPage(BaseSearchParams pageSearchParam); Integer checkLevelManager(Long userId); - - List selectAllStoreAreas(Map levelMap); } \ No newline at end of file diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml index 526b0f4..1087731 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml @@ -6,15 +6,17 @@ dashboard_level_branch - dashboard_level_store_area_merge - dashboard_level_site + dashboard_level_store + dashboard_level_area + dashboard_level_site dashboard_level_branch - dashboard_level_store_area_merge + dashboard_level_store + dashboard_level_area @@ -168,8 +170,8 @@ GROUP_CONCAT(pa.`name`) AS parentNames, FROM - dashboard_level_store_area_merge base - LEFT JOIN dashboard_level_relation_branch_store_area rela ON base.`id` = rela.store_area_id + dashboard_level_store base + LEFT JOIN dashboard_level_relation_branch_store rela ON base.`id` = rela.store_id LEFT JOIN dashboard_level_branch pa ON rela.branch_id = pa.`id` WHERE @@ -181,10 +183,24 @@ GROUP_CONCAT(pa.id) AS parentIds, GROUP_CONCAT(pa.`name`) AS parentNames, + FROM + dashboard_level_area base + LEFT JOIN dashboard_level_relation_store_area rela ON base.`id` = rela.area_id + LEFT JOIN dashboard_level_store pa ON rela.store_id = pa.`id` + WHERE + + GROUP BY base.`id` + + + SELECT + 4 AS levelType, + GROUP_CONCAT(pa.id) AS parentIds, + GROUP_CONCAT(pa.`name`) AS parentNames, + FROM dashboard_level_site base - LEFT JOIN dashboard_level_relation_store_area_site rela ON base.`id` = rela.site_id - LEFT JOIN dashboard_level_store_area_merge pa ON rela.store_area_id = pa.`id` + LEFT JOIN dashboard_level_relation_area_site rela ON base.`id` = rela.site_id + LEFT JOIN dashboard_level_area pa ON rela.area_id = pa.`id` WHERE GROUP BY base.`id` @@ -197,7 +213,7 @@ SELECT DISTINCT building_id FROM ( - -- BUILDING(直接绑定) + -- BUILDING SELECT b.building_id FROM dashboard_level_role_user ru JOIN dashboard_level_role_object ro @@ -226,41 +242,69 @@ UNION ALL - -- STORE_AREA → SITE → BUILDING(核心替代 AREA / STORE) + -- AREA → SITE → BUILDING + SELECT b.building_id + FROM dashboard_level_role_user ru + JOIN dashboard_level_role_object ro + ON ru.level_role_id = ro.level_role_id + JOIN dashboard_level_area a + ON ro.ref_id = a.id AND a.flag = 0 + JOIN dashboard_level_relation_area_site ras + ON a.id = ras.area_id + JOIN dashboard_level_site s + ON ras.site_id = s.id AND s.flag = 0 + JOIN dashboard_level_relation_site_building rsb + ON s.id = rsb.site_id + JOIN basic_building b + ON rsb.building_id = b.building_id AND b.flag = 0 + WHERE ru.user_id = #{userId} + AND ro.ref_type = 'AREA' + + UNION ALL + + -- STORE → AREA → SITE → BUILDING SELECT b.building_id FROM dashboard_level_role_user ru JOIN dashboard_level_role_object ro ON ru.level_role_id = ro.level_role_id - JOIN dashboard_level_store_area_merge sam - ON ro.ref_id = sam.id AND sam.flag = 0 - JOIN dashboard_level_relation_store_area_site rsas - ON sam.id = rsas.store_area_id + JOIN dashboard_level_store st + ON ro.ref_id = st.id AND st.flag = 0 + JOIN dashboard_level_relation_store_area rsa + ON st.id = rsa.store_id + JOIN dashboard_level_area a + ON rsa.area_id = a.id AND a.flag = 0 + JOIN dashboard_level_relation_area_site ras + ON a.id = ras.area_id JOIN dashboard_level_site s - ON rsas.site_id = s.id AND s.flag = 0 + ON ras.site_id = s.id AND s.flag = 0 JOIN dashboard_level_relation_site_building rsb ON s.id = rsb.site_id JOIN basic_building b ON rsb.building_id = b.building_id AND b.flag = 0 WHERE ru.user_id = #{userId} - AND ro.ref_type = 'STORE_AREA' + AND ro.ref_type = 'STORE' UNION ALL - -- BRANCH → STORE_AREA → SITE → BUILDING + -- BRANCH → STORE → AREA → SITE → BUILDING SELECT b.building_id FROM dashboard_level_role_user ru JOIN dashboard_level_role_object ro ON ru.level_role_id = ro.level_role_id JOIN dashboard_level_branch br ON ro.ref_id = br.id AND br.flag = 0 - JOIN dashboard_level_relation_branch_store_area rbsa - ON br.id = rbsa.branch_id - JOIN dashboard_level_store_area_merge sam - ON rbsa.store_area_id = sam.id AND sam.flag = 0 - JOIN dashboard_level_relation_store_area_site rsas - ON sam.id = rsas.store_area_id + JOIN dashboard_level_relation_branch_store rbs + ON br.id = rbs.branch_id + JOIN dashboard_level_store st + ON rbs.store_id = st.id AND st.flag = 0 + JOIN dashboard_level_relation_store_area rsa + ON st.id = rsa.store_id + JOIN dashboard_level_area a + ON rsa.area_id = a.id AND a.flag = 0 + JOIN dashboard_level_relation_area_site ras + ON a.id = ras.area_id JOIN dashboard_level_site s - ON rsas.site_id = s.id AND s.flag = 0 + ON ras.site_id = s.id AND s.flag = 0 JOIN dashboard_level_relation_site_building rsb ON s.id = rsb.site_id JOIN basic_building b @@ -268,7 +312,7 @@ WHERE ru.user_id = #{userId} AND ro.ref_type = 'BRANCH' - ) t + ) t; - -