chore: project prerelease

This commit is contained in:
xiaojunnuo
2026-03-08 00:48:29 +08:00
parent dd9a7cf5d7
commit 4925d5a5e7
9 changed files with 244 additions and 4 deletions

View File

@@ -843,6 +843,7 @@ export default {
applyJoinConfirm: "Are you sure you want to apply to join this project?",
leaveConfirm: "Are you sure you want to leave this project?",
viewDetail: "View Detail",
projectManage: "Project Manage",
},
addonSelector: {
select: "Select",

View File

@@ -858,5 +858,6 @@ export default {
applyJoinConfirm: "确认加入项目?",
leaveConfirm: "确认退出项目?",
viewDetail: "查看详情",
projectManage: "项目管理",
},
};

View File

@@ -7,7 +7,7 @@
</div>
<div class="more">
<a-button v-if="userStore.isAdmin" @click="goProjectManager">{{ t("certd.project.projectManager") }}</a-button>
<a-button v-if="userStore.isAdmin" type="primary" @click="goProjectManager">{{ t("certd.project.projectManage") }}</a-button>
</div>
</template>
<div class="project-container">

View File

@@ -9,6 +9,7 @@
<div class="helper">SaaS模式每个用户管理自己的流水线和授权资源独立使用</div>
<div class="helper">企业模式通过项目合作管理流水线证书和授权资源所有用户视为企业内部员工</div>
<div class="helper text-red-500">建议在开始使用时固定一个合适的模式之后就不要随意切换了</div>
<div v-if="settingsStore.isComm" class="helper text-red-500">商业版不建议设置为企业模式除非你确定要转成企业内部使用</div>
<div><a @click="adminModeIntroOpen = true"> 更多管理模式介绍</a></div>
</a-form-item>

View File

@@ -6,7 +6,7 @@ typeorm:
default:
type: mysql # mariadb
host: localhost
port: 3309
port: 3308
username: root
password: root
database: certd

View File

