搜索结果列表页面开发

This commit is contained in:
付民康
2025-03-12 18:41:20 +08:00
commit 7cebe8fc00
739 changed files with 88149 additions and 0 deletions

124
src/api/org/devIndex.ts Normal file
View File

@@ -0,0 +1,124 @@
import request from '@/utils/request';
import * as types from '@/api/org/types';
import { reqCatch, type ReqReturn } from '@/utils/catch';
// 获取自定义menu菜单
export function getCustomMenuList({ namespace, onlyCustomNav = true }): Promise<any> {
return request({
url: `/v1/namespace_page/custom/nav?domain=${namespace}&onlyCustomNav=${onlyCustomNav}`,
method: 'get',
apiType: 'devApi'
});
}
// 组织主页-关注社区
export function joinCommunity(data: types.createGroupReqType): Promise<any> {
return request({
url: `/api/v1/follow`,
method: 'post',
data
});
}
// 组织主页-取消关注社区
export function unJoinCommunity(data: types.createGroupReqType): Promise<any> {
return request({
url: `/api/v1/follow`,
method: 'delete',
params: data
});
}
// 组织主页-获取文章
export function getArticle(data: types.createGroupReqType): Promise<any> {
return request({
url: `/v1/plus/group/home/article`,
method: 'get',
params: data,
apiType: 'devApi'
});
}
// 组织主页-获取组织社区是否被关注
export function getCommunityAttentionStatus(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/follow/hasFollowed`,
method: 'get',
params: data
});
}
// 组织主页-社区最新活动
export function getActivity(data: types.createGroupReqType): Promise<any> {
return request({
url: `/v1/plus/group/home/activityLive`,
method: 'get',
params: data,
apiType: 'devApi'
});
}
// 组织主页-获取技术文章数
export function getArticleTotle(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/v1/namespace_article/tech-article-count`,
method: 'get',
params: data,
apiType: 'devApi'
});
}
// 组织主页-获取社区粉丝数
export function getfansTotle(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/v1/member/user/count`,
method: 'get',
params: data,
apiType: 'devApi'
});
}
// 组织主页-获取技术文章数和粉丝数
export function getArticleAndFansTotle(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}/stats`,
method: 'get',
params: data
});
}
// 组织主页-获取运营广告
export function getAdvertisement(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/v1/namespace_page/banner`,
method: 'get',
params: data,
apiType: 'devApi'
});
}
// 刷新devpress登录转态
export function getLoginState(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/v1/check/login`,
method: 'get',
apiType: 'devApi'
});
}
// 退出devpress社区
export function devLogout(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/v1/logout`,
method: 'get',
apiType: 'devApi'
});
}
/* 组织的关注用户 */
export function getGroupFollows(params: types.commonGroupReqType): Promise<types.commonGroupResType> {
return reqCatch(() => request({
url: '/api/v1/follow/getGroupFollows',
method: 'get',
params
}));
}

495
src/api/org/index.ts Normal file
View File

@@ -0,0 +1,495 @@
import request from '@/utils/request';
import * as types from '@/api/org/types';
import { reqCatch, type ReqReturn } from '@/utils/catch';
export function createOrg(data: types.createGroupReqType): Promise<any> {
return request({
url: `/api/v2/groups`,
method: 'post',
data
});
}
export function getOrg(params: types.commonGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${params.orgId}`,
method: 'get',
params
});
}
// 获取/搜索组织
export function getOrgs(params: types.commonGroupReqType): Promise<ReqReturn<types.commonGroupResType>> {
return reqCatch(() => request({
url: `/api/v2/groups`,
method: 'get',
params
}));
}
export function setOrg(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}`,
method: 'put',
data
});
}
export function deleteOrg(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}`,
method: 'delete'
});
}
// 查询登录用户是否关注某组织
export function checkHasFollowed(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: '/api/v1/follow/hasFollowed',
method: 'get',
params: data
});
}
// 获取组织下所有项目
export function getOrgProjectList(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}/projects`,
method: 'get',
params: data
});
}
// 查询组织项目精选
export function getOrgHandpickProjectList(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/featured/project/${data.type}`,
method: 'get',
params: data
});
}
// 项目精选重排序
export function reorderSelectedItems(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/featured/${data.type}/resort`,
method: 'put',
data
});
}
// 查询组织path是否重复
export function inquireOrgPathIsRepeat(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/path_suggestion`,
method: 'get',
params: data
}, { customError: true });
}
// 组织讨论设置回显
export function getOrgDiscussionSettings(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}/module/setting`,
method: 'get',
params: data
}, {
customError: true
});
}
// 组织讨论设置保存
export function saveOrgDiscussionSettings(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}/module/setting`,
method: 'put',
data
});
}
// 获取组织语言
export function getOrgLanguages(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/${data.orgId}/languages`,
method: 'get',
params: data
}, {
customError: true
});
}
// 查询组织首页运营内容
export function getOrgOperationContent(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/devpress/group/${data.orgId}/home_operation`,
method: 'get',
params: data
});
}
// 判断是否绑定csdn账号
export function isBindCsdnCount(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/user/csdn-identity`,
method: 'get',
params: data
});
}
// 申请社区
export function applicantCommunity(data: types.createGroupReqType): Promise<any> {
return request({
url: `/api/v1/devpress/${data.orgId}`,
method: 'post',
data
});
}
// 注销社区
export function deleteCommunity(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/devpress/${data.orgId}`,
method: 'delete'
});
}
// 社区基本信息
export function getCommunityInfo(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/devpress/${data.orgId}/info`,
method: 'get'
});
}
// 转移组织
export function transferOrg(data: types.createGroupReqType): Promise<any> {
return request({
url: `/api/v4/groups/${data.orgId}/transfer`,
method: 'post',
data
});
}
// 判断用户是否能创建组织
export function checkUserCreateOrg(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/groups/quota`,
method: 'get',
params: data
});
}
export function getOrgMemberList(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/groups/${data.orgId}/members/list`,
method: 'get'
});
}
/** 组织邀请成员 */
export function createInvite(data: { group_id: string, conf: Record<string, any> }) {
const { group_id, conf } = data;
return reqCatch(() => request({
url: `/api/v1/invitation/${group_id}/invite`,
method: 'post',
data: {
...conf,
source_type: '0'
}
}));
}
export function checkInvite(data: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/invitation/check`,
method: 'get',
params: data
});
}
export function acceptInvite(token: string) {
return request({
url: `/api/v1/invitation/members/${token}/accept`,
method: 'put'
});
}
export function revokeInvite(token: string): Promise<types.commonGroupResType> {
return request({
url: `/api/v1/invitation/members/${token}/revoke`,
method: 'delete'
});
}
/** 获取组织下的成员 */
export function getOrgMembers(data: { group_id: string, page?: number, per_page?: number, query?: string }) {
return request({
url: `/api/v1/groups/${data.group_id}/members/list`,
method: 'get',
params: data
});
}
/** 获取组织下的待邀请成员 */
export function getMembersInvite(data: { group_id: string, page: number, per_page: number }) {
return reqCatch(() => request({
url: `/api/v1/groups/${data.group_id}/members/invite`,
method: 'get',
params: data
}));
}
/** 移除组织内的用户 */
export function removeGroupUser(data: { group_id: string, username: string }) {
const { group_id, username } = data;
return reqCatch(() => request({
url: `/api/v1/groups/${group_id}/members/${username}`,
method: 'delete'
}));
}
/** 撤销组织中的成员邀请 */
export function retractGroupInvite(data: { group_id: string, username: string }) {
const { group_id, username } = data;
return reqCatch(() => request({
url: `/api/v1/invitation/${group_id}/0/members/${username}/revoke`,
method: 'delete'
}));
}
/** 退出当前组织 */
export function exitGroup(data: { group_id: string }) {
const { group_id } = data;
return reqCatch(() => request({
url: `/api/v1/groups/${group_id}/leave`,
method: 'delete'
}));
}
/** 设置组织中成员的权限 */
export function setGroupUserLevel(data: { group_id: string, username: string, access_level: '30' | '50' | '10' }) {
const { group_id, username, access_level } = data;
return reqCatch(() => request({
url: `/api/v1/groups/${group_id}/members/${username}`,
method: 'put',
data: { access_level }
}));
}
/** 精准搜索匹配组织中的成员 */
export function toSearchGroupMember(group_id: string, username: string) {
return reqCatch(() => request({
url: `/api/v1/groups/${group_id}/members/${username}`
}));
}
/* 查询path是个人还是组织 */
export function getPathType(params: types.createGroupReqType): Promise<types.commonGroupResType> {
return request({
url: '/api/v2/groups/path_suggestion',
method: 'get',
params
});
}
/** 获取用量以及存储相关 */
export function getOrgStock(group_id: string) {
return reqCatch(() => request({
url: `/api/v1/namespaces/${group_id}/statistic`
}));
}
/** 创建组织成员邀请链接 **/
export function createGroupMemberLink(data: { namespace: string } & types.MemberInviteLinkProps) {
const { namespace, ...config } = data;
return reqCatch(() => request({
url: `/api/v1/group/${namespace}/invite/link`,
method: 'post',
data: config
}));
}
/** 删除组织成员邀请链接 */
export function deleteMemberInviteLink(namespace: string, inviteId: string) {
return reqCatch(() => request({
url: `/api/v1/group/${namespace}/${inviteId}/invite/link`,
method: 'delete'
}));
}
/** 查询组织成员邀请链接列表 */
export function getMemberInviteLinks(params: { namespace: string, page?: number, per_page?: number }) {
const { namespace, ...pager } = params;
return reqCatch(() => request({
url: `/api/v1/${namespace}/invite/link`,
params: Object.assign({ page: 1, per_page: 10 }, pager)
}));
}
/** 修改组织成员邀请链接 **/
export function updateGroupMemberLink(data: { namespace: string, inviteId: string } & types.MemberInviteLinkProps) {
const { namespace, inviteId, ...config } = data;
return reqCatch(() => request({
url: `/api/v1/group/${namespace}/${inviteId}/invite/link`,
method: 'put',
data: config
}));
}
/** 接受组织邀请链接 */
export function acceptGroupInvite(invite_code: string) {
return reqCatch(() => request({
url: `/api/v1/${invite_code}/invite/accept`
}));
}
/** 查看组织邀请链接待接受成员列表 */
export function getAcceptGroupMember(params: { namespace: string, page?: number, per_page?: number }) {
const { namespace, ...pager } = params;
return reqCatch(() => request({
url: `/api/v1/${namespace}/invite/accept/member`,
params: Object.assign({ page: 1, per_page: 10 }, pager)
}));
}
/** 审核组织链接访问的成员 */
export function checkGroupLinkMember(data: { namespace: string, id:number, access_level: string, member_expires_at?: string, audit: '0' | '2' }) {
const { namespace, id, ...conf } = data;
return reqCatch(() => request({
url: `/api/v1/group/${namespace}/${id}/invite/audit`,
method: 'put',
data: conf
}));
}
/** 删除链接访问组织的成员 */
export function removeGroupLinkMember(namespace: string, id: number) {
return reqCatch(() => request({
url: `/api/v1/group/${namespace}/${id}/invite/audit`,
method: 'delete'
}));
}
/** 模糊搜索匹配相关组织 */
export function getFuzzyGroups(params: { name?: string, path?: string, description?: string, page?:number, per_page?:number, orderBy?: 'name' | 'path' | 'id' | 'created_at' | 'updated_at', sort: 'asc' | 'desc'}) {
const { page, per_page, ...param } = params;
return reqCatch(() => request({
url: '/api/v2/groups/search/list',
params: { ...param, ...Object.assign({ page: 1, per_page: 10 }, { page, per_page }) }
}));
}
// 新建CLA协议
export function claAdd(data: types.commonGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/cla/${data.orgId}/add`,
method: 'post',
data
});
}
// 编辑CLA协议
export function claUpdate(data: types.commonGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/cla/${data.orgId}/update`,
method: 'put',
data
});
}
// 获取CLA协议详情
export function claDetail(params: types.commonGroupReqType): Promise<types.commonGroupResType> {
return request({
url: `/api/v2/cla/detail`,
method: 'get',
params
});
}
/* 组织webhooks对应接口开始 */
/** 获取项目分支webhook */
export function getRepoWebhooks(params: { repoId: string | null; conf: Record<string, any> }) {
return reqCatch(
() =>
request({
url: `/api/v2/groups/${params.repoId}/hooks`,
params: params.conf
}),
params
);
}
/** 新增webhook配置 */
export function createWebhook(data: { repoId: string | number | null; conf: Record<string, any> }) {
return reqCatch(
() =>
request(
{
url: `/api/v2/groups/${data.repoId}/hooks`,
data: data.conf,
method: 'post'
},
{
customError: true
}
),
data
);
}
/** 编辑webhook */
export function editWebhook(data: { repoId: string | null; hook_id: string; conf: Record<string, any> }) {
const { repoId, hook_id, conf } = data;
return reqCatch(() =>
request({
url: `/api/v2/groups/${repoId}/hooks/${hook_id}`,
method: 'put',
data: conf
})
);
}
/** 获取webhook详情 */
export function getWebhookDetail(data: { repoId: string | null; hook_id: string }) {
const { repoId, hook_id } = data;
return reqCatch(() =>
request({
url: `/api/v2/groups/${repoId}/hooks/${hook_id}`
})
);
}
/** 获取webhook请求日志 */
export function getWebhookLogs(data: { repoId: string | null; hook_id: string; page?: number; per_page?: number }) {
const { repoId, hook_id, ...param } = data;
return reqCatch(() =>
request({
url: `/api/v2/groups/${repoId}/hooks/${hook_id}/logs`,
params: Object.assign({ page: 1, per_page: 10 }, param)
})
);
}
/** 获取项目webhook日志详情 */
export function getWebhookLogDetail(data: { repoId: string | null; hook_id: string; id: string }) {
const { repoId, hook_id, id } = data;
return reqCatch(() =>
request({
url: `/api/v2/groups/${repoId}/hooks/${hook_id}/logs/${id}`
})
);
}
/** 删除webhook */
export function deleteWebHook(data: { repoId: string | null; hook_id: string }) {
const { repoId, hook_id } = data;
return reqCatch(() =>
request({
url: `/api/v2/groups/${repoId}/hooks/${hook_id}`,
method: 'delete'
})
);
}
/* 组织webhooks对应接口结束 */
/** 获取组织默认设置 */
export function getOrgDefaultSetting(params: { group_id: string }) {
return reqCatch(() => request({
url: `/api/v2/groups/${params.group_id}`,
method: 'get'
}));
}
/** 更新组织默认设置 */
export function updateOrgDefaultSetting(data: types.commonGroupReqType) {
const { group_id } = data;
delete data.group_id;
return reqCatch(() => request({
url: `/api/v2/groups/${group_id}/ext/setting`,
method: 'put',
data
}));
}

24
src/api/org/types.ts Normal file
View File

@@ -0,0 +1,24 @@
import { type errorType } from '@/api/types/common';
import type { ComputedRef } from 'vue';
export interface createGroupReqType {
[propName: string]: any;
}
export interface commonGroupReqType {
[propName: string]: any;
repoId?: string | number | string[];
orgId?: string | number | string[] | ComputedRef<string | string[]>;
}
export interface commonGroupResType extends errorType {
[propName: string]: any;
}
export interface MemberInviteLinkProps {
access_level: number | string,
audit_status: 0 | 1 | string,
url_expires_at?:string,
member_expires_at?:string,
remark?:string
}