SubAccountStoreMapper.xml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="shop.alien.mapper.SubAccountStoreMapper">
  6. <!-- 根据用户ID查询子账号关联的门店列表(包含主账号的门店) -->
  7. <select id="selectSubAccountStoreListByUserId" resultType="shop.alien.entity.store.vo.SubAccountStoreListVo">
  8. -- 查询子账号通过store_platform_user_role关联的门店(当前用户作为子账号的门店)
  9. SELECT
  10. si.id AS storeId,
  11. si.store_name COLLATE utf8mb4_unicode_ci AS storeName,
  12. si.store_address COLLATE utf8mb4_unicode_ci AS storeAddress,
  13. si.store_tel COLLATE utf8mb4_unicode_ci AS storeTel,
  14. si.business_status AS businessStatus,
  15. spur.role_id AS roleId,
  16. spr.role_name COLLATE utf8mb4_unicode_ci AS roleName,
  17. spur.user_id AS userId,
  18. spur.account_name COLLATE utf8mb4_unicode_ci AS accountName,
  19. su.phone COLLATE utf8mb4_unicode_ci AS phone,
  20. spur.status AS status
  21. FROM
  22. store_platform_user_role spur
  23. INNER JOIN store_user su ON spur.user_id = su.id
  24. INNER JOIN store_info si ON spur.store_id = si.id
  25. LEFT JOIN store_platform_role spr ON spur.role_id = spr.role_id
  26. AND (spr.del_flag = '0' OR spr.del_flag IS NULL)
  27. WHERE
  28. spur.user_id = #{userId}
  29. AND spur.delete_flag = 0
  30. AND su.delete_flag = 0
  31. AND si.delete_flag = 0
  32. UNION
  33. -- 查询主账号的门店(通过store_user.store_id关联)
  34. -- 如果主账号没有门店,只查主账号信息(门店字段为NULL)
  35. SELECT
  36. si_main.id AS storeId,
  37. si_main.store_name COLLATE utf8mb4_unicode_ci AS storeName,
  38. si_main.store_address COLLATE utf8mb4_unicode_ci AS storeAddress,
  39. si_main.store_tel COLLATE utf8mb4_unicode_ci AS storeTel,
  40. si_main.business_status AS businessStatus,
  41. NULL AS roleId,
  42. NULL AS roleName,
  43. su_main.id AS userId,
  44. su_main.name COLLATE utf8mb4_unicode_ci AS accountName,
  45. su_main.phone COLLATE utf8mb4_unicode_ci AS phone,
  46. NULL AS status
  47. FROM
  48. store_user su_main
  49. LEFT JOIN store_info si_main ON su_main.store_id = si_main.id
  50. AND (si_main.delete_flag = 0 OR si_main.delete_flag IS NULL)
  51. WHERE
  52. su_main.id = #{userId}
  53. AND su_main.delete_flag = 0
  54. AND (
  55. -- 如果主账号在store_platform_user_role表中没有记录,或者是主账号但没有门店
  56. NOT EXISTS (
  57. SELECT 1 FROM store_platform_user_role spur
  58. WHERE spur.user_id = #{userId}
  59. AND spur.delete_flag = 0
  60. )
  61. OR
  62. -- 如果主账号在store_platform_user_role表中有记录,但没有门店(store_id为NULL或对应的store_info不存在)
  63. (su_main.store_id IS NULL OR NOT EXISTS (
  64. SELECT 1 FROM store_info si_check
  65. WHERE si_check.id = su_main.store_id
  66. AND si_check.delete_flag = 0
  67. ))
  68. )
  69. ORDER BY storeId DESC
  70. </select>
  71. <!-- 根据用户ID查询子账号关联的门店列表(包含主账号的门店) -->
  72. <select id="selectSubAccountStoreListByUserIdTwo" resultType="shop.alien.entity.store.vo.SubAccountStoreListVo">
  73. -- 查询子账号通过store_platform_user_role关联的门店
  74. SELECT
  75. si.id AS storeId,
  76. si.store_name COLLATE utf8mb4_unicode_ci AS storeName,
  77. si.store_address COLLATE utf8mb4_unicode_ci AS storeAddress,
  78. si.store_tel COLLATE utf8mb4_unicode_ci AS storeTel,
  79. si.business_status AS businessStatus,
  80. spur.role_id AS roleId,
  81. spr.role_name COLLATE utf8mb4_unicode_ci AS roleName,
  82. spur.user_id AS userId,
  83. spur.account_name COLLATE utf8mb4_unicode_ci AS accountName,
  84. su.phone COLLATE utf8mb4_unicode_ci AS phone,
  85. spur.status AS status
  86. FROM
  87. store_platform_user_role spur
  88. INNER JOIN store_user su ON spur.user_id = su.id
  89. INNER JOIN store_info si ON spur.store_id = si.id
  90. LEFT JOIN store_platform_role spr ON spur.role_id = spr.role_id
  91. AND (spr.del_flag = '0' OR spr.del_flag IS NULL)
  92. WHERE
  93. spur.user_id = #{userId}
  94. AND spur.delete_flag = 0
  95. AND su.delete_flag = 0
  96. AND si.delete_flag = 0
  97. UNION
  98. -- 查询主账号的门店(通过store_user.store_id关联)
  99. SELECT
  100. si_main.id AS storeId,
  101. si_main.store_name COLLATE utf8mb4_unicode_ci AS storeName,
  102. si_main.store_address COLLATE utf8mb4_unicode_ci AS storeAddress,
  103. si_main.store_tel COLLATE utf8mb4_unicode_ci AS storeTel,
  104. si_main.business_status AS businessStatus,
  105. NULL AS roleId,
  106. NULL AS roleName,
  107. su_main.id AS userId,
  108. su_main.name COLLATE utf8mb4_unicode_ci AS accountName,
  109. su_main.phone COLLATE utf8mb4_unicode_ci AS phone,
  110. NULL AS status
  111. FROM
  112. store_user su_main
  113. INNER JOIN store_info si_main ON su_main.store_id = si_main.id
  114. WHERE
  115. (
  116. -- 如果传入的是子账号,查询其主账号的门店
  117. (su_main.id = (SELECT id FROM store_user WHERE id = #{userId} AND account_type = 2 AND delete_flag = 0 LIMIT 1))
  118. OR
  119. -- 如果传入的是主账号,查询自己的门店
  120. (su_main.id = #{userId} AND su_main.account_type = 1)
  121. )
  122. AND su_main.delete_flag = 0
  123. AND si_main.delete_flag = 0
  124. AND su_main.store_id IS NOT NULL
  125. ORDER BY storeId DESC
  126. </select>
  127. </mapper>