@@ -0,0 +1,118 @@
CREATE TABLE `cd_project`
(
`id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL,
`user_id` bigint NOT NULL,
`name` varchar(512) NOT NULL,
`admin_id` bigint NOT NULL,
`disabled` boolean NOT NULL DEFAULT false,
`is_system` boolean NOT NULL DEFAULT false,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX `index_project_user_id` ON `cd_project` (`user_id`);
CREATE INDEX `index_project_admin_id` ON `cd_project` (`admin_id`);
INSERT INTO cd_project (id, user_id, `admin_id`, `name`, `disabled`, `is_system`) VALUES (1, -1, 1,'default', false,false);
ALTER TABLE cd_cert_info ADD COLUMN project_id bigint;
CREATE INDEX `index_cert_project_id` ON `cd_cert_info` (`project_id`);
ALTER TABLE cd_site_info ADD COLUMN project_id bigint;
CREATE INDEX `index_site_project_id` ON `cd_site_info` (`project_id`);
ALTER TABLE cd_site_ip ADD COLUMN project_id bigint;
CREATE INDEX `index_site_ip_project_id` ON `cd_site_ip` (`project_id`);
ALTER TABLE cd_open_key ADD COLUMN project_id bigint;
CREATE INDEX `index_open_key_project_id` ON `cd_open_key` (`project_id`);
ALTER TABLE cd_access ADD COLUMN project_id bigint;
CREATE INDEX `index_access_project_id` ON `cd_access` (`project_id`);
ALTER TABLE cd_addon ADD COLUMN project_id bigint;
CREATE INDEX `index_addon_project_id` ON `cd_addon` (`project_id`);
ALTER TABLE pi_pipeline ADD COLUMN project_id bigint;
CREATE INDEX `index_pipeline_project_id` ON `pi_pipeline` (`project_id`);
ALTER TABLE pi_pipeline_group ADD COLUMN project_id bigint;
CREATE INDEX `index_pipeline_group_project_id` ON `pi_pipeline_group` (`project_id`);
ALTER TABLE pi_storage ADD COLUMN project_id bigint;
CREATE INDEX `index_storage_project_id` ON `pi_storage` (`project_id`);
ALTER TABLE pi_notification ADD COLUMN project_id bigint;
CREATE INDEX `index_notification_project_id` ON `pi_notification` (`project_id`);
ALTER TABLE pi_history ADD COLUMN project_id bigint;
CREATE INDEX `index_history_project_id` ON `pi_history` (`project_id`);
ALTER TABLE pi_history_log ADD COLUMN project_id bigint;
CREATE INDEX `index_history_log_project_id` ON `pi_history_log` (`project_id`);
ALTER TABLE pi_template ADD COLUMN project_id bigint;
CREATE INDEX `index_template_project_id` ON `pi_template` (`project_id`);
ALTER TABLE pi_sub_domain ADD COLUMN project_id bigint;
CREATE INDEX `index_sub_domain_project_id` ON `pi_sub_domain` (`project_id`);
ALTER TABLE cd_cname_record ADD COLUMN project_id bigint;
CREATE INDEX `index_cname_record_project_id` ON `cd_cname_record` (`project_id`);
ALTER TABLE cd_domain ADD COLUMN project_id bigint;
CREATE INDEX `index_domain_project_id` ON `cd_domain` (`project_id`);
ALTER TABLE user_settings ADD COLUMN project_id bigint;
CREATE INDEX `index_user_settings_project_id` ON `user_settings` (`project_id`);
ALTER TABLE cd_group ADD COLUMN project_id bigint;
CREATE INDEX `index_group_project_id` ON `cd_group` (`project_id`);
CREATE TABLE `cd_project_member`
(
`id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL,
`user_id` bigint NOT NULL,
`project_id` bigint NOT NULL,
`permission` varchar(128) NOT NULL DEFAULT 'read',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE cd_project_member ADD COLUMN status varchar(128);
CREATE INDEX `index_project_member_user_id` ON `cd_project_member` (`user_id`);
CREATE INDEX `index_project_member_project_id` ON `cd_project_member` (`project_id`);
CREATE TABLE `cd_audit_log`
(
`id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL,
`user_id` bigint NOT NULL,
`username` varchar(128) NOT NULL,
`project_id` bigint NOT NULL,
`project_name` varchar(512) NOT NULL,
`type` varchar(128) NOT NULL,
`action` varchar(128) NOT NULL DEFAULT 'read',
`content` longtext NOT NULL,
`ip_address` varchar(128) NOT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX `index_audit_log_user_id` ON `cd_audit_log` (`user_id`);
CREATE INDEX `index_audit_log_project_id` ON `cd_audit_log` (`project_id`);
ALTER TABLE cd_site_info ADD COLUMN ip_address varchar(128);
ALTER TABLE `cd_project` ENGINE = InnoDB;
ALTER TABLE `cd_project_member` ENGINE = InnoDB;
ALTER TABLE `cd_audit_log` ENGINE = InnoDB;

View File

@@ -0,0 +1,116 @@
CREATE TABLE "cd_project"
(
"id" bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL,
"user_id" bigint NOT NULL,
"name" varchar(512) NOT NULL,
"admin_id" bigint NOT NULL,
"disabled" boolean NOT NULL DEFAULT (false),
"is_system" boolean NOT NULL DEFAULT (false),
"create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
CREATE INDEX "index_project_user_id" ON "cd_project" ("user_id");
CREATE INDEX "index_project_admin_id" ON "cd_project" ("admin_id");
INSERT INTO cd_project (id, user_id, "admin_id", "name", "disabled", "is_system") VALUES (1, -1, 1,'default', false,false);
select setval('cd_project_id_seq', 1);
ALTER TABLE cd_cert_info ADD COLUMN project_id bigint;
CREATE INDEX "index_cert_project_id" ON "cd_cert_info" ("project_id");
ALTER TABLE cd_site_info ADD COLUMN project_id bigint;
CREATE INDEX "index_site_project_id" ON "cd_site_info" ("project_id");
ALTER TABLE cd_site_ip ADD COLUMN project_id bigint;
CREATE INDEX "index_site_ip_project_id" ON "cd_site_ip" ("project_id");
ALTER TABLE cd_open_key ADD COLUMN project_id bigint;
CREATE INDEX "index_open_key_project_id" ON "cd_open_key" ("project_id");
ALTER TABLE cd_access ADD COLUMN project_id bigint;
CREATE INDEX "index_access_project_id" ON "cd_access" ("project_id");
ALTER TABLE cd_addon ADD COLUMN project_id bigint;
CREATE INDEX "index_addon_project_id" ON "cd_addon" ("project_id");
ALTER TABLE pi_pipeline ADD COLUMN project_id bigint;
CREATE INDEX "index_pipeline_project_id" ON "pi_pipeline" ("project_id");
ALTER TABLE pi_pipeline_group ADD COLUMN project_id bigint;
CREATE INDEX "index_pipeline_group_project_id" ON "pi_pipeline_group" ("project_id");
ALTER TABLE pi_storage ADD COLUMN project_id bigint;
CREATE INDEX "index_storage_project_id" ON "pi_storage" ("project_id");
ALTER TABLE pi_notification ADD COLUMN project_id bigint;
CREATE INDEX "index_notification_project_id" ON "pi_notification" ("project_id");
ALTER TABLE pi_history ADD COLUMN project_id bigint;
CREATE INDEX "index_history_project_id" ON "pi_history" ("project_id");
ALTER TABLE pi_history_log ADD COLUMN project_id bigint;
CREATE INDEX "index_history_log_project_id" ON "pi_history_log" ("project_id");
ALTER TABLE pi_template ADD COLUMN project_id bigint;
CREATE INDEX "index_template_project_id" ON "pi_template" ("project_id");
ALTER TABLE pi_sub_domain ADD COLUMN project_id bigint;
CREATE INDEX "index_sub_domain_project_id" ON "pi_sub_domain" ("project_id");
ALTER TABLE cd_cname_record ADD COLUMN project_id bigint;
CREATE INDEX "index_cname_record_project_id" ON "cd_cname_record" ("project_id");
ALTER TABLE cd_domain ADD COLUMN project_id bigint;
CREATE INDEX "index_domain_project_id" ON "cd_domain" ("project_id");
ALTER TABLE user_settings ADD COLUMN project_id bigint;
CREATE INDEX "index_user_settings_project_id" ON "user_settings" ("project_id");
ALTER TABLE cd_group ADD COLUMN project_id bigint;
CREATE INDEX "index_group_project_id" ON "cd_group" ("project_id");
CREATE TABLE "cd_project_member"
(
"id" bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL,
"user_id" bigint NOT NULL,
"project_id" bigint NOT NULL,
"permission" varchar(128) NOT NULL DEFAULT ('read'),
"create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
ALTER TABLE cd_project_member ADD COLUMN status varchar(128);
CREATE INDEX "index_project_member_user_id" ON "cd_project_member" ("user_id");
CREATE INDEX "index_project_member_project_id" ON "cd_project_member" ("project_id");
CREATE TABLE "cd_audit_log"
(
"id" bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL,
"user_id" bigint NOT NULL,
"username" varchar(128) NOT NULL,
"project_id" bigint NOT NULL,
"project_name" varchar(512) NOT NULL,
"type" varchar(128) NOT NULL,
"action" varchar(128) NOT NULL DEFAULT ('read'),
"content" text NOT NULL,
"ip_address" varchar(128) NOT NULL,
"create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);
CREATE INDEX "index_audit_log_user_id" ON "cd_audit_log" ("user_id");
CREATE INDEX "index_audit_log_project_id" ON "cd_audit_log" ("project_id");
ALTER TABLE cd_site_info ADD COLUMN ip_address varchar(128);

View File

@@ -14,7 +14,7 @@ CREATE TABLE "cd_project"
CREATE INDEX "index_project_user_id" ON "cd_project" ("user_id");
CREATE INDEX "index_project_admin_id" ON "cd_project" ("admin_id");
INSERT INTO cd_project (id, user_id, "admin_id", "name", "disabled") VALUES (1, -1, 1,'default', false,false);
INSERT INTO cd_project (id, user_id, "admin_id", "name", "disabled", "is_system") VALUES (1, -1, 1,'default', false,false);
ALTER TABLE cd_cert_info ADD COLUMN project_id integer;
CREATE INDEX "index_cert_project_id" ON "cd_cert_info" ("project_id");

View File

@@ -69,7 +69,10 @@ export class ProjectService extends BaseService<ProjectEntity> {
async getUserProjects(userId: number) {
const memberList = await this.projectMemberService.getByUserId(userId, 'approved');
const projectIds = memberList.map(item => item.projectId);
let projectIds = memberList.map(item => item.projectId);
if (!projectIds || projectIds.length === 0) {
projectIds = [0]
}
const projectList = await this.repository.createQueryBuilder('project')
.where(' project.disabled = false')
.where(' project.userId = :userId', { userId: ENTERPRISE_USER_ID })