This commit is contained in:
longdayi 2025-02-20 20:13:11 +08:00
parent 2bd1941bd8
commit 2f42048c5c
12 changed files with 64 additions and 88 deletions

View File

@ -21,7 +21,7 @@ export abstract class RowModelService {
// 添加更多需要引号的关键词 // 添加更多需要引号的关键词
]); ]);
protected logger = new Logger(this.tableName); protected logger = new Logger(this.tableName);
protected constructor(protected tableName: string) {} protected constructor(protected tableName: string) { }
protected async getRowDto(row: any, staff?: UserProfile): Promise<any> { protected async getRowDto(row: any, staff?: UserProfile): Promise<any> {
return row; return row;
} }
@ -52,7 +52,7 @@ export abstract class RowModelService {
]); ]);
SQL = await this.getRowsSqlWrapper(SQL, request, staff); SQL = await this.getRowsSqlWrapper(SQL, request, staff);
this.logger.debug('getrows', SQL); // this.logger.debug('getrows', SQL);
const results: any[] = (await db?.$queryRawUnsafe(SQL)) || []; const results: any[] = (await db?.$queryRawUnsafe(SQL)) || [];
@ -140,11 +140,11 @@ export abstract class RowModelService {
private buildFilterConditions(filterModel: any): LogicalCondition[] { private buildFilterConditions(filterModel: any): LogicalCondition[] {
return filterModel return filterModel
? Object.entries(filterModel)?.map(([key, item]) => ? Object.entries(filterModel)?.map(([key, item]) =>
SQLBuilder.createFilterSql( SQLBuilder.createFilterSql(
key === 'ag-Grid-AutoColumn' ? 'name' : key, key === 'ag-Grid-AutoColumn' ? 'name' : key,
item, item,
), ),
) )
: []; : [];
} }

View File

@ -298,12 +298,12 @@ export class TermService extends BaseTreeService<Prisma.TermDelegate> {
...(hasAnyPerms ...(hasAnyPerms
? {} // 当有全局权限时,不添加任何额外条件 ? {} // 当有全局权限时,不添加任何额外条件
: { : {
// 当无全局权限时添加域ID过滤 // 当无全局权限时添加域ID过滤
OR: [ OR: [
{ domainId: null }, // 通用记录 { domainId: null }, // 通用记录
{ domainId: domainId }, // 特定域记录 { domainId: domainId }, // 特定域记录
], ],
}), }),
}, },
ancestorId: parentId, ancestorId: parentId,
relDepth: 1, relDepth: 1,
@ -315,29 +315,29 @@ export class TermService extends BaseTreeService<Prisma.TermDelegate> {
}), }),
termIds termIds
? db.term.findMany({ ? db.term.findMany({
where: { where: {
...(termIds && { ...(termIds && {
OR: [
...(validTermIds.length
? [{ id: { in: validTermIds } }]
: []),
],
}),
taxonomyId: taxonomyId,
// 动态权限控制条件
...(hasAnyPerms
? {} // 当有全局权限时,不添加任何额外条件
: {
// 当无全局权限时添加域ID过滤
OR: [ OR: [
...(validTermIds.length { domainId: null }, // 通用记录
? [{ id: { in: validTermIds } }] { domainId: domainId }, // 特定域记录
: []),
], ],
}), }),
taxonomyId: taxonomyId, },
// 动态权限控制条件 include: { children: true },
...(hasAnyPerms orderBy: { order: 'asc' },
? {} // 当有全局权限时,不添加任何额外条件 })
: {
// 当无全局权限时添加域ID过滤
OR: [
{ domainId: null }, // 通用记录
{ domainId: domainId }, // 特定域记录
],
}),
},
include: { children: true },
orderBy: { order: 'asc' },
})
: [], : [],
]); ]);
const children = childrenData const children = childrenData
@ -371,12 +371,12 @@ export class TermService extends BaseTreeService<Prisma.TermDelegate> {
...(hasAnyPerms ...(hasAnyPerms
? {} // 当有全局权限时,不添加任何额外条件 ? {} // 当有全局权限时,不添加任何额外条件
: { : {
// 当无全局权限时添加域ID过滤 // 当无全局权限时添加域ID过滤
OR: [ OR: [
{ domainId: null }, // 通用记录 { domainId: null }, // 通用记录
{ domainId: domainId }, // 特定域记录 { domainId: domainId }, // 特定域记录
], ],
}), }),
}, },
}, },
include: { include: {
@ -398,12 +398,12 @@ export class TermService extends BaseTreeService<Prisma.TermDelegate> {
...(hasAnyPerms ...(hasAnyPerms
? {} // 当有全局权限时,不添加任何额外条件 ? {} // 当有全局权限时,不添加任何额外条件
: { : {
// 当无全局权限时添加域ID过滤 // 当无全局权限时添加域ID过滤
OR: [ OR: [
{ domainId: null }, // 通用记录 { domainId: null }, // 通用记录
{ domainId: domainId }, // 特定域记录 { domainId: domainId }, // 特定域记录
], ],
}), }),
}, },
include: { children: true }, // 包含子节点信息 include: { children: true }, // 包含子节点信息
orderBy: { order: 'asc' }, // 按顺序升序排序 orderBy: { order: 'asc' }, // 按顺序升序排序

View File

@ -21,7 +21,6 @@ export class GenDevService {
deptStaffRecord: Record<string, Staff[]> = {}; deptStaffRecord: Record<string, Staff[]> = {};
terms: Record<TaxonomySlug, Term[]> = { terms: Record<TaxonomySlug, Term[]> = {
[TaxonomySlug.CATEGORY]: [], [TaxonomySlug.CATEGORY]: [],
[TaxonomySlug.UNIT]: [],
[TaxonomySlug.TAG]: [], [TaxonomySlug.TAG]: [],
[TaxonomySlug.LEVEL]: [], [TaxonomySlug.LEVEL]: [],
}; };
@ -36,7 +35,7 @@ export class GenDevService {
private readonly departmentService: DepartmentService, private readonly departmentService: DepartmentService,
private readonly staffService: StaffService, private readonly staffService: StaffService,
private readonly termService: TermService, private readonly termService: TermService,
) {} ) { }
async genDataEvent() { async genDataEvent() {
EventBus.emit('genDataEvent', { type: 'start' }); EventBus.emit('genDataEvent', { type: 'start' });
try { try {
@ -62,7 +61,7 @@ export class GenDevService {
const domains = this.depts.filter((item) => item.isDomain); const domains = this.depts.filter((item) => item.isDomain);
for (const domain of domains) { for (const domain of domains) {
await this.createTerms(domain, TaxonomySlug.CATEGORY, depth, count); await this.createTerms(domain, TaxonomySlug.CATEGORY, depth, count);
await this.createTerms(domain, TaxonomySlug.UNIT, depth, count); // await this.createTerms(domain, TaxonomySlug.UNIT, depth, count);
} }
} }
const termCount = await db.term.count(); const termCount = await db.term.count();

View File

@ -14,7 +14,6 @@ import { Toaster } from 'react-hot-toast';
dayjs.locale("zh-cn"); dayjs.locale("zh-cn");
function App() { function App() {
return ( return (
<> <>
<AuthProvider> <AuthProvider>

View File

@ -3,7 +3,11 @@ import { mockCourses } from './mockData';
import FilterSection from './components/FilterSection'; import FilterSection from './components/FilterSection';
import CourseList from './components/CourseList'; import CourseList from './components/CourseList';
export default function CoursesPage() { export default function CoursesPage() {
const [currentPage, setCurrentPage] = useState(1); const [currentPage, setCurrentPage] = useState(1);
const [selectedCategory, setSelectedCategory] = useState(''); const [selectedCategory, setSelectedCategory] = useState('');
const [selectedLevel, setSelectedLevel] = useState(''); const [selectedLevel, setSelectedLevel] = useState('');

View File

@ -1,5 +1,4 @@
import MindEditor from "@web/src/components/common/editor/MindEditor"; import MindEditor from "@web/src/components/common/editor/MindEditor";
import MindElixir, { MindElixirInstance } from "mind-elixir";
import { useEffect, useRef } from "react"; import { useEffect, useRef } from "react";
export default function PathsPage() { export default function PathsPage() {
return <MindEditor></MindEditor> return <MindEditor></MindEditor>

View File

@ -1,4 +1,4 @@
import { MindElixirInstance } from "packages/mind-elixir-core/dist/types"; import { MindElixirInstance } from "mind-elixir";
import { useRef, useEffect } from "react"; import { useRef, useEffect } from "react";
import MindElixir from 'mind-elixir'; import MindElixir from 'mind-elixir';
@ -20,9 +20,7 @@ export default function MindEditor() {
me.current = instance; me.current = instance;
}, []); }, []);
return <div > return <div >
<div>
1
</div>
<div id="map" style={{ width: "100%" }} /> <div id="map" style={{ width: "100%" }} />
</div> </div>
} }

View File

@ -17,31 +17,12 @@ import {
} from "antd"; } from "antd";
import React, { useCallback, useEffect, useState } from "react"; import React, { useCallback, useEffect, useState } from "react";
import { import {
DndContext,
closestCenter,
KeyboardSensor,
PointerSensor,
useSensor,
useSensors,
DragEndEvent,
} from "@dnd-kit/core";
import { api, emitDataChange } from "@nice/client";
import {
arrayMove,
SortableContext,
sortableKeyboardCoordinates,
useSortable, useSortable,
verticalListSortingStrategy,
} from "@dnd-kit/sortable"; } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities"; import { CSS } from "@dnd-kit/utilities";
import QuillEditor from "@web/src/components/common/editor/quill/QuillEditor";
import { TusUploader } from "@web/src/components/common/uploader/TusUploader";
import { Lecture, LectureType, PostType } from "@nice/common"; import { Lecture, LectureType, PostType } from "@nice/common";
import { useCourseEditor } from "../../context/CourseEditorContext";
import { usePost } from "@nice/client"; import { usePost } from "@nice/client";
import toast from "react-hot-toast"; import toast from "react-hot-toast";
import { CourseContentFormHeader } from "./CourseContentFormHeader";
import { CourseSectionEmpty } from "./CourseSectionEmpty";
import { LectureData, SectionData } from "./interface"; import { LectureData, SectionData } from "./interface";
interface SortableSectionProps { interface SortableSectionProps {
courseId?: string; courseId?: string;

View File

@ -129,3 +129,4 @@
height: 600px; height: 600px;
width: 100%; width: 100%;
} }

View File

@ -3,13 +3,9 @@ import React from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import App from "./App.js"; import App from "./App.js";
import "./index.css"; import "./index.css";
import { ModuleRegistry } from "@ag-grid-community/core"; import { ModuleRegistry } from "@ag-grid-community/core";
import { LicenseManager } from "@ag-grid-enterprise/core"; import { LicenseManager } from "@ag-grid-enterprise/core";
import { ClientSideRowModelModule } from "@ag-grid-community/client-side-row-model"; import { ClientSideRowModelModule } from "@ag-grid-community/client-side-row-model";
ModuleRegistry.registerModules([ClientSideRowModelModule]); ModuleRegistry.registerModules([ClientSideRowModelModule]);
LicenseManager.setLicenseKey( LicenseManager.setLicenseKey(

View File

@ -15,7 +15,6 @@ export enum LectureType {
} }
export enum TaxonomySlug { export enum TaxonomySlug {
CATEGORY = "category", CATEGORY = "category",
UNIT = "unit",
TAG = "tag", TAG = "tag",
LEVEL = "level", LEVEL = "level",
} }

View File

@ -12,7 +12,7 @@ importers:
dependencies: dependencies:
'@nestjs/bullmq': '@nestjs/bullmq':
specifier: ^10.2.0 specifier: ^10.2.0
version: 10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))(bullmq@5.34.8) version: 10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(bullmq@5.34.8)
'@nestjs/common': '@nestjs/common':
specifier: ^10.3.10 specifier: ^10.3.10
version: 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1) version: 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -33,7 +33,7 @@ importers:
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.4.15)(rxjs@7.8.1) version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.4.15)(rxjs@7.8.1)
'@nestjs/schedule': '@nestjs/schedule':
specifier: ^4.1.0 specifier: ^4.1.0
version: 4.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)) version: 4.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
'@nestjs/websockets': '@nestjs/websockets':
specifier: ^10.3.10 specifier: ^10.3.10
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-socket.io@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1) version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-socket.io@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -148,7 +148,7 @@ importers:
version: 10.2.3(chokidar@3.6.0)(typescript@5.7.2) version: 10.2.3(chokidar@3.6.0)(typescript@5.7.2)
'@nestjs/testing': '@nestjs/testing':
specifier: ^10.0.0 specifier: ^10.0.0
version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)) version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)
'@types/exceljs': '@types/exceljs':
specifier: ^1.3.0 specifier: ^1.3.0
version: 1.3.2 version: 1.3.2
@ -673,7 +673,7 @@ importers:
specifier: ^5.62.0 specifier: ^5.62.0
version: 5.62.0(eslint@8.57.1)(typescript@5.7.2) version: 5.62.0(eslint@8.57.1)(typescript@5.7.2)
'@viselect/vanilla': '@viselect/vanilla':
specifier: ^3.5.1 specifier: ^3.9.0
version: 3.9.0 version: 3.9.0
eslint: eslint:
specifier: ^8.57.0 specifier: ^8.57.0
@ -9665,15 +9665,15 @@ snapshots:
'@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3':
optional: true optional: true
'@nestjs/bull-shared@10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))': '@nestjs/bull-shared@10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
dependencies: dependencies:
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
tslib: 2.8.1 tslib: 2.8.1
'@nestjs/bullmq@10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))(bullmq@5.34.8)': '@nestjs/bullmq@10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(bullmq@5.34.8)':
dependencies: dependencies:
'@nestjs/bull-shared': 10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)) '@nestjs/bull-shared': 10.2.3(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
bullmq: 5.34.8 bullmq: 5.34.8
@ -9770,7 +9770,7 @@ snapshots:
- supports-color - supports-color
- utf-8-validate - utf-8-validate
'@nestjs/schedule@4.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))': '@nestjs/schedule@4.1.2(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)':
dependencies: dependencies:
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -9788,7 +9788,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- chokidar - chokidar
'@nestjs/testing@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15))': '@nestjs/testing@10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15)(@nestjs/platform-express@10.4.15)':
dependencies: dependencies:
'@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/common': 10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.15)(@nestjs/websockets@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.1)