dashboard_level_branch
dashboard_level_store_area_merge
dashboard_level_site
dashboard_level_branch
dashboard_level_store_area_merge
SELECT
COUNT(1)
FROM
WHERE `flag` = 0 AND name = #{levelName} AND company_id = #{companyId}
AND id != #{id}
SELECT
COUNT(1)
FROM
WHERE `flag` = 0 AND company_id = #{companyId}
AND id IN #{item}
INSERT INTO
(company_id, name, `code`, remark, created_by, created_at)
VALUES
(
#{companyId},
#{name},
#{code}
NULL
,
#{remark}
NULL
,
#{createdBy},
#{createdAt}
)
INSERT INTO
${tableName}
(${parentField}, ${childField}, created_by, created_at)
VALUES
(#{parentId}, #{childId}, #{createdBy}, #{createdAt})
delete from ${tableName} WHERE ${childField} = #{childId}
UPDATE
SET
name = #{name},
`code` = #{code},
remark = #{remark},
updated_at = #{updatedAt},
updated_by = #{updatedBy}
WHERE id = #{id}
SELECT
COUNT(1)
FROM
${param.tableName}
WHERE ${param.parentField} IN #{item}
UPDATE
${tableName}
SET
`flag` = 1
WHERE id IN #{item}
delete from ${param.tableName}
WHERE ${param.childField}
IN #{item}
base.`id`,
base.company_id,
base.`name` AS levelName,
base.`code` AS levelCode,
base.remark,
base.created_by,
base.created_at,
base.updated_by,
base.updated_at
base.flag =0
AND base.`id` IN #{item}
AND base.`name` like CONCAT('%',#{levelName},'%')
AND base.`code` like CONCAT('%',#{levelCode},'%')
AND pa.id IN #{item}
AND base.company_id IN #{item}
SELECT
1 AS levelType,
FROM
dashboard_level_branch base
WHERE
SELECT
2 AS levelType,
GROUP_CONCAT(pa.id) AS parentIds,
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
LEFT JOIN dashboard_level_branch pa ON rela.branch_id = pa.`id`
WHERE
GROUP BY base.`id`
SELECT
3 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`
WHERE
GROUP BY base.`id`
order BY base.`id` desc
SELECT DISTINCT building_id
FROM (
-- 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 basic_building b
ON ro.ref_id = b.building_id
WHERE ru.user_id = #{userId}
AND ro.ref_type = 'BUILDING'
AND b.flag = 0
UNION ALL
-- 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_site s
ON ro.ref_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 = 'SITE'
UNION ALL
-- STORE_AREA → SITE → BUILDING(核心替代 AREA / STORE)
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_site s
ON rsas.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'
UNION ALL
-- 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_site s
ON rsas.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 = 'BRANCH'
) t
SELECT
br.id AS branch_id,
br.name AS branch_name,
sam.id AS store_area_id,
sam.name AS store_area_name,
s.id AS site_id,
s.name AS site_name,
b.building_id,
b.name AS building_name
FROM dashboard_level_branch br
LEFT JOIN dashboard_level_relation_branch_store_area rbsa ON rbsa.branch_id = br.id AND br.flag = 0 AND br.company_id = #{companyId}
LEFT JOIN dashboard_level_store_area_merge sam ON sam.id = rbsa.store_area_id AND sam.flag = 0
LEFT JOIN dashboard_level_relation_store_area_site rsas ON rsas.store_area_id = sam.id
LEFT JOIN dashboard_level_site s ON s.id = rsas.site_id AND s.flag = 0
LEFT JOIN dashboard_level_relation_site_building rsb ON rsb.site_id = s.id
LEFT JOIN basic_building b ON b.building_id = rsb.building_id AND b.flag = 0
FROM basic_building b
JOIN dashboard_level_relation_site_building rsb ON b.building_id = rsb.building_id AND b.flag = 0 AND b.company_id = #{companyId}
JOIN dashboard_level_site s ON rsb.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_store_area_site rsas ON s.id = rsas.site_id
JOIN dashboard_level_store_area_merge sam ON rsas.store_area_id = sam.id AND sam.flag = 0
JOIN dashboard_level_relation_branch_store_area rbsa ON sam.id = rbsa.store_area_id
JOIN dashboard_level_branch br ON rbsa.branch_id = br.id AND br.flag = 0
AND b.building_id IN #{item}
order by br.id
delete from dashboard_level_relation_site_building WHERE site_id = #{siteId}