import {get, post} from '../utils/http.js' /** * 获取团队成员列表 * @param {string} teamId - 团队ID * @param {object} params - 可选参数,包含lastId等分页参数 * @returns {Promise} */ export const getTeamMembers = async (teamId, params = {}) => { try { // 构建查询参数 const queryParams = new URLSearchParams({ id: teamId }) console.log('params', queryParams) // 添加分页参数 if (params.lastId) { queryParams.append('lastId', params.lastId) } const response = await get(`/team/members?${queryParams.toString()}`) return response } catch (error) { console.error('Failed to fetch team members:', error) throw error } } /** * 获取BD代理商列表 * @param {object} params - 可选参数,包含lastId等分页参数 * @returns {Promise} */ export const getBdAgentList = async (params = {}) => { try { // 构建查询参数 const queryParams = new URLSearchParams() // 添加分页参数 if (params.lastId) { queryParams.append('lastId', params.lastId) } const url = queryParams.toString() ? `/team/bd/bd-agent/list?${queryParams.toString()}` : '/team/bd/bd-agent/list' const response = await get(url) return response } catch (error) { console.error('Failed to fetch BD agent list:', error) throw error } } /** * 删除团队成员 * @param {string} memberId - 成员ID * @returns {Promise} */ export const deleteMember = async (ids) => { try { const response = await post('/team-member/client/removeMemberTeam', { ids: ids }) return response } catch (error) { console.error('Failed to delete member:', error) throw error } } /** * 获取团队发布的政策 * @param {string} teamId - 团队ID * @returns {Promise} */ export const getTeamReleasePolicy = async (teamId) => { try { const response = await get(`/team/release/policy?id=${teamId}`) return response } catch (error) { console.error('Failed to fetch team release policy:', error) throw error } } /** * 获取用户等待申请的团队信息 * @returns {Promise} */ export const getUserSendJoinWaitApplyTeamProfile = async () => { try { const response = await get('/team/wait-apply/profile') return response } catch (error) { console.error('Failed to get user wait apply team profile:', error) throw error } } /** * 搜索团队信息 * @param {string} account - 团队账户 * @returns {Promise} */ export const searchTeamByAccount = async (account) => { try { const response = await get(`/team/search-account?account=${account}`) return response } catch (error) { console.error('Failed to search team by account:', error) throw error } } /** * 提交团队申请 * @param {string} teamId - 团队ID * @returns {Promise} */ export const sendTeamApplyJoin = async (teamId) => { try { const response = await post('/team/user/apply', { teamId, reason: 'JOIN' }) return response } catch (error) { console.error('Failed to send team apply join:', error) throw error } } /** * 取消加入申请 * @param {string} messageId - 申请消息ID * @returns {Promise} */ export const cancelJoinApplyById = async (messageId) => { try { const response = await post('/team/user/join-apply-cancel', { id: messageId }) return response } catch (error) { console.error('Failed to cancel join apply:', error) throw error } } /** * 获取邀请消息列表 * @returns {Promise} */ export const getInviteMessageList = async () => { try { const response = await get('/anchor-agent/invite/message') return response } catch (error) { console.error('Failed to get invite message list:', error) throw error } } /** * 处理邀请消息 * @param {object} data - 处理数据 {id, status, contact} * @returns {Promise} */ export const processInviteMessage = async (data) => { try { const response = await post('/anchor-agent/invite/process', data) return response } catch (error) { console.error('Failed to process invite message:', error) throw error } } /** * 获取团队账单列表 * @param {string} teamId - 团队ID * @returns {Promise} */ export const getTeamBill = async (teamId) => { try { const response = await get(`/team/bill?id=${teamId}`) return response } catch (error) { console.error('Failed to fetch team bill:', error) throw error } } /** * 获取团队账单的工资成员信息 * @param {string} billId - 账单ID * @returns {Promise} */ export const getTeamBillWorkMembers = async (billId) => { try { const response = await get(`/team/bill/work-members?id=${billId}`) return response } catch (error) { console.error('Failed to fetch team bill work members:', error) throw error } } /** * 获取团队成员工作报告 * @param {string} userId - 用户ID * @returns {Promise} */ export const getTeamMemberWork = async (userId) => { try { return await get(`/team/member-work?userId=${userId}`) } catch (error) { console.error('Failed to fetch team member work:', error) throw error } } /** * 用户申请记录查询 */ export function getApplyRecord(userId, status) { return get(`/team/user/apply/record?teamId=${userId}&status=${status}`) } /** * BD团队当月总目标 */ export function getAgentMonthTarget() { return get(`/team/bd/agent-count`) } /** * BD团队上个月总目标 */ export function getAgentMonthLastTarget() { return get(`/team/bd/agent-count-last`) } /** * 获取团队的成员数量 * @param teamId * @returns {Promise} */ export function getTeamMemberCount(teamId) { return get(`/team/members/count?id=${teamId}`) } /** * 格式化显示状态 * @param {string} status - 状态值 * @returns {object} 包含显示文本和样式类的对象 */ export const formatBillStatus = (status) => { const statusMap = { 'UNPAID': { text: 'In Progress', class: 'in-progress', color: '#3B82F6' }, 'HANG_UP': { text: 'Pending', class: 'pending', color: '#EF4444' }, 'PAY_OUT': { text: 'Completed', class: 'completed', color: '#10B981' }, 'PAID': { text: 'Completed', class: 'completed', color: '#10B981' }, 'SETTLED': { text: 'Settled', class: 'settled', color: '#059669' } } return statusMap[status] || { text: status, class: 'unknown', color: '#666' } } /** * 格式化时间显示 * @param {number|string} minutes - 分钟数 * @returns {string} 格式化的时间字符串 */ export const formatOnlineTime = (minutes) => { if (!minutes || minutes === '0') return '0h' const numMinutes = parseInt(minutes) const hours = Math.floor(numMinutes / 60) const mins = numMinutes % 60 if (hours > 0) { return mins > 0 ? `${hours}h ${mins}m` : `${hours}h` } return `${mins}m` } /** * 格式化礼物价值显示 * @param {string|number} value - 礼物价值 * @returns {string} 格式化的价值字符串 */ export const formatGiftValue = (value) => { if (!value || value === '0') return '$0' // 如果已经是格式化的字符串,直接返回 if (typeof value === 'string' && value.includes('K')) { return `$${value}` } const numValue = parseFloat(value) if (isNaN(numValue)) return '$0' if (numValue >= 1000000) { return `$${(numValue / 1000000).toFixed(1)}M` } else if (numValue >= 1000) { return `$${(numValue / 1000).toFixed(1)}K` } return `$${numValue.toFixed(0)}` } /** * 格式化钻石价值显示 * @param {string|number} value - 钻石价值 * @returns {string} 格式化的钻石价值字符串 */ export const formatDiamondValue = (value) => { if (!value || value === '0') return '0' const numValue = parseInt(value) if (isNaN(numValue)) return '0' if (numValue >= 1000000) { return `${(numValue / 1000000).toFixed(1)}M` } else if (numValue >= 1000) { return `${(numValue / 1000).toFixed(1)}K` } return numValue.toLocaleString() } /** * 格式化日期显示 * @param {number} dateNumber - 日期数字格式 (如: 20250808) * @returns {string} 格式化的日期字符串 */ export const formatDateDisplay = (dateNumber) => { if (!dateNumber) return '' const dateStr = dateNumber.toString() if (dateStr.length !== 8) return dateStr const year = dateStr.substring(0, 4) const month = dateStr.substring(4, 6) const day = dateStr.substring(6, 8) return `${month}/${day}/${year}` } /** * 格式化账户显示 * @param {object} memberProfile - 成员资料对象 * @returns {string} 格式化的账户字符串 */ export const formatAccount = (memberProfile) => { if (!memberProfile) return '' // 如果有特殊ID,优先显示特殊ID if (memberProfile.ownSpecialId && memberProfile.ownSpecialId.account) { return memberProfile.ownSpecialId.account } // 否则显示普通账户 return memberProfile.account || '' } /** * 检查是否可以领取道具奖励 * @param {object} item - 账单项目 * @returns {boolean} 是否可以领取奖励 */ export const canReceivePropsReward = (item) => { if (item.status !== 'SETTLED') { return false } if (!item.target || !item.target.settlementResult) { return false } const propsRewards = item.target.settlementResult.propsRewards if (!propsRewards || propsRewards.length <= 0) { return false } return true } /** * 领取政策道具奖励 * @param {string} targetId - 目标ID * @returns {Promise} */ export const receivePolicyPropsReward = async (targetId) => { try { const response = await post('/team/policy-props-reward', { id: targetId }) return response } catch (error) { console.error('Failed to receive policy props reward:', error) throw error } }