You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
8.5 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dongjian.dashboard.back.dao.ex.LevelRoleMapperExt">
<select id="checkExist" resultType="java.lang.Long">
SELECT
COUNT(1)
FROM
dashboard_level_role
WHERE
flag != 1 AND name = #{levelRoleName}
<if test="companyId != null">
AND company_id = #{companyId}
</if>
<if test="id != null">
AND id != #{id}
</if>
</select>
<select id="getListPage" resultType="com.dongjian.dashboard.back.vo.levelrole.LevelRolePageDTO">
SELECT
dlr.id,
dlr.company_id,
dlr.name levelRoleName,
dlr.remark,
dlr.created_at
FROM
dashboard_level_role dlr
WHERE
dlr.flag != 1
AND dlr.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="idList != null">
AND dlr.id IN <foreach collection="idList" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>
<if test="levelRoleName != null and levelRoleName != '' ">
AND dlr.name LIKE CONCAT('%',#{levelRoleName},'%')
</if>
ORDER BY dlr.id DESC
</select>
<!-- 全量查 Branch -->
<select id="selectAllBranches" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT
id,
name,
NULL AS parentId,
'BRANCH' AS type
FROM dashboard_level_branch
WHERE flag = 0 and company_id = #{companyId}
</select>
<!-- 全量查 Store -->
<select id="selectAllStores" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT s.id,
s.name,
r.branch_id AS parentId,
'STORE' AS type
FROM dashboard_level_store s
LEFT JOIN dashboard_level_relation_branch_store r
ON s.id = r.store_id
WHERE s.flag = 0 and s.company_id = #{companyId}
</select>
<!-- 全量查 Area -->
<select id="selectAllAreas" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT a.id,
a.name,
r.store_id AS parentId,
'AREA' AS type
FROM dashboard_level_area a
LEFT JOIN dashboard_level_relation_store_area r
ON a.id = r.area_id
WHERE a.flag = 0 and a.company_id = #{companyId}
</select>
<!-- 全量查 Site -->
<select id="selectAllSites" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT s.id,
s.name,
r.area_id AS parentId,
'SITE' AS type
FROM dashboard_level_site s
LEFT JOIN dashboard_level_relation_area_site r
ON s.id = r.site_id
WHERE s.flag = 0 and s.company_id = #{companyId}
</select>
<!-- 全量查 Building -->
<select id="selectAllBuildings" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT b.building_id AS id,
b.name,
r.site_id AS parentId,
'BUILDING' AS type
FROM basic_building b
LEFT JOIN dashboard_level_relation_site_building r
ON b.building_id = r.building_id
WHERE b.flag = 0 and b.company_id = #{companyId}
</select>
<!-- 查用户绑定节点 -->
<select id="selectUserRefs" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT o.ref_type AS type,
o.ref_id AS id
FROM dashboard_level_role_user u
INNER JOIN dashboard_level_role_object o
ON u.level_role_id = o.level_role_id
LEFT JOIN dashboard_level_branch b
ON o.ref_type = 'BRANCH' AND o.ref_id = b.id
LEFT JOIN dashboard_level_store s
ON o.ref_type = 'STORE' AND o.ref_id = s.id
LEFT JOIN dashboard_level_area a
ON o.ref_type = 'AREA' AND o.ref_id = a.id
LEFT JOIN dashboard_level_site si
ON o.ref_type = 'SITE' AND o.ref_id = si.id
LEFT JOIN basic_building bu
ON o.ref_type = 'BUILDING' AND o.ref_id = bu.building_id
WHERE u.user_id = #{userId}
AND CASE o.ref_type
WHEN 'BRANCH' THEN IFNULL(b.flag, 1)
WHEN 'STORE' THEN IFNULL(s.flag, 1)
WHEN 'AREA' THEN IFNULL(a.flag, 1)
WHEN 'SITE' THEN IFNULL(si.flag, 1)
WHEN 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0
</select>
<select id="getBoundLevelByRole" resultType="java.lang.String">
SELECT
CONCAT(dlro.ref_type, '-', dlro.ref_id) AS id
FROM dashboard_level_role_object dlro
INNER JOIN dashboard_level_role dlr
ON dlr.id = dlro.level_role_id
LEFT JOIN dashboard_level_branch b
ON dlro.ref_type = 'BRANCH' AND dlro.ref_id = b.id
LEFT JOIN dashboard_level_store s
ON dlro.ref_type = 'STORE' AND dlro.ref_id = s.id
LEFT JOIN dashboard_level_area a
ON dlro.ref_type = 'AREA' AND dlro.ref_id = a.id
LEFT JOIN dashboard_level_site si
ON dlro.ref_type = 'SITE' AND dlro.ref_id = si.id
LEFT JOIN basic_building bu
ON dlro.ref_type = 'BUILDING' AND dlro.ref_id = bu.building_id
WHERE dlr.flag != 1
AND dlr.id = #{roleId}
AND CASE dlro.ref_type
WHEN 'BRANCH' THEN IFNULL(b.flag, 1)
WHEN 'STORE' THEN IFNULL(s.flag, 1)
WHEN 'AREA' THEN IFNULL(a.flag, 1)
WHEN 'SITE' THEN IFNULL(si.flag, 1)
WHEN 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0
</select>
<select id="getAlreadyBoundUserPage" resultType="com.dongjian.dashboard.back.vo.levelrole.UserBoundRolePageDTO">
SELECT
dlr.id,
dlr.company_id,
dlr.name levelRoleName,
dlr.remark,
dlr.created_at,
dlru.id AS relationId,
dlru.ref_type,
buser.id AS userId,
buser.mobile_number,
buser.login_name,
buser.email
FROM
dashboard_level_role dlr
INNER JOIN dashboard_level_role_user dlru ON dlr.id = dlru.level_role_id
INNER JOIN data_center_aeon_admin.basic_user buser ON buser.id = dlru.user_id
WHERE
dlr.flag != 1
AND buser.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="targetUserId != null">
AND dlru.user_id = #{targetUserId}
</if>
ORDER BY dlru.created_at DESC, dlru.level_role_id DESC
</select>
<select id="getCanBeBoundUserPage" resultType="com.dongjian.dashboard.back.vo.levelrole.UserBindLevelRoleVO">
SELECT
u.id userId,
u.username,
u.email,
u.mobile_number
FROM
data_center_aeon_admin.basic_user u
WHERE u.id NOT IN (
SELECT DISTINCT
rru.user_id
FROM
data_center_aeon_admin.basic_role_user_relation rru
INNER JOIN data_center_aeon_admin.basic_role br ON br.id = rru.role_id
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 88 AND br.flag != 1
)
AND u.flag != 1 AND u.user_type = 2
AND u.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
</select>
<select id="checkLevelManager" resultType="java.lang.Integer">
SELECT
count(1)
FROM
data_center_aeon_admin.basic_role_user_relation rru
INNER JOIN data_center_aeon_admin.basic_role br ON br.id = rru.role_id
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 88 AND br.flag != 1 AND rru.user_id = #{userId}
</select>
</mapper>