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

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)
}