SubAccountStoreMapper.xml 6.0 KB

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