This commit is contained in:
ruying408
2025-04-13 20:49:43 +08:00
parent d0e5c8cd6e
commit 2ae3ff5493
165 changed files with 318 additions and 32689 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
-3
View File
@@ -1,3 +0,0 @@
{
"type": "module"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -1,583 +0,0 @@
import {
DefaultMagicKeysAliasMap,
StorageSerializers,
TransitionPresets,
assert,
breakpointsAntDesign,
breakpointsBootstrapV5,
breakpointsElement,
breakpointsMasterCss,
breakpointsPrimeFlex,
breakpointsQuasar,
breakpointsSematic,
breakpointsTailwind,
breakpointsVuetify,
breakpointsVuetifyV2,
breakpointsVuetifyV3,
bypassFilter,
camelize,
clamp,
cloneFnJSON,
computedAsync,
computedEager,
computedInject,
computedWithControl,
containsProp,
controlledRef,
createEventHook,
createFetch,
createFilterWrapper,
createGlobalState,
createInjectionState,
createRef,
createReusableTemplate,
createSharedComposable,
createSingletonPromise,
createTemplatePromise,
createUnrefFn,
customStorageEventName,
debounceFilter,
defaultDocument,
defaultLocation,
defaultNavigator,
defaultWindow,
executeTransition,
extendRef,
formatDate,
formatTimeAgo,
get,
getLifeCycleTarget,
getSSRHandler,
hasOwn,
hyphenate,
identity,
increaseWithUnit,
injectLocal,
invoke,
isClient,
isDef,
isDefined,
isIOS,
isObject,
isWorker,
makeDestructurable,
mapGamepadToXbox360Controller,
noop,
normalizeDate,
notNullish,
now,
objectEntries,
objectOmit,
objectPick,
onClickOutside,
onElementRemoval,
onKeyDown,
onKeyPressed,
onKeyStroke,
onKeyUp,
onLongPress,
onStartTyping,
pausableFilter,
promiseTimeout,
provideLocal,
provideSSRWidth,
pxValue,
rand,
reactify,
reactifyObject,
reactiveComputed,
reactiveOmit,
reactivePick,
refAutoReset,
refDebounced,
refDefault,
refThrottled,
refWithControl,
resolveRef,
resolveUnref,
set,
setSSRHandler,
syncRef,
syncRefs,
templateRef,
throttleFilter,
timestamp,
toArray,
toReactive,
toRef,
toRefs,
toValue,
tryOnBeforeMount,
tryOnBeforeUnmount,
tryOnMounted,
tryOnScopeDispose,
tryOnUnmounted,
unrefElement,
until,
useActiveElement,
useAnimate,
useArrayDifference,
useArrayEvery,
useArrayFilter,
useArrayFind,
useArrayFindIndex,
useArrayFindLast,
useArrayIncludes,
useArrayJoin,
useArrayMap,
useArrayReduce,
useArraySome,
useArrayUnique,
useAsyncQueue,
useAsyncState,
useBase64,
useBattery,
useBluetooth,
useBreakpoints,
useBroadcastChannel,
useBrowserLocation,
useCached,
useClipboard,
useClipboardItems,
useCloned,
useColorMode,
useConfirmDialog,
useCountdown,
useCounter,
useCssVar,
useCurrentElement,
useCycleList,
useDark,
useDateFormat,
useDebounceFn,
useDebouncedRefHistory,
useDeviceMotion,
useDeviceOrientation,
useDevicePixelRatio,
useDevicesList,
useDisplayMedia,
useDocumentVisibility,
useDraggable,
useDropZone,
useElementBounding,
useElementByPoint,
useElementHover,
useElementSize,
useElementVisibility,
useEventBus,
useEventListener,
useEventSource,
useEyeDropper,
useFavicon,
useFetch,
useFileDialog,
useFileSystemAccess,
useFocus,
useFocusWithin,
useFps,
useFullscreen,
useGamepad,
useGeolocation,
useIdle,
useImage,
useInfiniteScroll,
useIntersectionObserver,
useInterval,
useIntervalFn,
useKeyModifier,
useLastChanged,
useLocalStorage,
useMagicKeys,
useManualRefHistory,
useMediaControls,
useMediaQuery,
useMemoize,
useMemory,
useMounted,
useMouse,
useMouseInElement,
useMousePressed,
useMutationObserver,
useNavigatorLanguage,
useNetwork,
useNow,
useObjectUrl,
useOffsetPagination,
useOnline,
usePageLeave,
useParallax,
useParentElement,
usePerformanceObserver,
usePermission,
usePointer,
usePointerLock,
usePointerSwipe,
usePreferredColorScheme,
usePreferredContrast,
usePreferredDark,
usePreferredLanguages,
usePreferredReducedMotion,
usePreferredReducedTransparency,
usePrevious,
useRafFn,
useRefHistory,
useResizeObserver,
useSSRWidth,
useScreenOrientation,
useScreenSafeArea,
useScriptTag,
useScroll,
useScrollLock,
useSessionStorage,
useShare,
useSorted,
useSpeechRecognition,
useSpeechSynthesis,
useStepper,
useStorage,
useStorageAsync,
useStyleTag,
useSupported,
useSwipe,
useTemplateRefsList,
useTextDirection,
useTextSelection,
useTextareaAutosize,
useThrottleFn,
useThrottledRefHistory,
useTimeAgo,
useTimeout,
useTimeoutFn,
useTimeoutPoll,
useTimestamp,
useTitle,
useToNumber,
useToString,
useToggle,
useTransition,
useUrlSearchParams,
useUserMedia,
useVModel,
useVModels,
useVibrate,
useVirtualList,
useWakeLock,
useWebNotification,
useWebSocket,
useWebWorker,
useWebWorkerFn,
useWindowFocus,
useWindowScroll,
useWindowSize,
watchArray,
watchAtMost,
watchDebounced,
watchDeep,
watchIgnorable,
watchImmediate,
watchOnce,
watchPausable,
watchThrottled,
watchTriggerable,
watchWithFilter,
whenever
} from "./chunk-MSWVC7RX.js";
import "./chunk-CQOUZRMK.js";
export {
DefaultMagicKeysAliasMap,
StorageSerializers,
TransitionPresets,
assert,
computedAsync as asyncComputed,
refAutoReset as autoResetRef,
breakpointsAntDesign,
breakpointsBootstrapV5,
breakpointsElement,
breakpointsMasterCss,
breakpointsPrimeFlex,
breakpointsQuasar,
breakpointsSematic,
breakpointsTailwind,
breakpointsVuetify,
breakpointsVuetifyV2,
breakpointsVuetifyV3,
bypassFilter,
camelize,
clamp,
cloneFnJSON,
computedAsync,
computedEager,
computedInject,
computedWithControl,
containsProp,
computedWithControl as controlledComputed,
controlledRef,
createEventHook,
createFetch,
createFilterWrapper,
createGlobalState,
createInjectionState,
reactify as createReactiveFn,
createRef,
createReusableTemplate,
createSharedComposable,
createSingletonPromise,
createTemplatePromise,
createUnrefFn,
customStorageEventName,
debounceFilter,
refDebounced as debouncedRef,
watchDebounced as debouncedWatch,
defaultDocument,
defaultLocation,
defaultNavigator,
defaultWindow,
computedEager as eagerComputed,
executeTransition,
extendRef,
formatDate,
formatTimeAgo,
get,
getLifeCycleTarget,
getSSRHandler,
hasOwn,
hyphenate,
identity,
watchIgnorable as ignorableWatch,
increaseWithUnit,
injectLocal,
invoke,
isClient,
isDef,
isDefined,
isIOS,
isObject,
isWorker,
makeDestructurable,
mapGamepadToXbox360Controller,
noop,
normalizeDate,
notNullish,
now,
objectEntries,
objectOmit,
objectPick,
onClickOutside,
onElementRemoval,
onKeyDown,
onKeyPressed,
onKeyStroke,
onKeyUp,
onLongPress,
onStartTyping,
pausableFilter,
watchPausable as pausableWatch,
promiseTimeout,
provideLocal,
provideSSRWidth,
pxValue,
rand,
reactify,
reactifyObject,
reactiveComputed,
reactiveOmit,
reactivePick,
refAutoReset,
refDebounced,
refDefault,
refThrottled,
refWithControl,
resolveRef,
resolveUnref,
set,
setSSRHandler,
syncRef,
syncRefs,
templateRef,
throttleFilter,
refThrottled as throttledRef,
watchThrottled as throttledWatch,
timestamp,
toArray,
toReactive,
toRef,
toRefs,
toValue,
tryOnBeforeMount,
tryOnBeforeUnmount,
tryOnMounted,
tryOnScopeDispose,
tryOnUnmounted,
unrefElement,
until,
useActiveElement,
useAnimate,
useArrayDifference,
useArrayEvery,
useArrayFilter,
useArrayFind,
useArrayFindIndex,
useArrayFindLast,
useArrayIncludes,
useArrayJoin,
useArrayMap,
useArrayReduce,
useArraySome,
useArrayUnique,
useAsyncQueue,
useAsyncState,
useBase64,
useBattery,
useBluetooth,
useBreakpoints,
useBroadcastChannel,
useBrowserLocation,
useCached,
useClipboard,
useClipboardItems,
useCloned,
useColorMode,
useConfirmDialog,
useCountdown,
useCounter,
useCssVar,
useCurrentElement,
useCycleList,
useDark,
useDateFormat,
refDebounced as useDebounce,
useDebounceFn,
useDebouncedRefHistory,
useDeviceMotion,
useDeviceOrientation,
useDevicePixelRatio,
useDevicesList,
useDisplayMedia,
useDocumentVisibility,
useDraggable,
useDropZone,
useElementBounding,
useElementByPoint,
useElementHover,
useElementSize,
useElementVisibility,
useEventBus,
useEventListener,
useEventSource,
useEyeDropper,
useFavicon,
useFetch,
useFileDialog,
useFileSystemAccess,
useFocus,
useFocusWithin,
useFps,
useFullscreen,
useGamepad,
useGeolocation,
useIdle,
useImage,
useInfiniteScroll,
useIntersectionObserver,
useInterval,
useIntervalFn,
useKeyModifier,
useLastChanged,
useLocalStorage,
useMagicKeys,
useManualRefHistory,
useMediaControls,
useMediaQuery,
useMemoize,
useMemory,
useMounted,
useMouse,
useMouseInElement,
useMousePressed,
useMutationObserver,
useNavigatorLanguage,
useNetwork,
useNow,
useObjectUrl,
useOffsetPagination,
useOnline,
usePageLeave,
useParallax,
useParentElement,
usePerformanceObserver,
usePermission,
usePointer,
usePointerLock,
usePointerSwipe,
usePreferredColorScheme,
usePreferredContrast,
usePreferredDark,
usePreferredLanguages,
usePreferredReducedMotion,
usePreferredReducedTransparency,
usePrevious,
useRafFn,
useRefHistory,
useResizeObserver,
useSSRWidth,
useScreenOrientation,
useScreenSafeArea,
useScriptTag,
useScroll,
useScrollLock,
useSessionStorage,
useShare,
useSorted,
useSpeechRecognition,
useSpeechSynthesis,
useStepper,
useStorage,
useStorageAsync,
useStyleTag,
useSupported,
useSwipe,
useTemplateRefsList,
useTextDirection,
useTextSelection,
useTextareaAutosize,
refThrottled as useThrottle,
useThrottleFn,
useThrottledRefHistory,
useTimeAgo,
useTimeout,
useTimeoutFn,
useTimeoutPoll,
useTimestamp,
useTitle,
useToNumber,
useToString,
useToggle,
useTransition,
useUrlSearchParams,
useUserMedia,
useVModel,
useVModels,
useVibrate,
useVirtualList,
useWakeLock,
useWebNotification,
useWebSocket,
useWebWorker,
useWebWorkerFn,
useWindowFocus,
useWindowScroll,
useWindowSize,
watchArray,
watchAtMost,
watchDebounced,
watchDeep,
watchIgnorable,
watchImmediate,
watchOnce,
watchPausable,
watchThrottled,
watchTriggerable,
watchWithFilter,
whenever
};
//# sourceMappingURL=vitepress___@vueuse_core.js.map
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
-343
View File
@@ -1,343 +0,0 @@
import {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
DeprecationTypes,
EffectScope,
ErrorCodes,
ErrorTypeStrings,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
TrackOpTypes,
Transition,
TransitionGroup,
TriggerOpTypes,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBaseVNode,
createBlock,
createCommentVNode,
createElementBlock,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getCurrentWatcher,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
hydrateOnIdle,
hydrateOnInteraction,
hydrateOnMediaQuery,
hydrateOnVisible,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
onWatcherCleanup,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useHost,
useId,
useModel,
useSSRContext,
useShadowRoot,
useSlots,
useTemplateRef,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
} from "./chunk-CQOUZRMK.js";
export {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
DeprecationTypes,
EffectScope,
ErrorCodes,
ErrorTypeStrings,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
TrackOpTypes,
Transition,
TransitionGroup,
TriggerOpTypes,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBlock,
createCommentVNode,
createElementBlock,
createBaseVNode as createElementVNode,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getCurrentWatcher,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
hydrateOnIdle,
hydrateOnInteraction,
hydrateOnMediaQuery,
hydrateOnVisible,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
onWatcherCleanup,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useHost,
useId,
useModel,
useSSRContext,
useShadowRoot,
useSlots,
useTemplateRef,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
};
//# sourceMappingURL=vue.js.map
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}
+2 -2
View File
File diff suppressed because one or more lines are too long
+6 -6
View File
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as e,a as t,o as r,ah as o}from"./chunks/framework.BKXlU_Nx.js";const m=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),l={name:"README.md"};function n(i,a,s,c,d,p){return r(),t("div",null,a[0]||(a[0]=[o('<h1 id="介绍" tabindex="-1">介绍 <a class="header-anchor" href="#介绍" aria-label="Permalink to &quot;介绍&quot;">​</a></h1><p>这是 Cool Admin(Java 版)的在线文档仓库,我们会尽力完善文档。也希望广大开发者粉丝帮助完善文档,积极提交<a href="https://github.com/cool-team-official/cool-admin-java-docs/pulls" target="_blank" rel="noreferrer">Pull requests</a>,共同参与开源,你的贡献可能给其他人代码巨大的帮助</p><h1 id="地址" tabindex="-1">地址 <a class="header-anchor" href="#地址" aria-label="Permalink to &quot;地址&quot;">​</a></h1><ul><li><p>文档:<a href="https://java.cool-admin.com" target="_blank" rel="noreferrer">https://java.cool-admin.com</a></p></li><li><p>官网:<a href="https://cool-admin.com" target="_blank" rel="noreferrer">https://cool-admin.com</a></p></li></ul>',4)]))}const h=e(l,[["render",n]]);export{m as __pageData,h as default};
+1
View File
@@ -0,0 +1 @@
import{_ as e,a as t,o as r,ah as o}from"./chunks/framework.BKXlU_Nx.js";const m=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),l={name:"README.md"};function n(i,a,s,c,d,p){return r(),t("div",null,a[0]||(a[0]=[o("",4)]))}const h=e(l,[["render",n]]);export{m as __pageData,h as default};
-1
View File
@@ -1 +0,0 @@
import{_ as a,a as e,o as t,aj as o}from"./chunks/framework.BjhQB2K5.js";const f=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),r={name:"README.md"},l=o('<h1 id="介绍" tabindex="-1">介绍 <a class="header-anchor" href="#介绍" aria-label="Permalink to &quot;介绍&quot;">​</a></h1><p>这是 Cool Admin(Java 版)的在线文档仓库,我们会尽力完善文档。也希望广大开发者粉丝帮助完善文档,积极提交<a href="https://github.com/cool-team-official/cool-admin-java-docs/pulls" target="_blank" rel="noreferrer">Pull requests</a>,共同参与开源,你的贡献可能给其他人代码巨大的帮助</p><h1 id="地址" tabindex="-1">地址 <a class="header-anchor" href="#地址" aria-label="Permalink to &quot;地址&quot;">​</a></h1><ul><li><p>文档:<a href="https://java.cool-admin.com" target="_blank" rel="noreferrer">https://java.cool-admin.com</a></p></li><li><p>官网:<a href="https://cool-admin.com" target="_blank" rel="noreferrer">https://cool-admin.com</a></p></li></ul>',4),n=[l];function c(s,i,_,d,h,p){return t(),e("div",null,n)}const u=a(r,[["render",c]]);export{f as __pageData,u as default};
-1
View File
@@ -1 +0,0 @@
import{_ as a,a as e,o as t,aj as o}from"./chunks/framework.BjhQB2K5.js";const f=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),r={name:"README.md"},l=o("",4),n=[l];function c(s,i,_,d,h,p){return t(),e("div",null,n)}const u=a(r,[["render",c]]);export{f as __pageData,u as default};
@@ -1 +1 @@
import{R as p}from"./chunks/theme.Dh5vPo0_.js";import{U as s,a5 as i,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,d as v,u as w,s as y,q as C,af as P,ag as R,ah as b,ai as E}from"./chunks/framework.BjhQB2K5.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&P(),R(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
import{R as p}from"./chunks/theme.C9_-QGMz.js";import{R as s,a3 as i,a4 as u,a5 as c,a6 as l,a7 as f,a8 as d,a9 as m,aa as h,ab as g,ac as A,d as R,u as v,p as w,n as y,ad as C,ae as P,af as b,ag as E}from"./chunks/framework.BKXlU_Nx.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=R({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{_ as a,a as e,o as t,aj as r}from"./chunks/framework.BjhQB2K5.js";const o="/show/wechat.png",i="/show/douyin.png",s="/show/mp.png",x=JSON.parse('{"title":"交流合作","description":"","frontmatter":{},"headers":[],"relativePath":"src/about/index.md","filePath":"src/about/index.md","lastUpdated":1720593505000}'),n={name:"src/about/index.md"},c=r('<h1 id="交流合作" tabindex="-1">交流合作 <a class="header-anchor" href="#交流合作" aria-label="Permalink to &quot;交流合作&quot;">​</a></h1><p>如果我们的项目对你有用,欢迎加入我们大家庭一起讨论,共创一些美好的事情。</p><h2 id="微信" tabindex="-1">微信 <a class="header-anchor" href="#微信" aria-label="Permalink to &quot;微信&quot;">​</a></h2><p>扫一扫加入微信开发交流群</p><p><img src="'+o+'" alt=""></p><h2 id="抖音" tabindex="-1">抖音 <a class="header-anchor" href="#抖音" aria-label="Permalink to &quot;抖音&quot;">​</a></h2><p>主要是做一些技术教程、技术分享、框架更新、插件分享等内容。你可以在这边了解到一些关于我们框架的最新动态,还可以了解到一些前沿的技术,特别是跟 Ai 相关的,有兴趣的可以关注我们。</p><p><img src="'+i+'" alt=""></p><h2 id="b-站" tabindex="-1">B 站 <a class="header-anchor" href="#b-站" aria-label="Permalink to &quot;B 站&quot;">​</a></h2><p><a href="https://space.bilibili.com/19293745" target="_blank" rel="noreferrer">COOL 团队哔哩哔哩官方账户</a></p><h2 id="公众号" tabindex="-1">公众号 <a class="header-anchor" href="#公众号" aria-label="Permalink to &quot;公众号&quot;">​</a></h2><p>COOL 的一些最新资讯、技术分享、框架更新、插件分享等</p><p><img src="'+s+'" alt=""></p>',13),h=[c];function l(p,d,_,m,u,b){return t(),e("div",null,h)}const q=a(n,[["render",l]]);export{x as __pageData,q as default};
@@ -1 +0,0 @@
import{_ as a,a as e,o as t,aj as r}from"./chunks/framework.BjhQB2K5.js";const o="/show/wechat.png",i="/show/douyin.png",s="/show/mp.png",x=JSON.parse('{"title":"交流合作","description":"","frontmatter":{},"headers":[],"relativePath":"src/about/index.md","filePath":"src/about/index.md","lastUpdated":1720593505000}'),n={name:"src/about/index.md"},c=r("",13),h=[c];function l(p,d,_,m,u,b){return t(),e("div",null,h)}const q=a(n,[["render",l]]);export{x as __pageData,q as default};
+1
View File
@@ -0,0 +1 @@
import{_ as e,a as t,o as r,ah as o}from"./chunks/framework.BKXlU_Nx.js";const i="/show/wechat.png",s="/show/douyin.png",n="/show/mp.png",b=JSON.parse('{"title":"交流合作","description":"","frontmatter":{},"headers":[],"relativePath":"src/about/index.md","filePath":"src/about/index.md","lastUpdated":1720593505000}'),l={name:"src/about/index.md"};function p(c,a,h,d,_,m){return r(),t("div",null,a[0]||(a[0]=[o('<h1 id="交流合作" tabindex="-1">交流合作 <a class="header-anchor" href="#交流合作" aria-label="Permalink to &quot;交流合作&quot;">​</a></h1><p>如果我们的项目对你有用,欢迎加入我们大家庭一起讨论,共创一些美好的事情。</p><h2 id="微信" tabindex="-1">微信 <a class="header-anchor" href="#微信" aria-label="Permalink to &quot;微信&quot;">​</a></h2><p>扫一扫加入微信开发交流群</p><p><img src="'+i+'" alt=""></p><h2 id="抖音" tabindex="-1">抖音 <a class="header-anchor" href="#抖音" aria-label="Permalink to &quot;抖音&quot;">​</a></h2><p>主要是做一些技术教程、技术分享、框架更新、插件分享等内容。你可以在这边了解到一些关于我们框架的最新动态,还可以了解到一些前沿的技术,特别是跟 Ai 相关的,有兴趣的可以关注我们。</p><p><img src="'+s+'" alt=""></p><h2 id="b-站" tabindex="-1">B 站 <a class="header-anchor" href="#b-站" aria-label="Permalink to &quot;B 站&quot;">​</a></h2><p><a href="https://space.bilibili.com/19293745" target="_blank" rel="noreferrer">COOL 团队哔哩哔哩官方账户</a></p><h2 id="公众号" tabindex="-1">公众号 <a class="header-anchor" href="#公众号" aria-label="Permalink to &quot;公众号&quot;">​</a></h2><p>COOL 的一些最新资讯、技术分享、框架更新、插件分享等</p><p><img src="'+n+'" alt=""></p>',13)]))}const f=e(l,[["render",p]]);export{b as __pageData,f as default};
@@ -0,0 +1 @@
import{_ as e,a as t,o as r,ah as o}from"./chunks/framework.BKXlU_Nx.js";const i="/show/wechat.png",s="/show/douyin.png",n="/show/mp.png",b=JSON.parse('{"title":"交流合作","description":"","frontmatter":{},"headers":[],"relativePath":"src/about/index.md","filePath":"src/about/index.md","lastUpdated":1720593505000}'),l={name:"src/about/index.md"};function p(c,a,h,d,_,m){return r(),t("div",null,a[0]||(a[0]=[o("",13)]))}const f=e(l,[["render",p]]);export{b as __pageData,f as default};
+1
View File
@@ -0,0 +1 @@
import{_ as e}from"./chunks/code.VH4xl6Z5.js";import{_ as r,a as t,o as i,ah as o}from"./chunks/framework.BKXlU_Nx.js";const h=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721207284000}'),s={name:"src/guide/ai.md"};function p(_,a,l,n,d,c){return i(),t("div",null,a[0]||(a[0]=[o('<h1 id="ai-编码" tabindex="-1">Ai 编码 <a class="header-anchor" href="#ai-编码" aria-label="Permalink to &quot;Ai 编码&quot;">​</a></h1><p>通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成</p><p><img src="'+e+'" alt="" data-zoomable=""></p><p><a href="https://www.bilibili.com/video/BV1Hm421g7Br/?" target="_blank" rel="noreferrer">B 站视频教程</a></p><p><a href="https://show.cool-admin.com/helper/ai-code" target="_blank" rel="noreferrer">在线演示</a></p>',5)]))}const u=r(s,[["render",p]]);export{h as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as e}from"./chunks/code.VH4xl6Z5.js";import{_ as r,a as t,o as i,ah as o}from"./chunks/framework.BKXlU_Nx.js";const h=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721207284000}'),s={name:"src/guide/ai.md"};function p(_,a,l,n,d,c){return i(),t("div",null,a[0]||(a[0]=[o("",5)]))}const u=r(s,[["render",p]]);export{h as __pageData,u as default};
-1
View File
@@ -1 +0,0 @@
import{_ as a}from"./chunks/code.VH4xl6Z5.js";import{_ as e,a as t,o as r,aj as i}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721207284000}'),o={name:"src/guide/ai.md"},s=i('<h1 id="ai-编码" tabindex="-1">Ai 编码 <a class="header-anchor" href="#ai-编码" aria-label="Permalink to &quot;Ai 编码&quot;">​</a></h1><p>通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成</p><p><img src="'+a+'" alt="" data-zoomable=""></p><p><a href="https://www.bilibili.com/video/BV1Hm421g7Br/?" target="_blank" rel="noreferrer">B 站视频教程</a></p><p><a href="https://show.cool-admin.com/helper/ai-code" target="_blank" rel="noreferrer">在线演示</a></p>',5),_=[s];function c(n,p,d,l,m,h){return r(),t("div",null,_)}const b=e(o,[["render",c]]);export{g as __pageData,b as default};
@@ -1 +0,0 @@
import{_ as a}from"./chunks/code.VH4xl6Z5.js";import{_ as e,a as t,o as r,aj as i}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1721207284000}'),o={name:"src/guide/ai.md"},s=i("",5),_=[s];function c(n,p,d,l,m,h){return r(),t("div",null,_)}const b=e(o,[["render",c]]);export{g as __pageData,b as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1724685357000}'),h={name:"src/guide/cache.md"},l=n(`<h1 id="缓存" tabindex="-1">缓存 <a class="header-anchor" href="#缓存" aria-label="Permalink to &quot;缓存&quot;">​</a></h1><p>为了不过多依赖环境,框架自带基于 springCache 默认实现了两种缓存</p><ul><li>caffeine 无需额外安装软件,由 Ben Manes 开发的一个 Java 缓存库,旨在提供高性能、高效的缓存解决方案。</li><li>redis 需安装 redis,提供了一种高效且可靠的解决方案,能够显著提升应用程序的性能和响应速度。</li></ul><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">spring</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1724685357000}'),l={name:"src/guide/cache.md"};function k(t,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h(`<h1 id="缓存" tabindex="-1">缓存 <a class="header-anchor" href="#缓存" aria-label="Permalink to &quot;缓存&quot;">​</a></h1><p>为了不过多依赖环境,框架自带基于 springCache 默认实现了两种缓存</p><ul><li>caffeine 无需额外安装软件,由 Ben Manes 开发的一个 Java 缓存库,旨在提供高性能、高效的缓存解决方案。</li><li>redis 需安装 redis,提供了一种高效且可靠的解决方案,能够显著提升应用程序的性能和响应速度。</li></ul><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">spring</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # caffeine 缓存</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> cache</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">caffeine</span></span>
@@ -46,4 +46,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const y
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String result </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (String) invoke;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> JSONUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">parseObj</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(result).</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;result&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,12),k=[l];function t(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,12)]))}const c=i(l,[["render",k]]);export{g as __pageData,c as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1724685357000}'),l={name:"src/guide/cache.md"};function k(t,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h("",12)]))}const c=i(l,[["render",k]]);export{g as __pageData,c as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1724685357000}'),h={name:"src/guide/cache.md"},l=n("",12),k=[l];function t(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1725802894000}'),h={name:"src/guide/controller.md"},k=n(`<h1 id="控制器" tabindex="-1">控制器 <a class="header-anchor" href="#控制器" aria-label="Permalink to &quot;控制器&quot;">​</a></h1><p>所有的 controller 都继承自 BaseController,该父类已经实现了以下六个基础方法:add、delete、update、page、list、info,可以大大简化代码,使得 controller 更加简洁。</p><h2 id="示例" tabindex="-1">示例 <a class="header-anchor" href="#示例" aria-label="Permalink to &quot;示例&quot;">​</a></h2><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Tag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1725802894000}'),k={name:"src/guide/controller.md"};function t(l,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h(`<h1 id="控制器" tabindex="-1">控制器 <a class="header-anchor" href="#控制器" aria-label="Permalink to &quot;控制器&quot;">​</a></h1><p>所有的 controller 都继承自 BaseController,该父类已经实现了以下六个基础方法:add、delete、update、page、list、info,可以大大简化代码,使得 controller 更加简洁。</p><h2 id="示例" tabindex="-1">示例 <a class="header-anchor" href="#示例" aria-label="Permalink to &quot;示例&quot;">​</a></h2><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Tag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">CoolRestController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">value</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;/cool&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">api</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;add&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;delete&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;update&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;page&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;list&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;info&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> AdminDemoInfoController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoService</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoEntity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt; {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Override</span></span>
@@ -117,4 +117,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> info </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> info.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mutate</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">paths</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(path).</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">build</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">combine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(info);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> info;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,36),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,36)]))}const y=i(k,[["render",t]]);export{g as __pageData,y as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1725802894000}'),k={name:"src/guide/controller.md"};function t(l,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h("",36)]))}const y=i(k,[["render",t]]);export{g as __pageData,y as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1725802894000}'),h={name:"src/guide/controller.md"},k=n("",36),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
import{_ as t,a as d,o as r,aj as e}from"./chunks/framework.BjhQB2K5.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":1721036629000}'),a={name:"src/guide/db.md"},s=e("",16),o=[s];function i(l,n,c,p,h,b){return r(),d("div",null,o)}const g=t(a,[["render",i]]);export{m as __pageData,g as default};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as d,a as r,o as e,ah as a}from"./chunks/framework.BKXlU_Nx.js";const h=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":1721036629000}'),s={name:"src/guide/db.md"};function o(i,t,l,n,c,p){return e(),r("div",null,t[0]||(t[0]=[a("",16)]))}const u=d(s,[["render",o]]);export{h as __pageData,u as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o=JSON.parse('{"title":"项目部署","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/deploy.md","filePath":"src/guide/deploy.md","lastUpdated":1721207284000}'),l={name:"src/guide/deploy.md"},h=n(`<h1 id="项目部署" tabindex="-1">项目部署 <a class="header-anchor" href="#项目部署" aria-label="Permalink to &quot;项目部署&quot;">​</a></h1><p><a href="https://cool-js.com/service/cloud" target="_blank" rel="noreferrer">🔥 低价云服务器推荐</a></p><div class="tip custom-block"><p class="custom-block-title">注意</p><p>以下教程以 Nodejs 版本为例,Java 版本的也可以参考</p></div><h2 id="普通方式" tabindex="-1">普通方式 <a class="header-anchor" href="#普通方式" aria-label="Permalink to &quot;普通方式&quot;">​</a></h2><p>本部署教程以 node 版本+宝塔为例,其他部署方式也可以参考这个流程。</p><p><a href="https://www.bilibili.com/video/BV1m1421S7tm/" target="_blank" rel="noreferrer">cool-admin 部署视频教程</a></p><h4 id="_1、部署流程-以宝塔为例" tabindex="-1">1、部署流程(以宝塔为例): <a class="header-anchor" href="#_1、部署流程-以宝塔为例" aria-label="Permalink to &quot;1、部署流程(以宝塔为例):&quot;">​</a></h4><ol><li>拉取前后端代码;</li><li>本地配置完数据库运行,等待数据库初始化完成;</li><li>打包前后端代码,打包之前注意配置生产环境的数据库配置<code>config/config.prod.ts</code>,<a href="http://www.midwayjs.org/docs/env_config" target="_blank" rel="noreferrer">查看 midway 官方多环境配置文档</a>;</li><li>服务器环境准备,安装宝塔、mysql、nodejs、nginx、pnpm 等;</li><li>上传前后端代码到服务器;</li><li>安装依赖,编译打包后端服务,启动服务;</li><li>配置 nginx 反向代理;</li><li>访问域名,如果一切正常,恭喜你,部署成功!</li></ol><div class="warning custom-block"><p class="custom-block-title">注意</p><ul><li>线上的数据库是需要本地传上去的,安全考虑生产环境不会自动初始化数据库;</li><li>前端访问后端的接口地址默认是前端根地址+/api,所以需要配置 nginx 反向代理/api 到后端服务;</li></ul></div><h4 id="_2、推荐使用-pnpm-安装依赖" tabindex="-1">2、推荐使用 pnpm 安装依赖 <a class="header-anchor" href="#_2、推荐使用-pnpm-安装依赖" aria-label="Permalink to &quot;2、推荐使用 pnpm 安装依赖&quot;">​</a></h4><p><a href="https://pnpm.io/" target="_blank" rel="noreferrer">pnpm 官网</a></p><p>安装</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -g</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pnpm</span></span></code></pre></div><p>配置淘宝镜像</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> set</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> registry</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://registry.npmmirror.com</span></span></code></pre></div><h4 id="_3、pm2-运行后端服务" tabindex="-1">3、PM2 运行后端服务 <a class="header-anchor" href="#_3、pm2-运行后端服务" aria-label="Permalink to &quot;3、PM2 运行后端服务&quot;">​</a></h4><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">//</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 命令行安装</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pm2</span></span>
import{_ as i,a,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const F=JSON.parse('{"title":"项目部署","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/deploy.md","filePath":"src/guide/deploy.md","lastUpdated":1721207284000}'),p={name:"src/guide/deploy.md"};function h(t,s,k,e,r,d){return n(),a("div",null,s[0]||(s[0]=[l(`<h1 id="项目部署" tabindex="-1">项目部署 <a class="header-anchor" href="#项目部署" aria-label="Permalink to &quot;项目部署&quot;">​</a></h1><p><a href="https://cool-js.com/service/cloud" target="_blank" rel="noreferrer">🔥 低价云服务器推荐</a></p><div class="tip custom-block"><p class="custom-block-title">注意</p><p>以下教程以 Nodejs 版本为例,Java 版本的也可以参考</p></div><h2 id="普通方式" tabindex="-1">普通方式 <a class="header-anchor" href="#普通方式" aria-label="Permalink to &quot;普通方式&quot;">​</a></h2><p>本部署教程以 node 版本+宝塔为例,其他部署方式也可以参考这个流程。</p><p><a href="https://www.bilibili.com/video/BV1m1421S7tm/" target="_blank" rel="noreferrer">cool-admin 部署视频教程</a></p><h4 id="_1、部署流程-以宝塔为例" tabindex="-1">1、部署流程(以宝塔为例): <a class="header-anchor" href="#_1、部署流程-以宝塔为例" aria-label="Permalink to &quot;1、部署流程(以宝塔为例):&quot;">​</a></h4><ol><li>拉取前后端代码;</li><li>本地配置完数据库运行,等待数据库初始化完成;</li><li>打包前后端代码,打包之前注意配置生产环境的数据库配置<code>config/config.prod.ts</code>,<a href="http://www.midwayjs.org/docs/env_config" target="_blank" rel="noreferrer">查看 midway 官方多环境配置文档</a>;</li><li>服务器环境准备,安装宝塔、mysql、nodejs、nginx、pnpm 等;</li><li>上传前后端代码到服务器;</li><li>安装依赖,编译打包后端服务,启动服务;</li><li>配置 nginx 反向代理;</li><li>访问域名,如果一切正常,恭喜你,部署成功!</li></ol><div class="warning custom-block"><p class="custom-block-title">注意</p><ul><li>线上的数据库是需要本地传上去的,安全考虑生产环境不会自动初始化数据库;</li><li>前端访问后端的接口地址默认是前端根地址+/api,所以需要配置 nginx 反向代理/api 到后端服务;</li></ul></div><h4 id="_2、推荐使用-pnpm-安装依赖" tabindex="-1">2、推荐使用 pnpm 安装依赖 <a class="header-anchor" href="#_2、推荐使用-pnpm-安装依赖" aria-label="Permalink to &quot;2、推荐使用 pnpm 安装依赖&quot;">​</a></h4><p><a href="https://pnpm.io/" target="_blank" rel="noreferrer">pnpm 官网</a></p><p>安装</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -g</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pnpm</span></span></code></pre></div><p>配置淘宝镜像</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> set</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> registry</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://registry.npmmirror.com</span></span></code></pre></div><h4 id="_3、pm2-运行后端服务" tabindex="-1">3、PM2 运行后端服务 <a class="header-anchor" href="#_3、pm2-运行后端服务" aria-label="Permalink to &quot;3、PM2 运行后端服务&quot;">​</a></h4><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">//</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 命令行安装</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pm2</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pm2</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -g</span></span></code></pre></div><p>常用命令</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">//</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 启动一个服务</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pm2</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">//</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 列出当前的服务</span></span>
@@ -90,4 +90,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --network</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 8001:8001</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> midway</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool-admin-midway:1.0</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">//</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 运行后端</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --network</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 80:80</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool-admin-vue:1.0</span></span></code></pre></div><h4 id="注意事项" tabindex="-1">注意事项 <a class="header-anchor" href="#注意事项" aria-label="Permalink to &quot;注意事项&quot;">​</a></h4><p>docker 部署,建议将缓存换成 redis,文件上传换成云存储,如:oss,防止操作不当导致的数据丢失。</p>`,37),p=[h];function t(k,e,r,d,E,F){return a(),i("div",null,p)}const c=s(l,[["render",t]]);export{o as __pageData,c as default};
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --network</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 80:80</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vue</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cool-admin-vue:1.0</span></span></code></pre></div><h4 id="注意事项" tabindex="-1">注意事项 <a class="header-anchor" href="#注意事项" aria-label="Permalink to &quot;注意事项&quot;">​</a></h4><p>docker 部署,建议将缓存换成 redis,文件上传换成云存储,如:oss,防止操作不当导致的数据丢失。</p>`,37)]))}const g=i(p,[["render",h]]);export{F as __pageData,g as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const F=JSON.parse('{"title":"项目部署","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/deploy.md","filePath":"src/guide/deploy.md","lastUpdated":1721207284000}'),p={name:"src/guide/deploy.md"};function h(t,s,k,e,r,d){return n(),a("div",null,s[0]||(s[0]=[l("",37)]))}const g=i(p,[["render",h]]);export{F as __pageData,g as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o=JSON.parse('{"title":"项目部署","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/deploy.md","filePath":"src/guide/deploy.md","lastUpdated":1721207284000}'),l={name:"src/guide/deploy.md"},h=n("",37),p=[h];function t(k,e,r,d,E,F){return a(),i("div",null,p)}const c=s(l,[["render",t]]);export{o as __pageData,c as default};
@@ -1,4 +1,4 @@
import{_ as s}from"./chunks/code.VH4xl6Z5.js";import{_ as i,a,o as n,aj as e}from"./chunks/framework.BjhQB2K5.js";const l="/guide/gen-vue.png",u=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),t={name:"src/guide/dev.md"},p=e('<h1 id="开发方式" tabindex="-1">开发方式 <a class="header-anchor" href="#开发方式" aria-label="Permalink to &quot;开发方式&quot;">​</a></h1><p>Cool Admin 推荐两种快速开发方式,可以大大节省开发时间,降低开发成本,提高开发效率。</p><h2 id="ai-全自动" tabindex="-1">Ai 全自动 <a class="header-anchor" href="#ai-全自动" aria-label="Permalink to &quot;Ai 全自动&quot;">​</a></h2><p>零代码开发(非低代码),通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成</p><p><img src="'+s+`" alt="" data-zoomable=""></p><p>开发过程只需点一点,调一调,不用写一行代码</p><p><a href="https://www.bilibili.com/video/BV1Hm421g7Br/?" target="_blank" rel="noreferrer">B 站视频教程</a></p><h2 id="半自动" tabindex="-1">半自动 <a class="header-anchor" href="#半自动" aria-label="Permalink to &quot;半自动&quot;">​</a></h2><p>只需三步,创建实体类生成表,生成后端代码,生成前端代码</p><ul><li>编写实体类,重启生成表;</li><li>运行代码生成器,生成 Service、Controller 等</li></ul><p>文件:<code>src/test/java/com/cool/CoolAdminJavaApplicationTests.java</code></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CoolCodeGeneratorTest</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
import{_ as i}from"./chunks/code.VH4xl6Z5.js";import{_ as a,a as n,o as e,ah as l}from"./chunks/framework.BKXlU_Nx.js";const t="/guide/gen-vue.png",y=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),p={name:"src/guide/dev.md"};function h(k,s,r,d,E,o){return e(),n("div",null,s[0]||(s[0]=[l('<h1 id="开发方式" tabindex="-1">开发方式 <a class="header-anchor" href="#开发方式" aria-label="Permalink to &quot;开发方式&quot;">​</a></h1><p>Cool Admin 推荐两种快速开发方式,可以大大节省开发时间,降低开发成本,提高开发效率。</p><h2 id="ai-全自动" tabindex="-1">Ai 全自动 <a class="header-anchor" href="#ai-全自动" aria-label="Permalink to &quot;Ai 全自动&quot;">​</a></h2><p>零代码开发(非低代码),通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成</p><p><img src="'+i+`" alt="" data-zoomable=""></p><p>开发过程只需点一点,调一调,不用写一行代码</p><p><a href="https://www.bilibili.com/video/BV1Hm421g7Br/?" target="_blank" rel="noreferrer">B 站视频教程</a></p><h2 id="半自动" tabindex="-1">半自动 <a class="header-anchor" href="#半自动" aria-label="Permalink to &quot;半自动&quot;">​</a></h2><p>只需三步,创建实体类生成表,生成后端代码,生成前端代码</p><ul><li>编写实体类,重启生成表;</li><li>运行代码生成器,生成 Service、Controller 等</li></ul><p>文件:<code>src/test/java/com/cool/CoolAdminJavaApplicationTests.java</code></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CoolCodeGeneratorTest</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> static</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> main</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[] </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">args</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CodeGenerator codeGenerator </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CodeGenerator</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codeGenerator.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">init</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
@@ -13,4 +13,4 @@ import{_ as s}from"./chunks/code.VH4xl6Z5.js";import{_ as i,a,o as n,aj as e}fro
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codeGenerator.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(codeModel);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codeGenerator.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">service</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(codeModel);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><ul><li>自动生成前端页面,通过管理后台菜单管理的快速创建即可生成</li></ul><p>Ui 组件会根据字段智能选择</p><p><img src="`+l+'" alt=""></p>',15),h=[p];function k(r,d,E,o,c,g){return n(),a("div",null,h)}const _=i(t,[["render",k]]);export{u as __pageData,_ as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><ul><li>自动生成前端页面,通过管理后台菜单管理的快速创建即可生成</li></ul><p>Ui 组件会根据字段智能选择</p><p><img src="`+t+'" alt=""></p>',15)]))}const F=a(p,[["render",h]]);export{y as __pageData,F as default};
@@ -0,0 +1 @@
import{_ as i}from"./chunks/code.VH4xl6Z5.js";import{_ as a,a as n,o as e,ah as l}from"./chunks/framework.BKXlU_Nx.js";const t="/guide/gen-vue.png",y=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),p={name:"src/guide/dev.md"};function h(k,s,r,d,E,o){return e(),n("div",null,s[0]||(s[0]=[l("",15)]))}const F=a(p,[["render",h]]);export{y as __pageData,F as default};
@@ -1 +0,0 @@
import{_ as s}from"./chunks/code.VH4xl6Z5.js";import{_ as i,a,o as n,aj as e}from"./chunks/framework.BjhQB2K5.js";const l="/guide/gen-vue.png",u=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":1721036629000}'),t={name:"src/guide/dev.md"},p=e("",15),h=[p];function k(r,d,E,o,c,g){return n(),a("div",null,h)}const _=i(t,[["render",k]]);export{u as __pageData,_ as default};
@@ -1 +0,0 @@
import{_ as s,a,o as n,aj as p}from"./chunks/framework.BjhQB2K5.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),e={name:"src/guide/dir.md"},l=p("",5),i=[l];function c(t,o,r,d,u,_){return n(),a("div",null,i)}const b=s(e,[["render",c]]);export{h as __pageData,b as default};
@@ -1,4 +1,4 @@
import{_ as s,a,o as n,aj as p}from"./chunks/framework.BjhQB2K5.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),e={name:"src/guide/dir.md"},l=p(`<h1 id="目录结构" tabindex="-1">目录结构 <a class="header-anchor" href="#目录结构" aria-label="Permalink to &quot;目录结构&quot;">​</a></h1><p>项目按照模块化的方式组织,每个模块都有其特有的功能,清晰明了便于管理。</p><h2 id="结构" tabindex="-1">结构 <a class="header-anchor" href="#结构" aria-label="Permalink to &quot;结构&quot;">​</a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>.</span></span>
import{_ as a,a as n,o as p,ah as e}from"./chunks/framework.BKXlU_Nx.js";const m=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),l={name:"src/guide/dir.md"};function i(c,s,t,o,r,d){return p(),n("div",null,s[0]||(s[0]=[e(`<h1 id="目录结构" tabindex="-1">目录结构 <a class="header-anchor" href="#目录结构" aria-label="Permalink to &quot;目录结构&quot;">​</a></h1><p>项目按照模块化的方式组织,每个模块都有其特有的功能,清晰明了便于管理。</p><h2 id="结构" tabindex="-1">结构 <a class="header-anchor" href="#结构" aria-label="Permalink to &quot;结构&quot;">​</a></h2><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>.</span></span>
<span class="line"><span>main</span></span>
<span class="line"><span>├─ java</span></span>
<span class="line"><span>│ ├─ com.cool</span></span>
@@ -22,4 +22,4 @@ import{_ as s,a,o as n,aj as p}from"./chunks/framework.BjhQB2K5.js";const h=JSON
<span class="line"><span> ├─ cool</span></span>
<span class="line"><span> │ └─ data</span></span>
<span class="line"><span> │ └─ db 初始化数据json文件</span></span>
<span class="line"><span> └─ mapper mapper xml 文件</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">提示</p><ul><li>core 为核心模块,包括一些核心的组件工具</li><li>modules 为业务模块,业务代码放在这边,在新增功能模块时,按上面的包结构新增即可 <blockquote><p>比如你有一个订单管理的模块,在 modules 新增一个 order 包,在 order 包下创建 controller、entity、mapper、service 等包</p></blockquote></li></ul></div>`,5),i=[l];function c(t,o,r,d,u,_){return n(),a("div",null,i)}const b=s(e,[["render",c]]);export{h as __pageData,b as default};
<span class="line"><span> └─ mapper mapper xml 文件</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">提示</p><ul><li>core 为核心模块,包括一些核心的组件工具</li><li>modules 为业务模块,业务代码放在这边,在新增功能模块时,按上面的包结构新增即可 <blockquote><p>比如你有一个订单管理的模块,在 modules 新增一个 order 包,在 order 包下创建 controller、entity、mapper、service 等包</p></blockquote></li></ul></div>`,5)]))}const _=a(l,[["render",i]]);export{m as __pageData,_ as default};
@@ -0,0 +1 @@
import{_ as a,a as n,o as p,ah as e}from"./chunks/framework.BKXlU_Nx.js";const m=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":1721036629000}'),l={name:"src/guide/dir.md"};function i(c,s,t,o,r,d){return p(),n("div",null,s[0]||(s[0]=[e("",5)]))}const _=a(l,[["render",i]]);export{m as __pageData,_ as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),h={name:"src/guide/exception.md"},k=n("",9),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const c=s(h,[["render",l]]);export{F as __pageData,c as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),h={name:"src/guide/exception.md"},k=n(`<h1 id="统一异常处理" tabindex="-1">统一异常处理 <a class="header-anchor" href="#统一异常处理" aria-label="Permalink to &quot;统一异常处理&quot;">​</a></h1><p>提供了简化的业务异常抛出工具</p><ul><li>CoolPreconditions.check(check != null, &quot;用户名已存在&quot;);</li></ul><h2 id="异常统一捕获" tabindex="-1">异常统一捕获 <a class="header-anchor" href="#异常统一捕获" aria-label="Permalink to &quot;异常统一捕获&quot;">​</a></h2><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">RestControllerAdvice</span></span>
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),k={name:"src/guide/exception.md"};function t(l,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h(`<h1 id="统一异常处理" tabindex="-1">统一异常处理 <a class="header-anchor" href="#统一异常处理" aria-label="Permalink to &quot;统一异常处理&quot;">​</a></h1><p>提供了简化的业务异常抛出工具</p><ul><li>CoolPreconditions.check(check != null, &quot;用户名已存在&quot;);</li></ul><h2 id="异常统一捕获" tabindex="-1">异常统一捕获 <a class="header-anchor" href="#异常统一捕获" aria-label="Permalink to &quot;异常统一捕获&quot;">​</a></h2><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">RestControllerAdvice</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Slf4j</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CoolExceptionHandler</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"></span>
@@ -56,4 +56,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const F
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> entity.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">setPassword</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(MD5.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">create</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">digestHex</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(entity.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getPassword</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()));</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> super</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">add</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestParams, entity);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> entity.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,9),t=[k];function l(p,e,E,r,d,g){return a(),i("div",null,t)}const c=s(h,[["render",l]]);export{F as __pageData,c as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,9)]))}const y=i(k,[["render",t]]);export{g as __pageData,y as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1721036629000}'),k={name:"src/guide/exception.md"};function t(l,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h("",9)]))}const y=i(k,[["render",t]]);export{g as __pageData,y as default};
-1
View File
@@ -1 +0,0 @@
import{_ as e}from"./chunks/flow.YLaN3zCE.js";import{_ as a,a as t,o as r,aj as o}from"./chunks/framework.BjhQB2K5.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1722911664000}'),i={name:"src/guide/flow.md"},s=o('<h1 id="ai-流程编排" tabindex="-1">Ai 流程编排 <a class="header-anchor" href="#ai-流程编排" aria-label="Permalink to &quot;Ai 流程编排&quot;">​</a></h1><p><a href="https://www.bilibili.com/video/BV1Dw4m1Y7m6/" target="_blank" rel="noreferrer">视频演示</a></p><p><a href="https://cool-js.com/plugin/118" target="_blank" rel="noreferrer">点击前往插件市场下载安装</a></p><p>开发 Ai 应用必备!!!</p><p>随着 Ai 的火热,很多应用希望接入 Ai 的能力,但是每次都是用代码手搓,容易把我们累死,而是也非常不灵活。</p><p>于是我们面向开发者和软件开发公司,做了一个 Ai 流程编排功能,结合知识库,通过拖动配置,很容易就能完成一个 Ai 的核心流程。</p><p>因此如果你需要开发 Ai 相关应用,这个可能会给你带来巨大的帮助。</p><p><img src="'+e+'" alt="流程编排" data-zoomable=""></p>',8),_=[s];function p(l,c,n,d,m,f){return r(),t("div",null,_)}const g=a(i,[["render",p]]);export{u as __pageData,g as default};
@@ -1 +0,0 @@
import{_ as e}from"./chunks/flow.YLaN3zCE.js";import{_ as a,a as t,o as r,aj as o}from"./chunks/framework.BjhQB2K5.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1722911664000}'),i={name:"src/guide/flow.md"},s=o("",8),_=[s];function p(l,c,n,d,m,f){return r(),t("div",null,_)}const g=a(i,[["render",p]]);export{u as __pageData,g as default};
+1
View File
@@ -0,0 +1 @@
import{_ as a}from"./chunks/flow.YLaN3zCE.js";import{_ as t,a as r,o as i,ah as o}from"./chunks/framework.BKXlU_Nx.js";const h=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1722911664000}'),p={name:"src/guide/flow.md"};function s(l,e,_,n,c,d){return i(),r("div",null,e[0]||(e[0]=[o('<h1 id="ai-流程编排" tabindex="-1">Ai 流程编排 <a class="header-anchor" href="#ai-流程编排" aria-label="Permalink to &quot;Ai 流程编排&quot;">​</a></h1><p><a href="https://www.bilibili.com/video/BV1Dw4m1Y7m6/" target="_blank" rel="noreferrer">视频演示</a></p><p><a href="https://cool-js.com/plugin/118" target="_blank" rel="noreferrer">点击前往插件市场下载安装</a></p><p>开发 Ai 应用必备!!!</p><p>随着 Ai 的火热,很多应用希望接入 Ai 的能力,但是每次都是用代码手搓,容易把我们累死,而是也非常不灵活。</p><p>于是我们面向开发者和软件开发公司,做了一个 Ai 流程编排功能,结合知识库,通过拖动配置,很容易就能完成一个 Ai 的核心流程。</p><p>因此如果你需要开发 Ai 相关应用,这个可能会给你带来巨大的帮助。</p><p><img src="'+a+'" alt="流程编排" data-zoomable=""></p>',8)]))}const A=t(p,[["render",s]]);export{h as __pageData,A as default};
@@ -0,0 +1 @@
import{_ as a}from"./chunks/flow.YLaN3zCE.js";import{_ as t,a as r,o as i,ah as o}from"./chunks/framework.BKXlU_Nx.js";const h=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1722911664000}'),p={name:"src/guide/flow.md"};function s(l,e,_,n,c,d){return i(),r("div",null,e[0]||(e[0]=[o("",8)]))}const A=t(p,[["render",s]]);export{h as __pageData,A as default};
-4
View File
@@ -1,4 +0,0 @@
import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512308000}'),s={name:"src/guide/i18n.md"},t=e(`<h1 id="国际化多语言-v8-0新增" tabindex="-1">国际化多语言(v8.0新增) <a class="header-anchor" href="#国际化多语言-v8-0新增" aria-label="Permalink to &quot;国际化多语言(v8.0新增)&quot;">​</a></h1><p>i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。</p><p>随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。</p><h1 id="实现" tabindex="-1">实现 <a class="header-anchor" href="#实现" aria-label="Permalink to &quot;实现&quot;">​</a></h1><p>多语言是需要前后端共同支持的,前端请前往<a href="https://vue.cool-admin.com/src/guide/plugins/i18n.html" target="_blank" rel="noreferrer">前端文档查看</a></p><p>与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。</p><p>以前该怎么写还是怎么写!!!</p><h1 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;">​</a></h1><p>1、引入插件 在官网下载并安装<a href="https://cool-js.com/plugin/create?id=177" target="_blank" rel="noreferrer">国际化多语言插件</a></p><p>安装后,框架就会自动扫描并翻译成对应的语言。</p><p>当你在控制台看到这样的输出,则代表成功</p><div class="language-console vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">console</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">// 翻译中</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">/ i18n translate...</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">// 翻译成功</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">✅国际化 翻译 成功!!!</span></span></code></pre></div><p>2、实现原理 只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单、字典、异常消息(CoolPreconditions.check...),并调用大模型对其进行翻译</p><p>翻译完成之后会默认在路径assets/i18n下生成对应种类的语言文件,如果这个文件存在</p><p>则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除相应的文件。</p><p>3、语言配置对照表</p><ul><li>简体中文(zh-cn)</li><li>美国英语(en)</li><li>阿塞拜疆语(az)</li><li>德语(de)</li><li>葡萄牙语(pt)</li><li>西班牙语(es)</li><li>丹麦语(da)</li><li>法语(fr)</li><li>挪威语(nb-NO)</li><li>繁体中文(zh-tw)</li><li>意大利语(it)</li><li>韩语(ko)</li><li>日语(ja)</li><li>荷兰语(nl)</li><li>越南语(vi)</li><li>俄语(ru)</li><li>土耳其语(tr)</li><li>巴西葡萄牙语(pt-br)</li><li>波斯语(fa)</li><li>泰语(th)</li><li>印度尼西亚语(id)</li><li>保加利亚语(bg)</li><li>普什图语(pa)</li><li>波兰语(pl)</li><li>芬兰语(fi)</li><li>瑞典语(sv)</li><li>希腊语(el)</li><li>斯洛伐克语(sk)</li><li>加泰罗尼亚语(ca)</li><li>捷克语(cs)</li><li>乌克兰语(uk)</li><li>土库曼语(tk)</li><li>泰米尔语(ta)</li><li>拉脱维亚语(lv)</li><li>南非荷兰语(af)</li><li>爱沙尼亚语(et)</li><li>斯洛文尼亚语(sl)</li><li>阿拉伯语(ar)</li><li>希伯来语(he)</li><li>立陶宛语(lt)</li><li>蒙古语(mn)</li><li>哈萨克语(kk)</li><li>匈牙利语(hu)</li><li>罗马尼亚语(ro)</li><li>库尔德语(ku)</li><li>库尔德语 (ckb)</li><li>维吾尔语 (ug-cn)</li><li>高棉语 (km)</li><li>塞尔维亚语 (sr)</li><li>巴斯克语 (eu)</li><li>吉尔吉斯语 (ky)</li><li>亚美尼亚语 (hy-am)</li><li>克罗地亚语(hr)</li><li>世界语 (eo)</li><li>孟加拉语 (bn)</li><li>马来语 (ms)</li></ul>`,17),n=[t];function r(p,o,c,h,d,k){return a(),l("div",null,n)}const m=i(s,[["render",r]]);export{_ as __pageData,m as default};
@@ -1 +0,0 @@
import{_ as i,a as l,o as a,aj as e}from"./chunks/framework.BjhQB2K5.js";const _=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744512308000}'),s={name:"src/guide/i18n.md"},t=e("",17),n=[t];function r(p,o,c,h,d,k){return a(),l("div",null,n)}const m=i(s,[["render",r]]);export{_ as __pageData,m as default};
+4
View File
@@ -0,0 +1,4 @@
import{_ as l,a,o as e,ah as s}from"./chunks/framework.BKXlU_Nx.js";const k=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744545259000}'),n={name:"src/guide/i18n.md"};function t(r,i,p,o,h,c){return e(),a("div",null,i[0]||(i[0]=[s(`<h1 id="国际化多语言-v8-0新增" tabindex="-1">国际化多语言(v8.0新增) <a class="header-anchor" href="#国际化多语言-v8-0新增" aria-label="Permalink to &quot;国际化多语言(v8.0新增)&quot;">​</a></h1><p>i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。</p><p>随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。</p><h1 id="实现" tabindex="-1">实现 <a class="header-anchor" href="#实现" aria-label="Permalink to &quot;实现&quot;">​</a></h1><p>多语言是需要前后端共同支持的,前端请前往<a href="https://vue.cool-admin.com/src/guide/plugins/i18n.html" target="_blank" rel="noreferrer">前端文档查看</a></p><p>与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。</p><p>以前该怎么写还是怎么写!!!</p><h1 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;">​</a></h1><p>1、引入插件 在官网下载并安装<a href="https://cool-js.com/plugin/177" target="_blank" rel="noreferrer">国际化多语言插件</a></p><p>安装后,框架就会自动扫描并翻译成对应的语言。</p><p>当你在控制台看到这样的输出,则代表成功</p><div class="language-console vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">console</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">// 翻译中</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">/ i18n translate...</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">// 翻译成功</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">✅国际化 翻译 成功!!!</span></span></code></pre></div><p>2、实现原理 只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单、字典、异常消息(CoolPreconditions.check...),并调用大模型对其进行翻译</p><p>翻译完成之后会默认在路径assets/i18n下生成对应种类的语言文件,如果这个文件存在</p><p>则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除相应的文件。</p><p>3、语言配置对照表</p><ul><li>简体中文(zh-cn)</li><li>美国英语(en)</li><li>阿塞拜疆语(az)</li><li>德语(de)</li><li>葡萄牙语(pt)</li><li>西班牙语(es)</li><li>丹麦语(da)</li><li>法语(fr)</li><li>挪威语(nb-NO)</li><li>繁体中文(zh-tw)</li><li>意大利语(it)</li><li>韩语(ko)</li><li>日语(ja)</li><li>荷兰语(nl)</li><li>越南语(vi)</li><li>俄语(ru)</li><li>土耳其语(tr)</li><li>巴西葡萄牙语(pt-br)</li><li>波斯语(fa)</li><li>泰语(th)</li><li>印度尼西亚语(id)</li><li>保加利亚语(bg)</li><li>普什图语(pa)</li><li>波兰语(pl)</li><li>芬兰语(fi)</li><li>瑞典语(sv)</li><li>希腊语(el)</li><li>斯洛伐克语(sk)</li><li>加泰罗尼亚语(ca)</li><li>捷克语(cs)</li><li>乌克兰语(uk)</li><li>土库曼语(tk)</li><li>泰米尔语(ta)</li><li>拉脱维亚语(lv)</li><li>南非荷兰语(af)</li><li>爱沙尼亚语(et)</li><li>斯洛文尼亚语(sl)</li><li>阿拉伯语(ar)</li><li>希伯来语(he)</li><li>立陶宛语(lt)</li><li>蒙古语(mn)</li><li>哈萨克语(kk)</li><li>匈牙利语(hu)</li><li>罗马尼亚语(ro)</li><li>库尔德语(ku)</li><li>库尔德语 (ckb)</li><li>维吾尔语 (ug-cn)</li><li>高棉语 (km)</li><li>塞尔维亚语 (sr)</li><li>巴斯克语 (eu)</li><li>吉尔吉斯语 (ky)</li><li>亚美尼亚语 (hy-am)</li><li>克罗地亚语(hr)</li><li>世界语 (eo)</li><li>孟加拉语 (bn)</li><li>马来语 (ms)</li></ul>`,17)]))}const u=l(n,[["render",t]]);export{k as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as l,a,o as e,ah as s}from"./chunks/framework.BKXlU_Nx.js";const k=JSON.parse('{"title":"国际化多语言(v8.0新增)","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/i18n.md","filePath":"src/guide/i18n.md","lastUpdated":1744545259000}'),n={name:"src/guide/i18n.md"};function t(r,i,p,o,h,c){return e(),a("div",null,i[0]||(i[0]=[s("",17)]))}const u=l(n,[["render",t]]);export{k as __pageData,u as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721812009000}'),p={name:"src/guide/initData.md"},l=n("",10),t=[l];function h(k,e,E,d,r,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721812009000}'),p={name:"src/guide/initData.md"},l=n(`<h1 id="数据初始化" tabindex="-1">数据初始化 <a class="header-anchor" href="#数据初始化" aria-label="Permalink to &quot;数据初始化&quot;">​</a></h1><p>有些功能模块上线时,需要初始化一些数据</p><p>可以在 resources 下的 <code>cool/data/db</code> 目录创建 <code>demo.json</code> 文件</p><p>json 格式如下,demo 为表的名称,里面是个数组,数组里可以包含多个对象,每个对象中的 key 为表的字段,value 为对应的值</p><blockquote><p>规范:实体需以 Entity 结尾</p></blockquote><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
import{_ as i,a,o as n,ah as p}from"./chunks/framework.BKXlU_Nx.js";const o=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721812009000}'),l={name:"src/guide/initData.md"};function t(h,s,k,e,E,d){return n(),a("div",null,s[0]||(s[0]=[p(`<h1 id="数据初始化" tabindex="-1">数据初始化 <a class="header-anchor" href="#数据初始化" aria-label="Permalink to &quot;数据初始化&quot;">​</a></h1><p>有些功能模块上线时,需要初始化一些数据</p><p>可以在 resources 下的 <code>cool/data/db</code> 目录创建 <code>demo.json</code> 文件</p><p>json 格式如下,demo 为表的名称,里面是个数组,数组里可以包含多个对象,每个对象中的 key 为表的字段,value 为对应的值</p><blockquote><p>规范:实体需以 Entity 结尾</p></blockquote><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;demo&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;keyName&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;rich&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
@@ -30,4 +30,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">info</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;数据初始化完成!&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> //......</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><blockquote><p>注意:如果同一张表历史已经有初始化过数据,在某个版本需要新增数据的话,要新增一个.json 文件;<br> 比如 demoV2.json, 如果在原文件直接修改将不生效,加载成功后文件名称将被当作唯一键标识,不会重复初始化。</p></blockquote>`,10),t=[l];function h(k,e,E,d,r,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><blockquote><p>注意:如果同一张表历史已经有初始化过数据,在某个版本需要新增数据的话,要新增一个.json 文件;<br> 比如 demoV2.json, 如果在原文件直接修改将不生效,加载成功后文件名称将被当作唯一键标识,不会重复初始化。</p></blockquote>`,10)]))}const c=i(l,[["render",t]]);export{o as __pageData,c as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as p}from"./chunks/framework.BKXlU_Nx.js";const o=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1721812009000}'),l={name:"src/guide/initData.md"};function t(h,s,k,e,E,d){return n(),a("div",null,s[0]||(s[0]=[p("",10)]))}const c=i(l,[["render",t]]);export{o as __pageData,c as default};
+11
View File
@@ -0,0 +1,11 @@
import{_ as s,a as n,o as e,ah as p}from"./chunks/framework.BKXlU_Nx.js";const _=JSON.parse('{"title":"锁","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/lock.md","filePath":"src/guide/lock.md","lastUpdated":1724694022000}'),l={name:"src/guide/lock.md"};function t(o,a,i,c,r,d){return e(),n("div",null,a[0]||(a[0]=[p(`<h1 id="锁" tabindex="-1">锁 <a class="header-anchor" href="#锁" aria-label="Permalink to &quot;锁&quot;">​</a></h1><p>简单锁的使用</p><p>如果项目中启用了redis,锁是基于redis 实现,否则使用 ReentrantLock</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>// 注入锁</span></span>
<span class="line"><span>private final CoolLock coolLock;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>String key = &quot;lockKey&quot;;</span></span>
<span class="line"><span>// 尝试获取锁</span></span>
<span class="line"><span>if (coolLock.tryLock(key, Duration.ofMillis(noRepeatSubmit.expireTime()))) {</span></span>
<span class="line"><span> // TODO 获取锁后的逻辑</span></span>
<span class="line"><span> </span></span>
<span class="line"><span> // 释放锁</span></span>
<span class="line"><span> coolLock.unlock(key);</span></span>
<span class="line"><span>}</span></span></code></pre></div>`,4)]))}const u=s(l,[["render",t]]);export{_ as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as s,a as n,o as e,ah as p}from"./chunks/framework.BKXlU_Nx.js";const _=JSON.parse('{"title":"锁","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/lock.md","filePath":"src/guide/lock.md","lastUpdated":1724694022000}'),l={name:"src/guide/lock.md"};function t(o,a,i,c,r,d){return e(),n("div",null,a[0]||(a[0]=[p("",4)]))}const u=s(l,[["render",t]]);export{_ as __pageData,u as default};
-11
View File
@@ -1,11 +0,0 @@
import{_ as a,a as s,o as n,aj as e}from"./chunks/framework.BjhQB2K5.js";const h=JSON.parse('{"title":"锁","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/lock.md","filePath":"src/guide/lock.md","lastUpdated":1724694022000}'),p={name:"src/guide/lock.md"},t=e(`<h1 id="锁" tabindex="-1">锁 <a class="header-anchor" href="#锁" aria-label="Permalink to &quot;锁&quot;">​</a></h1><p>简单锁的使用</p><p>如果项目中启用了redis,锁是基于redis 实现,否则使用 ReentrantLock</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>// 注入锁</span></span>
<span class="line"><span>private final CoolLock coolLock;</span></span>
<span class="line"><span></span></span>
<span class="line"><span>String key = &quot;lockKey&quot;;</span></span>
<span class="line"><span>// 尝试获取锁</span></span>
<span class="line"><span>if (coolLock.tryLock(key, Duration.ofMillis(noRepeatSubmit.expireTime()))) {</span></span>
<span class="line"><span> // TODO 获取锁后的逻辑</span></span>
<span class="line"><span> </span></span>
<span class="line"><span> // 释放锁</span></span>
<span class="line"><span> coolLock.unlock(key);</span></span>
<span class="line"><span>}</span></span></code></pre></div>`,4),o=[t];function c(l,i,r,d,_,k){return n(),s("div",null,o)}const m=a(p,[["render",c]]);export{h as __pageData,m as default};
@@ -1 +0,0 @@
import{_ as a,a as s,o as n,aj as e}from"./chunks/framework.BjhQB2K5.js";const h=JSON.parse('{"title":"锁","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/lock.md","filePath":"src/guide/lock.md","lastUpdated":1724694022000}'),p={name:"src/guide/lock.md"},t=e("",4),o=[t];function c(l,i,r,d,_,k){return n(),s("div",null,o)}const m=a(p,[["render",c]]);export{h as __pageData,m as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o=JSON.parse('{"title":"防重复提交","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/noRepeatSubmit.md","filePath":"src/guide/noRepeatSubmit.md","lastUpdated":1724694022000}'),t={name:"src/guide/noRepeatSubmit.md"},h=n("",5),k=[h];function p(l,e,E,r,d,g){return a(),i("div",null,k)}const c=s(t,[["render",p]]);export{o as __pageData,c as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o=JSON.parse('{"title":"防重复提交","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/noRepeatSubmit.md","filePath":"src/guide/noRepeatSubmit.md","lastUpdated":1724694022000}'),t={name:"src/guide/noRepeatSubmit.md"},h=n(`<h1 id="防重复提交" tabindex="-1">防重复提交 <a class="header-anchor" href="#防重复提交" aria-label="Permalink to &quot;防重复提交&quot;">​</a></h1><p>基于用户维度的防重复提交,该接口需要登录鉴权</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Aspect</span></span>
import{_ as i,a,o as n,ah as t}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"防重复提交","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/noRepeatSubmit.md","filePath":"src/guide/noRepeatSubmit.md","lastUpdated":1724694022000}'),h={name:"src/guide/noRepeatSubmit.md"};function k(p,s,l,e,E,r){return n(),a("div",null,s[0]||(s[0]=[t(`<h1 id="防重复提交" tabindex="-1">防重复提交 <a class="header-anchor" href="#防重复提交" aria-label="Permalink to &quot;防重复提交&quot;">​</a></h1><p>基于用户维度的防重复提交,该接口需要登录鉴权</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Aspect</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Component</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">RequiredArgsConstructor</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> NoRepeatSubmitAspect</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
@@ -25,4 +25,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const o
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> R </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">receive</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">RequestAttribute</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() JSONObject requestParams) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Long couponId </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requestParams.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;couponId&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Long.class);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> R.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ok</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(marketCouponInfoService.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">receive</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(couponId, CoolSecurityUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getCurrentUserId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()));</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span></code></pre></div>`,5),k=[h];function p(l,e,E,r,d,g){return a(),i("div",null,k)}const c=s(t,[["render",p]]);export{o as __pageData,c as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span></code></pre></div>`,5)]))}const y=i(h,[["render",k]]);export{g as __pageData,y as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as t}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"防重复提交","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/noRepeatSubmit.md","filePath":"src/guide/noRepeatSubmit.md","lastUpdated":1724694022000}'),h={name:"src/guide/noRepeatSubmit.md"};function k(p,s,l,e,E,r){return n(),a("div",null,s[0]||(s[0]=[t("",5)]))}const y=i(h,[["render",k]]);export{g as __pageData,y as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const l="/guide/plugin-install.gif",c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721271330000}'),p={name:"src/guide/plugin.md"},t=n('<h1 id="扩展插件" tabindex="-1">扩展插件 <a class="header-anchor" href="#扩展插件" aria-label="Permalink to &quot;扩展插件&quot;">​</a></h1><p>为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。</p><p>而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。</p><p><a href="https://cool-js.com/plugin" target="_blank" rel="noreferrer">点击前往插件市场</a></p><h2 id="使用插件" tabindex="-1">使用插件 <a class="header-anchor" href="#使用插件" aria-label="Permalink to &quot;使用插件&quot;">​</a></h2><h3 id="_1、安装" tabindex="-1">1、安装 <a class="header-anchor" href="#_1、安装" aria-label="Permalink to &quot;1、安装&quot;">​</a></h3><p>首先下载插件包,然后在系统中安装插件包。插件包可以通过官网<a href="https://cool-js.com/plugin" target="_blank" rel="noreferrer">下载插件</a>。</p><p>打开后台管理系统,点击左侧菜单<code>扩展管理</code>/<code>插件管理</code>,点击+按钮,选择插件包进行安装。</p><p><img src="'+l+`" alt=""></p><h3 id="_2、调用" tabindex="-1">2、调用 <a class="header-anchor" href="#_2、调用" aria-label="Permalink to &quot;2、调用&quot;">​</a></h3><p>安装插件之后,就可以在代码中调用插件的方法了。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">package</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.cool.core.base.controller;</span></span>
import{_ as i,a,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const p="/guide/plugin-install.gif",o=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721271330000}'),t={name:"src/guide/plugin.md"};function h(k,s,e,E,r,g){return n(),a("div",null,s[0]||(s[0]=[l('<h1 id="扩展插件" tabindex="-1">扩展插件 <a class="header-anchor" href="#扩展插件" aria-label="Permalink to &quot;扩展插件&quot;">​</a></h1><p>为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。</p><p>而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。</p><p><a href="https://cool-js.com/plugin" target="_blank" rel="noreferrer">点击前往插件市场</a></p><h2 id="使用插件" tabindex="-1">使用插件 <a class="header-anchor" href="#使用插件" aria-label="Permalink to &quot;使用插件&quot;">​</a></h2><h3 id="_1、安装" tabindex="-1">1、安装 <a class="header-anchor" href="#_1、安装" aria-label="Permalink to &quot;1、安装&quot;">​</a></h3><p>首先下载插件包,然后在系统中安装插件包。插件包可以通过官网<a href="https://cool-js.com/plugin" target="_blank" rel="noreferrer">下载插件</a>。</p><p>打开后台管理系统,点击左侧菜单<code>扩展管理</code>/<code>插件管理</code>,点击+按钮,选择插件包进行安装。</p><p><img src="'+p+`" alt=""></p><h3 id="_2、调用" tabindex="-1">2、调用 <a class="header-anchor" href="#_2、调用" aria-label="Permalink to &quot;2、调用&quot;">​</a></h3><p>安装插件之后,就可以在代码中调用插件的方法了。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">package</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.cool.core.base.controller;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> cn.hutool.core.util.ObjUtil;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.cool.core.util.CoolPluginInvokers;</span></span>
@@ -234,4 +234,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const l
<span class="line"><span>[INFO] Excluding cn.hutool:hutool-json:jar:5.8.26 from the shaded jar.</span></span></code></pre></div><h2 id="打包" tabindex="-1">打包 <a class="header-anchor" href="#打包" aria-label="Permalink to &quot;打包&quot;">​</a></h2><p>打包命令</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>mvn clean package</span></span></code></pre></div><p>打包结果, 在 target 目录下 .cool 后缀的文件,就是我们的插件包</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>target/cool-admin-java-plugin-1.0-SNAPSHOT.cool</span></span></code></pre></div><p>其中对应的包名称 可在 pom.xml 中的 properties 里指定</p><div class="language-xml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">xml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">properties</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">cool.plugin.name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;my_cool_plugin&lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">cool.plugin.name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">properties</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span></code></pre></div><p>最终打出的包为: my_cool_plugin.cool</p><h2 id="安装插件" tabindex="-1">安装插件 <a class="header-anchor" href="#安装插件" aria-label="Permalink to &quot;安装插件&quot;">​</a></h2><p>在后台插件管理页面,安装插件将打包好的.cool 文件上传。</p><h2 id="实现原理" tabindex="-1">实现原理 <a class="header-anchor" href="#实现原理" aria-label="Permalink to &quot;实现原理&quot;">​</a></h2><ul><li><p>动态加载 Jar 包</p><blockquote><p>实现动态加载的技术方案<br> 在 SpringBoot 中实现动态加载 Jar 包: URLClassLoader 是 Java 标准库中提供的一个类加载器,它可以加载指定的 URL 资源,包括本地文件系统、远程服务器和 JAR 文件等。<br> 通过 URLClassLoader,我们可以在运行时动态地加载外部的 Jar 包或类。</p></blockquote></li><li><p>优势:</p><blockquote><p>1、灵活性高:可以动态指定 Jar 包的位置和版本。<br> 2、可控性强:可以通过代码控制加载、卸载和替换 Jar 包。</p></blockquote></li></ul><p>实现方法:</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">URL jarUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> URL</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;jar:file:&quot;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> File</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(jarFilePath).</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getAbsolutePath</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;!/&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DynamicJarClassLoader dynamicJarClassLoader </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DynamicJarClassLoader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> URL</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[]{jarUrl}, Thread.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">currentThread</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getContextClassLoader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">());</span></span></code></pre></div><p>动态加载 Jar 包具有以下几个显著的优势:</p><ul><li>1、灵活性: 动态加载允许应用程序在运行时根据需求加载、卸载和替换 Jar 包或其内部的类和资源,提供了极大的灵活性。</li><li>2、可维护性: 通过动态加载,可以将应用程序的核心逻辑和配置分离,使得代码更加清晰、模块化,提高了代码的可维护性。</li><li>3、热更新: 动态加载使得应用程序能够在不停机的情况下进行热更新,大大提高了系统的可用性和稳定性。</li><li>4、扩展性: 通过动态加载,可以轻松地添加新的功能模块或服务,实现应用程序的快速扩展和升级。</li></ul>`,64),h=[t];function k(e,E,r,g,d,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DynamicJarClassLoader dynamicJarClassLoader </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DynamicJarClassLoader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> URL</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[]{jarUrl}, Thread.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">currentThread</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getContextClassLoader</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">());</span></span></code></pre></div><p>动态加载 Jar 包具有以下几个显著的优势:</p><ul><li>1、灵活性: 动态加载允许应用程序在运行时根据需求加载、卸载和替换 Jar 包或其内部的类和资源,提供了极大的灵活性。</li><li>2、可维护性: 通过动态加载,可以将应用程序的核心逻辑和配置分离,使得代码更加清晰、模块化,提高了代码的可维护性。</li><li>3、热更新: 动态加载使得应用程序能够在不停机的情况下进行热更新,大大提高了系统的可用性和稳定性。</li><li>4、扩展性: 通过动态加载,可以轻松地添加新的功能模块或服务,实现应用程序的快速扩展和升级。</li></ul>`,64)]))}const y=i(t,[["render",h]]);export{o as __pageData,y as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const p="/guide/plugin-install.gif",o=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721271330000}'),t={name:"src/guide/plugin.md"};function h(k,s,e,E,r,g){return n(),a("div",null,s[0]||(s[0]=[l("",64)]))}const y=i(t,[["render",h]]);export{o as __pageData,y as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const l="/guide/plugin-install.gif",c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1721271330000}'),p={name:"src/guide/plugin.md"},t=n("",64),h=[t];function k(e,E,r,g,d,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
@@ -1,4 +1,4 @@
import{_ as a}from"./chunks/admin.CyLBVO1a.js";import{_ as s,a as i,o as e,aj as n}from"./chunks/framework.BjhQB2K5.js";const l="/guide/run.png",E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721271330000}'),t={name:"src/guide/quick.md"},p=n(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>开始使用 Cool-Admin!!!</p><h2 id="环境准备" tabindex="-1">环境准备 <a class="header-anchor" href="#环境准备" aria-label="Permalink to &quot;环境准备&quot;">​</a></h2><ul><li>Java Jdk &gt;= 17 (注意:选择 GraalVM)</li><li>Mysql &gt;= 5.7 (推荐 8.0)</li><li>Maven &gt;= 3.6 (推荐 3.9)</li></ul><h2 id="运行系统" tabindex="-1">运行系统 <a class="header-anchor" href="#运行系统" aria-label="Permalink to &quot;运行系统&quot;">​</a></h2><h3 id="_1、拉取源码" tabindex="-1">1、拉取源码 <a class="header-anchor" href="#_1、拉取源码" aria-label="Permalink to &quot;1、拉取源码&quot;">​</a></h3><p>项目是前后端分离的,需要分别拉取前后端代码到本地,<a href="/src/introduce/src.html">源码仓库</a></p><h3 id="_2、配置数据库" tabindex="-1">2、配置数据库 <a class="header-anchor" href="#_2、配置数据库" aria-label="Permalink to &quot;2、配置数据库&quot;">​</a></h3><p>后端修改数据库配置,配置文件位于<code>src/resources/application-local.yml</code></p><p>以 Mysql 为例,其他数据库适配中...</p><p>Mysql(<code>&gt;=5.7版本</code>),建议 8.0,首次启动会自动初始化并导入数据</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># mysql,驱动已经内置,无需安装</span></span>
import{_ as s}from"./chunks/admin.CyLBVO1a.js";import{_ as i,a as e,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const t="/guide/run.png",m=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721271330000}'),p={name:"src/guide/quick.md"};function r(h,a,o,c,d,k){return n(),e("div",null,a[0]||(a[0]=[l(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>开始使用 Cool-Admin!!!</p><h2 id="环境准备" tabindex="-1">环境准备 <a class="header-anchor" href="#环境准备" aria-label="Permalink to &quot;环境准备&quot;">​</a></h2><ul><li>Java Jdk &gt;= 17 (注意:选择 GraalVM)</li><li>Mysql &gt;= 5.7 (推荐 8.0)</li><li>Maven &gt;= 3.6 (推荐 3.9)</li></ul><h2 id="运行系统" tabindex="-1">运行系统 <a class="header-anchor" href="#运行系统" aria-label="Permalink to &quot;运行系统&quot;">​</a></h2><h3 id="_1、拉取源码" tabindex="-1">1、拉取源码 <a class="header-anchor" href="#_1、拉取源码" aria-label="Permalink to &quot;1、拉取源码&quot;">​</a></h3><p>项目是前后端分离的,需要分别拉取前后端代码到本地,<a href="/src/introduce/src.html">源码仓库</a></p><h3 id="_2、配置数据库" tabindex="-1">2、配置数据库 <a class="header-anchor" href="#_2、配置数据库" aria-label="Permalink to &quot;2、配置数据库&quot;">​</a></h3><p>后端修改数据库配置,配置文件位于<code>src/resources/application-local.yml</code></p><p>以 Mysql 为例,其他数据库适配中...</p><p>Mysql(<code>&gt;=5.7版本</code>),建议 8.0,首次启动会自动初始化并导入数据</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># mysql,驱动已经内置,无需安装</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">spring</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> datasource</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> url</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">jdbc:mysql://127.0.0.1:3306/cool?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2b8</span></span>
@@ -7,7 +7,7 @@ import{_ as a}from"./chunks/admin.CyLBVO1a.js";import{_ as s,a as i,o as e,aj as
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> driver-class-name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">com.mysql.cj.jdbc.Driver</span></span></code></pre></div><h3 id="_3、启动后端服务" tabindex="-1">3、启动后端服务 <a class="header-anchor" href="#_3、启动后端服务" aria-label="Permalink to &quot;3、启动后端服务&quot;">​</a></h3><p>启动文件:<code>src/main/java/com/cool/CoolApplication.java</code>,控制台打印出下面信息,说明后端服务启动成功</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>2024-07-15T14:38:45.382+08:00 INFO 31908 --- [cool-admin-java] [ main] c.c.c.plugin.service.CoolPluginService : 没有可初始化的插件</span></span>
<span class="line"><span>2024-07-15T14:38:45.383+08:00 INFO 31908 --- [cool-admin-java] [ main] com.cool.core.eps.EpsEvent : 构建eps信息</span></span>
<span class="line"><span>2024-07-15T14:38:45.941+08:00 INFO 31908 --- [cool-admin-java] [ task-1] o.springdoc.api.AbstractOpenApiResource : Init duration for springdoc-openapi is: 556 ms</span></span>
<span class="line"><span>2024-07-15T14:38:46.101+08:00 INFO 31908 --- [cool-admin-java] [pool-3-thread-1] com.cool.core.eps.CoolEps : 初始化eps完成,服务启动成功,端口:8001</span></span></code></pre></div><p>访问:<a href="http://127.0.0.1:8001" target="_blank" rel="noreferrer">http://127.0.0.1:8001</a>,你将会看到后端的欢迎页面</p><p><img src="`+l+`" alt=""></p><h3 id="_4、启动前端服务" tabindex="-1">4、启动前端服务 <a class="header-anchor" href="#_4、启动前端服务" aria-label="Permalink to &quot;4、启动前端服务&quot;">​</a></h3><p><a href="https://vue.cool-admin.com" target="_blank" rel="noreferrer">点击前往前端项目详细文档</a></p><p>在项目根目录下(跟 package.json 同级)执行命令:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 安装依赖</span></span>
<span class="line"><span>2024-07-15T14:38:46.101+08:00 INFO 31908 --- [cool-admin-java] [pool-3-thread-1] com.cool.core.eps.CoolEps : 初始化eps完成,服务启动成功,端口:8001</span></span></code></pre></div><p>访问:<a href="http://127.0.0.1:8001" target="_blank" rel="noreferrer">http://127.0.0.1:8001</a>,你将会看到后端的欢迎页面</p><p><img src="`+t+`" alt=""></p><h3 id="_4、启动前端服务" tabindex="-1">4、启动前端服务 <a class="header-anchor" href="#_4、启动前端服务" aria-label="Permalink to &quot;4、启动前端服务&quot;">​</a></h3><p><a href="https://vue.cool-admin.com" target="_blank" rel="noreferrer">点击前往前端项目详细文档</a></p><p>在项目根目录下(跟 package.json 同级)执行命令:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 安装依赖</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 启动</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span></span></code></pre></div><p>访问<a href="http://127.0.0.1:9000/" target="_blank" rel="noreferrer">http://127.0.0.1:9000/</a> 默认账户密码</p><blockquote><p>账户:admin<br> 密码:123456</p></blockquote><p><img src="`+a+'" alt=""></p>',24),r=[p];function h(o,c,d,k,g,u){return e(),i("div",null,r)}const b=s(t,[["render",h]]);export{E as __pageData,b as default};
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span></span></code></pre></div><p>访问<a href="http://127.0.0.1:9000/" target="_blank" rel="noreferrer">http://127.0.0.1:9000/</a> 默认账户密码</p><blockquote><p>账户:admin<br> 密码:123456</p></blockquote><p><img src="`+s+'" alt=""></p>',24)]))}const E=i(p,[["render",r]]);export{m as __pageData,E as default};
@@ -0,0 +1 @@
import{_ as s}from"./chunks/admin.CyLBVO1a.js";import{_ as i,a as e,o as n,ah as l}from"./chunks/framework.BKXlU_Nx.js";const t="/guide/run.png",m=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721271330000}'),p={name:"src/guide/quick.md"};function r(h,a,o,c,d,k){return n(),e("div",null,a[0]||(a[0]=[l("",24)]))}const E=i(p,[["render",r]]);export{m as __pageData,E as default};
@@ -1 +0,0 @@
import{_ as a}from"./chunks/admin.CyLBVO1a.js";import{_ as s,a as i,o as e,aj as n}from"./chunks/framework.BjhQB2K5.js";const l="/guide/run.png",E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1721271330000}'),t={name:"src/guide/quick.md"},p=n("",24),r=[p];function h(o,c,d,k,g,u){return e(),i("div",null,r)}const b=s(t,[["render",h]]);export{E as __pageData,b as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"请求日志记录","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/recordLog.md","filePath":"src/guide/recordLog.md","lastUpdated":1722705865000}'),e={name:"src/guide/recordLog.md"},p=n("",6),t=[p];function l(h,k,r,d,E,c){return a(),i("div",null,t)}const y=s(e,[["render",l]]);export{g as __pageData,y as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"请求日志记录","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/recordLog.md","filePath":"src/guide/recordLog.md","lastUpdated":1722705865000}'),e={name:"src/guide/recordLog.md"},p=n(`<h1 id="请求日志记录" tabindex="-1">请求日志记录 <a class="header-anchor" href="#请求日志记录" aria-label="Permalink to &quot;请求日志记录&quot;">​</a></h1><p>记录接口请求日志入库</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseLogFilter</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> implements</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Filter</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
import{_ as i,a,o as n,ah as e}from"./chunks/framework.BKXlU_Nx.js";const c=JSON.parse('{"title":"请求日志记录","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/recordLog.md","filePath":"src/guide/recordLog.md","lastUpdated":1722705865000}'),p={name:"src/guide/recordLog.md"};function t(l,s,h,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`<h1 id="请求日志记录" tabindex="-1">请求日志记录 <a class="header-anchor" href="#请求日志记录" aria-label="Permalink to &quot;请求日志记录&quot;">​</a></h1><p>记录接口请求日志入库</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseLogFilter</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> implements</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Filter</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Resource</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BaseSysLogService baseSysLogService;</span></span>
<span class="line"></span>
@@ -19,4 +19,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g
<span class="line"><span> - /app/**</span></span>
<span class="line"><span> - /css/*</span></span>
<span class="line"><span> - /js/*</span></span>
<span class="line"><span> - /favicon.ico</span></span></code></pre></div>`,6),t=[p];function l(h,k,r,d,E,c){return a(),i("div",null,t)}const y=s(e,[["render",l]]);export{g as __pageData,y as default};
<span class="line"><span> - /favicon.ico</span></span></code></pre></div>`,6)]))}const g=i(p,[["render",t]]);export{c as __pageData,g as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as e}from"./chunks/framework.BKXlU_Nx.js";const c=JSON.parse('{"title":"请求日志记录","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/recordLog.md","filePath":"src/guide/recordLog.md","lastUpdated":1722705865000}'),p={name:"src/guide/recordLog.md"};function t(l,s,h,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",6)]))}const g=i(p,[["render",t]]);export{c as __pageData,g as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1736439326000}'),h={name:"src/guide/security.md"},l=n(`<h1 id="权限校验" tabindex="-1">权限校验 <a class="header-anchor" href="#权限校验" aria-label="Permalink to &quot;权限校验&quot;">​</a></h1><p>采用 spring-security 与 jwt 作为框架安全与权限校验。</p><h2 id="配置" tabindex="-1">配置 <a class="header-anchor" href="#配置" aria-label="Permalink to &quot;配置&quot;">​</a></h2><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">cool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1736439326000}'),l={name:"src/guide/security.md"};function t(k,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h(`<h1 id="权限校验" tabindex="-1">权限校验 <a class="header-anchor" href="#权限校验" aria-label="Permalink to &quot;权限校验&quot;">​</a></h1><p>采用 spring-security 与 jwt 作为框架安全与权限校验。</p><h2 id="配置" tabindex="-1">配置 <a class="header-anchor" href="#配置" aria-label="Permalink to &quot;配置&quot;">​</a></h2><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">cool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # token 相关配置</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> token</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 过期时间 单位:秒 半小时</span></span>
@@ -232,4 +232,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const c
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/css/*</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/js/*</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/druid/**</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/admin/base/open/**</span></span></code></pre></div>`,39),t=[l];function k(p,e,E,r,d,g){return a(),i("div",null,t)}const F=s(h,[["render",k]]);export{c as __pageData,F as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/admin/base/open/**</span></span></code></pre></div>`,39)]))}const y=i(l,[["render",t]]);export{g as __pageData,y as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1736439326000}'),l={name:"src/guide/security.md"};function t(k,s,p,e,E,r){return n(),a("div",null,s[0]||(s[0]=[h("",39)]))}const y=i(l,[["render",t]]);export{g as __pageData,y as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1736439326000}'),h={name:"src/guide/security.md"},l=n("",39),t=[l];function k(p,e,E,r,d,g){return a(),i("div",null,t)}const F=s(h,[["render",k]]);export{c as __pageData,F as default};
@@ -1,4 +1,4 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),e={name:"src/guide/service.md"},l=n(`<h1 id="服务" tabindex="-1">服务 <a class="header-anchor" href="#服务" aria-label="Permalink to &quot;服务&quot;">​</a></h1><p>处理业务逻辑的代码应该被封装在服务中。</p><h2 id="crud" tabindex="-1">Crud <a class="header-anchor" href="#crud" aria-label="Permalink to &quot;Crud&quot;">​</a></h2><p><code>BaseService</code>中集成了常用的 CRUD 操作,可以参考<code>BaseService</code>的实现。</p><h2 id="修改前后" tabindex="-1">修改前后 <a class="header-anchor" href="#修改前后" aria-label="Permalink to &quot;修改前后&quot;">​</a></h2><p>可以重写<code>modifyBefore</code>和<code>modifyAfter</code>方法,在修改数据之前或之后做一些处理</p><ul><li>修改之前</li></ul><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/**</span></span>
import{_ as i,a,o as n,ah as e}from"./chunks/framework.BKXlU_Nx.js";const o=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),l={name:"src/guide/service.md"};function p(t,s,h,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`<h1 id="服务" tabindex="-1">服务 <a class="header-anchor" href="#服务" aria-label="Permalink to &quot;服务&quot;">​</a></h1><p>处理业务逻辑的代码应该被封装在服务中。</p><h2 id="crud" tabindex="-1">Crud <a class="header-anchor" href="#crud" aria-label="Permalink to &quot;Crud&quot;">​</a></h2><p><code>BaseService</code>中集成了常用的 CRUD 操作,可以参考<code>BaseService</code>的实现。</p><h2 id="修改前后" tabindex="-1">修改前后 <a class="header-anchor" href="#修改前后" aria-label="Permalink to &quot;修改前后&quot;">​</a></h2><p>可以重写<code>modifyBefore</code>和<code>modifyAfter</code>方法,在修改数据之前或之后做一些处理</p><ul><li>修改之前</li></ul><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/**</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * 修改之前</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> *</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> requestParams</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> 请求参数</span></span>
@@ -17,4 +17,4 @@ import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Override</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> modifyAfter</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(JSONObject requestParams, T t, ModifyEnum type) {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,10),p=[l];function t(h,k,r,d,c,o){return a(),i("div",null,p)}const y=s(e,[["render",t]]);export{g as __pageData,y as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,10)]))}const A=i(l,[["render",p]]);export{o as __pageData,A as default};
@@ -0,0 +1 @@
import{_ as i,a,o as n,ah as e}from"./chunks/framework.BKXlU_Nx.js";const o=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),l={name:"src/guide/service.md"};function p(t,s,h,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",10)]))}const A=i(l,[["render",p]]);export{o as __pageData,A as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as n}from"./chunks/framework.BjhQB2K5.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":1721036629000}'),e={name:"src/guide/service.md"},l=n("",10),p=[l];function t(h,k,r,d,c,o){return a(),i("div",null,p)}const y=s(e,[["render",t]]);export{g as __pageData,y as default};
@@ -1,8 +1,8 @@
import{_ as s,a as i,o as a,aj as t}from"./chunks/framework.BjhQB2K5.js";const y=JSON.parse('{"title":"swagger 文档","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/swagger.md","filePath":"src/guide/swagger.md","lastUpdated":1720593505000}'),h={name:"src/guide/swagger.md"},n=t(`<h1 id="swagger-文档" tabindex="-1">swagger 文档 <a class="header-anchor" href="#swagger-文档" aria-label="Permalink to &quot;swagger 文档&quot;">​</a></h1><p>默认集成<a href="https://springdoc.org/" target="_blank" rel="noreferrer">springdoc</a>,作为文档。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Tag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
import{_ as i,a,o as t,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"swagger 文档","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/swagger.md","filePath":"src/guide/swagger.md","lastUpdated":1720593505000}'),n={name:"src/guide/swagger.md"};function k(e,s,l,p,r,E){return t(),a("div",null,s[0]||(s[0]=[h(`<h1 id="swagger-文档" tabindex="-1">swagger 文档 <a class="header-anchor" href="#swagger-文档" aria-label="Permalink to &quot;swagger 文档&quot;">​</a></h1><p>默认集成<a href="https://springdoc.org/" target="_blank" rel="noreferrer">springdoc</a>,作为文档。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Tag</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;测试CURD&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">CoolRestController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">value</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;/cool&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">api</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;add&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;delete&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;update&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;page&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;list&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;info&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> AdminDemoInfoController</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoService</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoEntity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt; {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Override</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> protected</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> init</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(HttpServletRequest </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">request</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, JSONObject </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">requestParams</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 可以在这边实现一下列表数据排序规则,查询条件过滤,返回哪些字段等</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>系统启动完成访问:<a href="http://127.0.0.1:8001/swagger-ui/index.html#/" target="_blank" rel="noreferrer">http://127.0.0.1:8001/swagger-ui/index.html#/</a></p>`,4),e=[n];function k(l,p,r,E,d,g){return a(),i("div",null,e)}const F=s(h,[["render",k]]);export{y as __pageData,F as default};
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>系统启动完成访问:<a href="http://127.0.0.1:8001/swagger-ui/index.html#/" target="_blank" rel="noreferrer">http://127.0.0.1:8001/swagger-ui/index.html#/</a></p>`,4)]))}const o=i(n,[["render",k]]);export{g as __pageData,o as default};
@@ -0,0 +1 @@
import{_ as i,a,o as t,ah as h}from"./chunks/framework.BKXlU_Nx.js";const g=JSON.parse('{"title":"swagger 文档","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/swagger.md","filePath":"src/guide/swagger.md","lastUpdated":1720593505000}'),n={name:"src/guide/swagger.md"};function k(e,s,l,p,r,E){return t(),a("div",null,s[0]||(s[0]=[h("",4)]))}const o=i(n,[["render",k]]);export{g as __pageData,o as default};
@@ -1 +0,0 @@
import{_ as s,a as i,o as a,aj as t}from"./chunks/framework.BjhQB2K5.js";const y=JSON.parse('{"title":"swagger 文档","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/swagger.md","filePath":"src/guide/swagger.md","lastUpdated":1720593505000}'),h={name:"src/guide/swagger.md"},n=t("",4),e=[n];function k(l,p,r,E,d,g){return a(),i("div",null,e)}const F=s(h,[["render",k]]);export{y as __pageData,F as default};

Some files were not shown because too many files have changed in this diff Show More