aslan-h5/src/api/teamBill.js
2025-09-23 10:51:06 +08:00

423 lines
9.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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