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.
275 lines
9.3 KiB
275 lines
9.3 KiB
import tui from './httpRequest'
|
|
|
|
function unwrap(res) {
|
|
if (!res) return null
|
|
if (res.success === false) {
|
|
uni.showToast({ title: res.message || '请求失败', icon: 'none', duration: 2000 })
|
|
return null
|
|
}
|
|
return res.result !== undefined ? res.result : res
|
|
}
|
|
|
|
function unwrapSilent(res) {
|
|
if (!res || res.success === false) return null
|
|
return res.result !== undefined ? res.result : res
|
|
}
|
|
|
|
function unwrapIeProfileSave(res) {
|
|
if (!res) return null
|
|
if (res.success === false) {
|
|
uni.showToast({ title: res.message || '请求失败', icon: 'none', duration: 1500 })
|
|
return null
|
|
}
|
|
return res.result !== undefined ? res.result : res
|
|
}
|
|
|
|
function isSuccessfulCode(code) {
|
|
if (code === undefined || code === null || code === '') return true
|
|
const value = Number(code)
|
|
if (Number.isNaN(value)) return true
|
|
return value === 200
|
|
}
|
|
|
|
function pickRealNameMessage(res, payload) {
|
|
const sources = [payload, res]
|
|
for (const item of sources) {
|
|
if (!item || typeof item !== 'object') continue
|
|
const message = item.message || item.msg || item.failReason || item.errorMessage || item.errorMsg
|
|
if (message) return message
|
|
}
|
|
return ''
|
|
}
|
|
|
|
function parseBooleanValue(value) {
|
|
if (typeof value === 'boolean') return value
|
|
if (typeof value === 'number') return value === 1
|
|
if (typeof value === 'string') {
|
|
const normalized = value.trim().toLowerCase()
|
|
if (!normalized) return null
|
|
if (['true', '1'].indexOf(normalized) !== -1) return true
|
|
if (['false', '0'].indexOf(normalized) !== -1) return false
|
|
}
|
|
return null
|
|
}
|
|
|
|
function getRealNameVerified(payload) {
|
|
const direct = parseBooleanValue(payload)
|
|
if (direct !== null) return direct
|
|
if (payload && typeof payload === 'object') {
|
|
const realNameVerified = parseBooleanValue(payload.realNameVerified)
|
|
if (realNameVerified !== null) return realNameVerified
|
|
const verified = parseBooleanValue(payload.verified)
|
|
if (verified !== null) return verified
|
|
}
|
|
return false
|
|
}
|
|
|
|
function unwrapIeRealName(res) {
|
|
if (!res) return null
|
|
const payload = res.result !== undefined ? res.result : (res.data !== undefined ? res.data : res)
|
|
const message = pickRealNameMessage(res, payload)
|
|
if (res.success === false || !isSuccessfulCode(res.code)) {
|
|
return {
|
|
realNameVerified: false,
|
|
verified: false,
|
|
message: message || '实名认证未通过,请稍后重试'
|
|
}
|
|
}
|
|
const verified = getRealNameVerified(payload)
|
|
if (payload && typeof payload === 'object') {
|
|
return {
|
|
...payload,
|
|
realNameVerified: verified,
|
|
verified
|
|
}
|
|
}
|
|
return {
|
|
realNameVerified: verified,
|
|
verified,
|
|
message
|
|
}
|
|
}
|
|
|
|
function unwrapIeHome(res) {
|
|
if (!res) return null
|
|
if (res.success === false) {
|
|
const message = res.message || '请求失败'
|
|
if (message.indexOf('i/e 身份已被封禁') !== -1 || message.indexOf('ie 身份已被封禁') !== -1) {
|
|
return { banned: true, message }
|
|
}
|
|
uni.showToast({ title: message, icon: 'none', duration: 2000 })
|
|
return null
|
|
}
|
|
return res.result !== undefined ? res.result : res
|
|
}
|
|
|
|
export function ieHome() {
|
|
return tui.request('/app/ie/home', 'GET', {}, false, false, true).then(unwrapIeHome)
|
|
}
|
|
|
|
export function getIeUnreadCount() {
|
|
return tui.request('/app/ie/unread-count', 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function markIeRoomRead(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/read`, 'POST', {}, false, true, true).then(unwrapSilent).catch(() => null)
|
|
}
|
|
|
|
export function updateIeStatus(data) {
|
|
return tui.request('/app/ie/status', 'POST', data, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeProfile() {
|
|
return tui.request('/app/ie/profile', 'GET', {}, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeUserProfile(targetUserId) {
|
|
return tui.request(`/app/ie/profiles/${targetUserId}`, 'GET', {}, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeRoomTargetProfile(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/profile`, 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function saveIeProfile(data) {
|
|
return tui.request('/app/ie/profile', 'POST', data, false, false, false).then(unwrapIeProfileSave)
|
|
}
|
|
|
|
export function verifyIeRealName(data) {
|
|
return tui.request('/app/ie/real-name/verify', 'POST', data, false, false, true).then(unwrapIeRealName)
|
|
}
|
|
|
|
export function verifyIeStudentCard(data) {
|
|
return tui.request('/app/ie/real-name/student-card/verify', 'POST', data, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function getIeRealNameAuditSetting() {
|
|
return tui.request('/app/ie/real-name/audit-setting', 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function startIeMatch(data) {
|
|
return tui.request('/app/ie/match/start', 'POST', data, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function matchIeProfile(targetUserId) {
|
|
return tui.request(`/app/ie/profiles/${targetUserId}/match`, 'POST', {}, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function getIeCompanionIntents(limit = 50) {
|
|
return tui.request('/app/ie/companion-intents', 'GET', { limit }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function sendIePresence(roomId, data) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/presence`, 'POST', data, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function finishIeRoom(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/finish`, 'POST', {}, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function reportIeRoom(roomId, data) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/report`, 'POST', data, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function blockIeUser(blockedUserId, reason = '') {
|
|
return tui.request(`/app/ie/block/${blockedUserId}`, 'POST', { reason }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function unblockIeUser(blockedUserId) {
|
|
return tui.request(`/app/ie/block/${blockedUserId}`, 'DELETE', {}, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function getIeBlockStatus(blockedUserId) {
|
|
return tui.request(`/app/ie/block/${blockedUserId}/status`, 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function blockIeRoomTarget(roomId, reason = '') {
|
|
return tui.request(`/app/ie/rooms/${roomId}/block`, 'POST', { reason }, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function unblockIeRoomTarget(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/block`, 'DELETE', {}, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function getIeRoomBlockStatus(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/block/status`, 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function fetchIeOffline() {
|
|
return tui.request('/app/ie/offline', 'GET', {}, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function pageIeMessages(roomId, pageNumber = 1, pageSize = 20) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/messages/page`, 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function sendIeMessage(roomId, data) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/messages`, 'POST', data, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function pageIeRecords(pageNumber = 1, pageSize = 10) {
|
|
return tui.request('/app/ie/records/page', 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function pageIeMatches(pageNumber = 1, pageSize = 10) {
|
|
return tui.request('/app/ie/matches/page', 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function deleteIeRecord(recordId) {
|
|
return tui.request(`/app/ie/records/${recordId}`, 'DELETE', {}, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function pageIeReports(pageNumber = 1, pageSize = 10) {
|
|
return tui.request('/app/ie/reports/page', 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function pageIeBlocks(pageNumber = 1, pageSize = 10) {
|
|
return tui.request('/app/ie/blocks/page', 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeRoomStreak(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/streak`, 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function startIeQuiz(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/quiz/start`, 'POST', {}, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeQuizCurrent(roomId) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/quiz/current`, 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function answerIeQuiz(roomId, answers) {
|
|
return tui.request(`/app/ie/rooms/${roomId}/quiz/answer`, 'POST', { answers }, false, false, true).then(unwrap)
|
|
}
|
|
|
|
export function getIeDailyQuestion() {
|
|
return tui.request('/app/ie/daily-question/today', 'GET', {}, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function answerIeDailyQuestion(content) {
|
|
return tui.request('/app/ie/daily-question/answer', 'POST', { content }, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function pageIeDailyAnswers(pageNumber = 1, pageSize = 10) {
|
|
return tui.request('/app/ie/daily-question/answers/page', 'GET', { pageNumber, pageSize }, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function matchIeByAnswer(answerId) {
|
|
return tui.request(`/app/ie/daily-question/answers/${answerId}/match`, 'POST', {}, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function publishIeMoment(data) {
|
|
return tui.request('/app/ie/moments', 'POST', data, false, false, false).then(unwrap)
|
|
}
|
|
|
|
export function pageIeMoments(userId, pageNumber = 1, pageSize = 10, roomId = '') {
|
|
const params = { pageNumber, pageSize }
|
|
if (userId) params.userId = userId
|
|
if (roomId) params.roomId = roomId
|
|
return tui.request('/app/ie/moments/page', 'GET', params, false, true, true).then(unwrap)
|
|
}
|
|
|
|
export function deleteIeMoment(momentId) {
|
|
return tui.request(`/app/ie/moments/${momentId}`, 'DELETE', {}, false, false, true).then(unwrap)
|
|
}
|
|
|