2026-07-09 18:15:25 +08:00

509 lines
18 KiB
TypeScript

import { apiRequest } from "@/shared/api/request";
import { API_ENDPOINTS, API_OPERATIONS, apiEndpointPath } from "@/shared/api/generated/endpoints";
export { listRegions } from "@/shared/api/regions";
import type {
AgencyDto,
AgencyHostAddPayload,
AgencyJoinEnabledPayload,
AgencyStatusPayload,
AdminJobDto,
ApiList,
ApiPage,
BDLeaderPositionAliasPayload,
BDProfileDto,
BDStatusPayload,
CoinSellerDto,
CoinSellerSalaryRatesDto,
CoinSellerSalaryRatesPayload,
CoinSellerSubApplicationDto,
CoinSellerSubApplicationReviewPayload,
CoinSellerSubApplicationReviewResultDto,
CoinSellerStockCreditDto,
CoinSellerStockCreditPayload,
CoinSellerStockDebitDto,
CoinSellerStockDebitPayload,
CoinSellerStatusPayload,
CountryCodeRenameJobDto,
CountryDto,
CountryPayload,
CountryRenameCodePayload,
CountryUpdatePayload,
CreateAgencyPayload,
CreateAgencyResultDto,
CreateBDLeaderPayload,
CreateBDPayload,
CreateCoinSellerPayload,
CreateManagerPayload,
EntityId,
HostCommandPayload,
HostWithdrawalDto,
HostProfileDto,
ManagerDto,
PageQuery,
RegionCountriesPayload,
RegionDto,
RegionPayload,
RegionUpdatePayload,
SalaryWalletAdjustPayload,
SalaryWalletAdjustResultDto,
SalaryWalletHistoryDto,
UpdateManagerPayload,
} from "@/shared/api/types";
export function listCountries(query: PageQuery = {}): Promise<ApiList<CountryDto>> {
const endpoint = API_ENDPOINTS.listCountries;
return apiRequest<ApiList<CountryDto>>(apiEndpointPath(API_OPERATIONS.listCountries), {
method: endpoint.method,
query,
});
}
export function getCountry(countryId: EntityId): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.getCountry;
return apiRequest<CountryDto>(apiEndpointPath(API_OPERATIONS.getCountry, { country_id: countryId }), {
method: endpoint.method,
});
}
export function createCountry(payload: CountryPayload): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.createCountry;
return apiRequest<CountryDto, CountryPayload>(apiEndpointPath(API_OPERATIONS.createCountry), {
body: payload,
method: endpoint.method,
});
}
export function updateCountry(countryId: EntityId, payload: CountryUpdatePayload): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.updateCountry;
return apiRequest<CountryDto, CountryUpdatePayload>(
apiEndpointPath(API_OPERATIONS.updateCountry, { country_id: countryId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function renameCountryCode(
countryId: EntityId,
payload: CountryRenameCodePayload,
): Promise<CountryCodeRenameJobDto> {
const endpoint = API_ENDPOINTS.renameCountryCode;
return apiRequest<CountryCodeRenameJobDto, CountryRenameCodePayload>(
apiEndpointPath(API_OPERATIONS.renameCountryCode, { country_id: countryId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function getJob(jobId: EntityId): Promise<AdminJobDto> {
const endpoint = API_ENDPOINTS.getJob;
return apiRequest<AdminJobDto>(apiEndpointPath(API_OPERATIONS.getJob, { id: jobId }), {
method: endpoint.method,
});
}
export function enableCountry(countryId: EntityId): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.enableCountry;
return apiRequest<CountryDto>(apiEndpointPath(API_OPERATIONS.enableCountry, { country_id: countryId }), {
method: endpoint.method,
});
}
export function disableCountry(countryId: EntityId): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.disableCountry;
return apiRequest<CountryDto>(apiEndpointPath(API_OPERATIONS.disableCountry, { country_id: countryId }), {
method: endpoint.method,
});
}
export function deleteCountry(countryId: EntityId): Promise<CountryDto> {
const endpoint = API_ENDPOINTS.deleteCountry;
return apiRequest<CountryDto>(apiEndpointPath(API_OPERATIONS.deleteCountry, { country_id: countryId }), {
method: endpoint.method,
});
}
export function getRegion(regionId: EntityId): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.getRegion;
return apiRequest<RegionDto>(apiEndpointPath(API_OPERATIONS.getRegion, { region_id: regionId }), {
method: endpoint.method,
});
}
export function createRegion(payload: RegionPayload): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.createRegion;
return apiRequest<RegionDto, RegionPayload>(apiEndpointPath(API_OPERATIONS.createRegion), {
body: payload,
method: endpoint.method,
});
}
export function updateRegion(regionId: EntityId, payload: RegionUpdatePayload): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.updateRegion;
return apiRequest<RegionDto, RegionUpdatePayload>(
apiEndpointPath(API_OPERATIONS.updateRegion, { region_id: regionId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function replaceRegionCountries(regionId: EntityId, payload: RegionCountriesPayload): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.replaceRegionCountries;
return apiRequest<RegionDto, RegionCountriesPayload>(
apiEndpointPath(API_OPERATIONS.replaceRegionCountries, { region_id: regionId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function enableRegion(regionId: EntityId): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.enableRegion;
return apiRequest<RegionDto>(apiEndpointPath(API_OPERATIONS.enableRegion, { region_id: regionId }), {
method: endpoint.method,
});
}
export function disableRegion(regionId: EntityId): Promise<RegionDto> {
const endpoint = API_ENDPOINTS.disableRegion;
return apiRequest<RegionDto>(apiEndpointPath(API_OPERATIONS.disableRegion, { region_id: regionId }), {
method: endpoint.method,
});
}
export function listBDLeaders(query: PageQuery = {}): Promise<ApiPage<BDProfileDto>> {
const endpoint = API_ENDPOINTS.listBDLeaders;
return apiRequest<ApiPage<BDProfileDto>>(apiEndpointPath(API_OPERATIONS.listBDLeaders), {
method: endpoint.method,
query,
});
}
export function listBDs(query: PageQuery = {}): Promise<ApiPage<BDProfileDto>> {
const endpoint = API_ENDPOINTS.listBDs;
return apiRequest<ApiPage<BDProfileDto>>(apiEndpointPath(API_OPERATIONS.listBDs), {
method: endpoint.method,
query,
});
}
export function listAgencies(query: PageQuery = {}): Promise<ApiPage<AgencyDto>> {
const endpoint = API_ENDPOINTS.listAgencies;
return apiRequest<ApiPage<AgencyDto>>(apiEndpointPath(API_OPERATIONS.listAgencies), {
method: endpoint.method,
query,
});
}
export function listManagers(query: PageQuery = {}): Promise<ApiPage<ManagerDto>> {
const endpoint = API_ENDPOINTS.listManagers;
return apiRequest<ApiPage<ManagerDto>>(apiEndpointPath(API_OPERATIONS.listManagers), {
method: endpoint.method,
query,
});
}
export function createManager(payload: CreateManagerPayload): Promise<ManagerDto> {
const endpoint = API_ENDPOINTS.createManager;
return apiRequest<ManagerDto, CreateManagerPayload>(apiEndpointPath(API_OPERATIONS.createManager), {
body: payload,
method: endpoint.method,
});
}
export function updateManager(userId: EntityId, payload: UpdateManagerPayload): Promise<ManagerDto> {
const endpoint = API_ENDPOINTS.updateManager;
return apiRequest<ManagerDto, UpdateManagerPayload>(
apiEndpointPath(API_OPERATIONS.updateManager, { user_id: userId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function listHosts(query: PageQuery = {}): Promise<ApiPage<HostProfileDto>> {
const endpoint = API_ENDPOINTS.listHosts;
return apiRequest<ApiPage<HostProfileDto>>(apiEndpointPath(API_OPERATIONS.listHosts), {
method: endpoint.method,
query,
});
}
export function listCoinSellers(query: PageQuery = {}): Promise<ApiPage<CoinSellerDto>> {
const endpoint = API_ENDPOINTS.listCoinSellers;
return apiRequest<ApiPage<CoinSellerDto>>(apiEndpointPath(API_OPERATIONS.listCoinSellers), {
method: endpoint.method,
query,
});
}
export function listCoinSellerSubSellers(userId: EntityId, query: PageQuery = {}): Promise<ApiPage<CoinSellerDto>> {
const endpoint = API_ENDPOINTS.listCoinSellerSubSellers;
return apiRequest<ApiPage<CoinSellerDto>>(
apiEndpointPath(API_OPERATIONS.listCoinSellerSubSellers, { user_id: userId }),
{
method: endpoint.method,
query,
},
);
}
export function listCoinSellerSubApplications(query: PageQuery = {}): Promise<ApiPage<CoinSellerSubApplicationDto>> {
const endpoint = API_ENDPOINTS.listCoinSellerSubApplications;
return apiRequest<ApiPage<CoinSellerSubApplicationDto>>(
apiEndpointPath(API_OPERATIONS.listCoinSellerSubApplications),
{
method: endpoint.method,
query,
},
);
}
export function listHostWithdrawals(query: PageQuery = {}): Promise<ApiPage<HostWithdrawalDto>> {
const endpoint = API_ENDPOINTS.listHostWithdrawals;
return apiRequest<ApiPage<HostWithdrawalDto>>(apiEndpointPath(API_OPERATIONS.listHostWithdrawals), {
method: endpoint.method,
query,
});
}
export function listSalaryWalletHistory(query: PageQuery = {}): Promise<ApiPage<SalaryWalletHistoryDto>> {
return apiRequest<ApiPage<SalaryWalletHistoryDto>>("/v1/admin/host-org/salary-wallets/history", {
method: "GET",
query,
});
}
export function adjustSalaryWallet(payload: SalaryWalletAdjustPayload): Promise<SalaryWalletAdjustResultDto> {
return apiRequest<SalaryWalletAdjustResultDto, SalaryWalletAdjustPayload>(
"/v1/admin/host-org/salary-wallets/adjust",
{
body: payload,
method: "POST",
},
);
}
export function createBDLeader(payload: CreateBDLeaderPayload): Promise<BDProfileDto> {
const endpoint = API_ENDPOINTS.createBDLeader;
return apiRequest<BDProfileDto, CreateBDLeaderPayload>(apiEndpointPath(API_OPERATIONS.createBDLeader), {
body: payload,
method: endpoint.method,
});
}
export function createBD(payload: CreateBDPayload): Promise<BDProfileDto> {
const endpoint = API_ENDPOINTS.createBD;
return apiRequest<BDProfileDto, CreateBDPayload>(apiEndpointPath(API_OPERATIONS.createBD), {
body: payload,
method: endpoint.method,
});
}
export function deleteBDLeader(userId: EntityId): Promise<BDProfileDto> {
return apiRequest<BDProfileDto>(`/v1/admin/bd-leaders/${encodeURIComponent(String(userId))}`, {
method: "DELETE",
});
}
export function updateBDLeaderPositionAlias(
userId: EntityId,
payload: BDLeaderPositionAliasPayload,
): Promise<BDProfileDto> {
return apiRequest<BDProfileDto, BDLeaderPositionAliasPayload>(
`/v1/admin/bd-leaders/${encodeURIComponent(String(userId))}/position-alias`,
{
body: payload,
method: "PATCH",
},
);
}
export function setBDLeaderStatus(userId: EntityId, payload: BDStatusPayload): Promise<BDProfileDto> {
const endpoint = API_ENDPOINTS.setBDLeaderStatus;
return apiRequest<BDProfileDto, BDStatusPayload>(
apiEndpointPath(API_OPERATIONS.setBDLeaderStatus, { user_id: userId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function setBDStatus(userId: EntityId, payload: BDStatusPayload): Promise<BDProfileDto> {
const endpoint = API_ENDPOINTS.setBDStatus;
return apiRequest<BDProfileDto, BDStatusPayload>(apiEndpointPath(API_OPERATIONS.setBDStatus, { user_id: userId }), {
body: payload,
method: endpoint.method,
});
}
export function createCoinSeller(payload: CreateCoinSellerPayload): Promise<CoinSellerDto> {
const endpoint = API_ENDPOINTS.createCoinSeller;
return apiRequest<CoinSellerDto, CreateCoinSellerPayload>(apiEndpointPath(API_OPERATIONS.createCoinSeller), {
body: payload,
method: endpoint.method,
});
}
export function setCoinSellerStatus(userId: EntityId, payload: CoinSellerStatusPayload): Promise<CoinSellerDto> {
const endpoint = API_ENDPOINTS.setCoinSellerStatus;
return apiRequest<CoinSellerDto, CoinSellerStatusPayload>(
apiEndpointPath(API_OPERATIONS.setCoinSellerStatus, { user_id: userId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function approveCoinSellerSubApplication(
applicationId: EntityId,
payload: CoinSellerSubApplicationReviewPayload,
): Promise<CoinSellerSubApplicationReviewResultDto> {
const endpoint = API_ENDPOINTS.approveCoinSellerSubApplication;
return apiRequest<CoinSellerSubApplicationReviewResultDto, CoinSellerSubApplicationReviewPayload>(
apiEndpointPath(API_OPERATIONS.approveCoinSellerSubApplication, { application_id: applicationId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function rejectCoinSellerSubApplication(
applicationId: EntityId,
payload: CoinSellerSubApplicationReviewPayload,
): Promise<CoinSellerSubApplicationReviewResultDto> {
const endpoint = API_ENDPOINTS.rejectCoinSellerSubApplication;
return apiRequest<CoinSellerSubApplicationReviewResultDto, CoinSellerSubApplicationReviewPayload>(
apiEndpointPath(API_OPERATIONS.rejectCoinSellerSubApplication, { application_id: applicationId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function creditCoinSellerStock(
userId: EntityId,
payload: CoinSellerStockCreditPayload,
): Promise<CoinSellerStockCreditDto> {
const endpoint = API_ENDPOINTS.creditCoinSellerStock;
return apiRequest<CoinSellerStockCreditDto, CoinSellerStockCreditPayload>(
apiEndpointPath(API_OPERATIONS.creditCoinSellerStock, { user_id: userId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function debitCoinSellerStock(
userId: EntityId,
payload: CoinSellerStockDebitPayload,
): Promise<CoinSellerStockDebitDto> {
const endpoint = API_ENDPOINTS.debitCoinSellerStock;
return apiRequest<CoinSellerStockDebitDto, CoinSellerStockDebitPayload>(
apiEndpointPath(API_OPERATIONS.debitCoinSellerStock, { user_id: userId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function getCoinSellerSalaryRates(regionId: EntityId): Promise<CoinSellerSalaryRatesDto> {
const endpoint = API_ENDPOINTS.getCoinSellerSalaryRates;
return apiRequest<CoinSellerSalaryRatesDto>(
apiEndpointPath(API_OPERATIONS.getCoinSellerSalaryRates, { region_id: regionId }),
{
method: endpoint.method,
},
);
}
export function replaceCoinSellerSalaryRates(
regionId: EntityId,
payload: CoinSellerSalaryRatesPayload,
): Promise<CoinSellerSalaryRatesDto> {
const endpoint = API_ENDPOINTS.replaceCoinSellerSalaryRates;
return apiRequest<CoinSellerSalaryRatesDto, CoinSellerSalaryRatesPayload>(
apiEndpointPath(API_OPERATIONS.replaceCoinSellerSalaryRates, { region_id: regionId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function createAgency(payload: CreateAgencyPayload): Promise<CreateAgencyResultDto> {
const endpoint = API_ENDPOINTS.createAgency;
return apiRequest<CreateAgencyResultDto, CreateAgencyPayload>(apiEndpointPath(API_OPERATIONS.createAgency), {
body: payload,
method: endpoint.method,
});
}
export function adminAddAgencyHost(agencyId: EntityId, payload: AgencyHostAddPayload): Promise<CreateAgencyResultDto> {
const endpoint = API_ENDPOINTS.adminAddAgencyHost;
return apiRequest<CreateAgencyResultDto, AgencyHostAddPayload>(
apiEndpointPath(API_OPERATIONS.adminAddAgencyHost, { agency_id: agencyId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function closeAgency(agencyId: EntityId, payload: HostCommandPayload): Promise<AgencyDto> {
const endpoint = API_ENDPOINTS.closeAgency;
return apiRequest<AgencyDto, HostCommandPayload>(
apiEndpointPath(API_OPERATIONS.closeAgency, { agency_id: agencyId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function deleteAgency(agencyId: EntityId, payload: HostCommandPayload): Promise<AgencyDto> {
const endpoint = API_ENDPOINTS.deleteAgency;
return apiRequest<AgencyDto, HostCommandPayload>(
apiEndpointPath(API_OPERATIONS.deleteAgency, { agency_id: agencyId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function setAgencyStatus(agencyId: EntityId, payload: AgencyStatusPayload): Promise<AgencyDto> {
const endpoint = API_ENDPOINTS.setAgencyStatus;
return apiRequest<AgencyDto, AgencyStatusPayload>(
apiEndpointPath(API_OPERATIONS.setAgencyStatus, { agency_id: agencyId }),
{
body: payload,
method: endpoint.method,
},
);
}
export function setAgencyJoinEnabled(agencyId: EntityId, payload: AgencyJoinEnabledPayload): Promise<AgencyDto> {
const endpoint = API_ENDPOINTS.setAgencyJoinEnabled;
return apiRequest<AgencyDto, AgencyJoinEnabledPayload>(
apiEndpointPath(API_OPERATIONS.setAgencyJoinEnabled, { agency_id: agencyId }),
{
body: payload,
method: endpoint.method,
},
);
}