blocked-gateway.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import { get, post } from '@/core/http/http-client'
  2. const ROUTE_LIST = '/wanlshop/user/blockedList'
  3. const ROUTE_TOGGLE = '/wanlshop/user/blockedUser'
  4. const ROUTE_IS_BLOCKED = '/wanlshop/user/isblocked'
  5. function parseIsBlocked(payload) {
  6. if (!payload || typeof payload !== 'object') return false
  7. if (payload.is_blocked !== undefined) return Number(payload.is_blocked) === 1
  8. if (payload.data && payload.data.is_blocked !== undefined) {
  9. return Number(payload.data.is_blocked) === 1
  10. }
  11. return false
  12. }
  13. function normalizeBlockedList(payload) {
  14. if (Array.isArray(payload)) return payload
  15. if (!payload || typeof payload !== 'object') return []
  16. if (Array.isArray(payload.data)) return payload.data
  17. if (Array.isArray(payload.list)) return payload.list
  18. return []
  19. }
  20. export function blockedUserAvatar(item) {
  21. return (
  22. (item && item.blocked_user && item.blocked_user.avatar) ||
  23. (item && item.user && item.user.avatar) ||
  24. ''
  25. )
  26. }
  27. export function blockedUserId(item) {
  28. const id =
  29. (item && item.blocked_id) ||
  30. (item && item.blocked_user && item.blocked_user.id) ||
  31. (item && item.user && item.user.id)
  32. if (id == null || id === '') return ''
  33. return id
  34. }
  35. export function blockedUserNickname(item, fallback = '') {
  36. return (
  37. (item && item.blocked_user && item.blocked_user.nickname) ||
  38. (item && item.user && item.user.nickname) ||
  39. fallback
  40. )
  41. }
  42. export async function fetchBlockedList() {
  43. const { data, raw } = await get(ROUTE_LIST)
  44. if (Array.isArray(data)) return data
  45. const payload = data != null ? data : raw?.data
  46. if (Array.isArray(payload)) return payload
  47. if (payload && Array.isArray(payload.list)) return payload.list
  48. return normalizeBlockedList(payload)
  49. }
  50. /**
  51. * 查询当前登录用户是否已拉黑目标用户。
  52. * @param {string|number} userNo 目标 user_no
  53. * @param {string|number} blockedUserId 目标用户数据库 id
  54. */
  55. export async function fetchIsBlocked(userNo, blockedUserId) {
  56. if (!userNo || blockedUserId == null || blockedUserId === '') return false
  57. const { data, raw } = await post(ROUTE_IS_BLOCKED, {
  58. user_no: userNo,
  59. blocked_id: blockedUserId
  60. })
  61. const payload = data != null ? data : raw?.data
  62. return parseIsBlocked(payload)
  63. }
  64. /** @param {string|number} blockedId @param {0|1} handType 0 取消拉黑 1 拉黑 */
  65. export async function toggleBlockedUser(blockedId, handType) {
  66. const { data, msg } = await post(ROUTE_TOGGLE, {
  67. blocked_id: blockedId,
  68. hand_type: handType
  69. })
  70. return { data, msg }
  71. }
  72. /** @param {string|number} blockedId */
  73. export async function blockUser(blockedId) {
  74. return toggleBlockedUser(blockedId, 1)
  75. }
  76. /** @param {string|number} blockedId */
  77. export async function unblockUser(blockedId) {
  78. return toggleBlockedUser(blockedId, 0)
  79. }