mirror of
https://github.com/cool-team-official/cool-admin-java-docs.git
synced 2026-10-06 13:35:57 +08:00
完善
This commit is contained in:
Vendored
+22
-22
@@ -1,58 +1,58 @@
|
||||
{
|
||||
"hash": "d9b86bd3",
|
||||
"configHash": "e63c5cfc",
|
||||
"lockfileHash": "c55b7bf4",
|
||||
"browserHash": "045a2561",
|
||||
"hash": "d712c44c",
|
||||
"configHash": "04b05d57",
|
||||
"lockfileHash": "10c85a81",
|
||||
"browserHash": "e5d017df",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"src": "../../../node_modules/.pnpm/vue@3.4.31/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "bd97c188",
|
||||
"fileHash": "50c147de",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vue/devtools-api": {
|
||||
"src": "../../../node_modules/@vue/devtools-api/dist/index.js",
|
||||
"src": "../../../node_modules/.pnpm/@vue+devtools-api@7.3.5/node_modules/@vue/devtools-api/dist/index.js",
|
||||
"file": "vitepress___@vue_devtools-api.js",
|
||||
"fileHash": "ac0f4af7",
|
||||
"fileHash": "a1f0d505",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vueuse/core": {
|
||||
"src": "../../../node_modules/@vueuse/core/index.mjs",
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+core@10.11.0_vue@3.4.31/node_modules/@vueuse/core/index.mjs",
|
||||
"file": "vitepress___@vueuse_core.js",
|
||||
"fileHash": "551b7fb3",
|
||||
"fileHash": "d1438051",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vueuse/integrations/useFocusTrap": {
|
||||
"src": "../../../node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
||||
"src": "../../../node_modules/.pnpm/@vueuse+integrations@10.11.0_focus-trap@7.5.4_vue@3.4.31/node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
||||
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
|
||||
"fileHash": "8937181e",
|
||||
"fileHash": "3f374098",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > mark.js/src/vanilla.js": {
|
||||
"src": "../../../node_modules/mark.js/src/vanilla.js",
|
||||
"src": "../../../node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/vanilla.js",
|
||||
"file": "vitepress___mark__js_src_vanilla__js.js",
|
||||
"fileHash": "4d49e387",
|
||||
"fileHash": "943e4b2c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > minisearch": {
|
||||
"src": "../../../node_modules/minisearch/dist/es/index.js",
|
||||
"src": "../../../node_modules/.pnpm/minisearch@6.3.0/node_modules/minisearch/dist/es/index.js",
|
||||
"file": "vitepress___minisearch.js",
|
||||
"fileHash": "9eb5370b",
|
||||
"fileHash": "415e26a7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"medium-zoom": {
|
||||
"src": "../../../node_modules/medium-zoom/dist/medium-zoom.esm.js",
|
||||
"src": "../../../node_modules/.pnpm/medium-zoom@1.1.0/node_modules/medium-zoom/dist/medium-zoom.esm.js",
|
||||
"file": "medium-zoom.js",
|
||||
"fileHash": "82de3862",
|
||||
"fileHash": "10651d0b",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-GK7ZRSPS": {
|
||||
"file": "chunk-GK7ZRSPS.js"
|
||||
"chunk-7WWQ3R2W": {
|
||||
"file": "chunk-7WWQ3R2W.js"
|
||||
},
|
||||
"chunk-XPVHNUZ4": {
|
||||
"file": "chunk-XPVHNUZ4.js"
|
||||
"chunk-CGFDJW4T": {
|
||||
"file": "chunk-CGFDJW4T.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -33,9 +33,9 @@ import {
|
||||
version,
|
||||
watch,
|
||||
watchEffect
|
||||
} from "./chunk-XPVHNUZ4.js";
|
||||
} from "./chunk-CGFDJW4T.js";
|
||||
|
||||
// node_modules/vitepress/lib/vue-demi.mjs
|
||||
// node_modules/.pnpm/vitepress@1.3.0_@algolia+client-search@4.24.0_postcss@8.4.39_search-insights@2.15.0/node_modules/vitepress/lib/vue-demi.mjs
|
||||
var isVue2 = false;
|
||||
var isVue3 = true;
|
||||
function set(target, key, val) {
|
||||
@@ -55,7 +55,7 @@ function del(target, key) {
|
||||
delete target[key];
|
||||
}
|
||||
|
||||
// node_modules/@vueuse/shared/index.mjs
|
||||
// node_modules/.pnpm/@vueuse+shared@10.11.0_vue@3.4.31/node_modules/@vueuse/shared/index.mjs
|
||||
function computedEager(fn, options) {
|
||||
var _a;
|
||||
const result = shallowRef();
|
||||
@@ -1552,7 +1552,7 @@ function whenever(source, cb, options) {
|
||||
return stop;
|
||||
}
|
||||
|
||||
// node_modules/@vueuse/core/index.mjs
|
||||
// node_modules/.pnpm/@vueuse+core@10.11.0_vue@3.4.31/node_modules/@vueuse/core/index.mjs
|
||||
function computedAsync(evaluationCallback, initialState, optionsOrRef) {
|
||||
let options;
|
||||
if (isRef(optionsOrRef)) {
|
||||
@@ -9169,4 +9169,4 @@ vitepress/lib/vue-demi.mjs:
|
||||
* @license MIT
|
||||
*)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-GK7ZRSPS.js.map
|
||||
//# sourceMappingURL=chunk-7WWQ3R2W.js.map
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+6
-6
@@ -1,4 +1,4 @@
|
||||
// node_modules/@vue/shared/dist/shared.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+shared@3.4.31/node_modules/@vue/shared/dist/shared.esm-bundler.js
|
||||
function makeMap(str, expectsLowerCase) {
|
||||
const set2 = new Set(str.split(","));
|
||||
return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val);
|
||||
@@ -288,7 +288,7 @@ var stringifySymbol = (v, i = "") => {
|
||||
);
|
||||
};
|
||||
|
||||
// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+reactivity@3.4.31/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
|
||||
function warn(msg, ...args) {
|
||||
console.warn(`[Vue warn] ${msg}`, ...args);
|
||||
}
|
||||
@@ -1476,7 +1476,7 @@ var TriggerOpTypes = {
|
||||
"CLEAR": "clear"
|
||||
};
|
||||
|
||||
// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+runtime-core@3.4.31/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js
|
||||
var stack = [];
|
||||
function pushWarningContext(vnode) {
|
||||
stack.push(vnode);
|
||||
@@ -9626,7 +9626,7 @@ var resolveFilter = null;
|
||||
var compatUtils = null;
|
||||
var DeprecationTypes = null;
|
||||
|
||||
// node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js
|
||||
// node_modules/.pnpm/@vue+runtime-dom@3.4.31/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js
|
||||
var svgNS = "http://www.w3.org/2000/svg";
|
||||
var mathmlNS = "http://www.w3.org/1998/Math/MathML";
|
||||
var doc = typeof document !== "undefined" ? document : null;
|
||||
@@ -11219,7 +11219,7 @@ var initDirectivesForSSR = () => {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/vue/dist/vue.runtime.esm-bundler.js
|
||||
// node_modules/.pnpm/vue@3.4.31/node_modules/vue/dist/vue.runtime.esm-bundler.js
|
||||
function initDev() {
|
||||
{
|
||||
initCustomFormatter();
|
||||
@@ -11437,4 +11437,4 @@ vue/dist/vue.runtime.esm-bundler.js:
|
||||
* @license MIT
|
||||
**)
|
||||
*/
|
||||
//# sourceMappingURL=chunk-XPVHNUZ4.js.map
|
||||
//# sourceMappingURL=chunk-CGFDJW4T.js.map
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// node_modules/medium-zoom/dist/medium-zoom.esm.js
|
||||
// node_modules/.pnpm/medium-zoom@1.1.0/node_modules/medium-zoom/dist/medium-zoom.esm.js
|
||||
var _extends = Object.assign || function(target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i];
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,4 +1,4 @@
|
||||
// node_modules/@vue/devtools-shared/dist/index.js
|
||||
// node_modules/.pnpm/@vue+devtools-shared@7.3.5/node_modules/@vue/devtools-shared/dist/index.js
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
@@ -254,7 +254,7 @@ function isUrlString(str) {
|
||||
var deepClone = (0, import_rfdc.default)({ circles: true });
|
||||
init_esm_shims();
|
||||
|
||||
// node_modules/hookable/dist/index.mjs
|
||||
// node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs
|
||||
function flatHooks(configHooks, hooks2 = {}, parentName) {
|
||||
for (const key in configHooks) {
|
||||
const subHook = configHooks[key];
|
||||
@@ -459,7 +459,7 @@ function createHooks() {
|
||||
return new Hookable();
|
||||
}
|
||||
|
||||
// node_modules/perfect-debounce/dist/index.mjs
|
||||
// node_modules/.pnpm/perfect-debounce@1.0.0/node_modules/perfect-debounce/dist/index.mjs
|
||||
var DEBOUNCE_DEFAULTS = {
|
||||
trailing: true
|
||||
};
|
||||
@@ -516,11 +516,11 @@ async function _applyPromised(fn, _this, args) {
|
||||
return await fn.apply(_this, args);
|
||||
}
|
||||
|
||||
// node_modules/birpc/dist/index.mjs
|
||||
// node_modules/.pnpm/birpc@0.2.17/node_modules/birpc/dist/index.mjs
|
||||
var { clearTimeout: clearTimeout2, setTimeout: setTimeout2 } = globalThis;
|
||||
var random = Math.random.bind(Math);
|
||||
|
||||
// node_modules/@vue/devtools-kit/dist/index.js
|
||||
// node_modules/.pnpm/@vue+devtools-kit@7.3.5/node_modules/@vue/devtools-kit/dist/index.js
|
||||
var __create2 = Object.create;
|
||||
var __defProp2 = Object.defineProperty;
|
||||
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
||||
|
||||
File diff suppressed because one or more lines are too long
+2
-2
@@ -273,8 +273,8 @@ import {
|
||||
watchTriggerable,
|
||||
watchWithFilter,
|
||||
whenever
|
||||
} from "./chunk-GK7ZRSPS.js";
|
||||
import "./chunk-XPVHNUZ4.js";
|
||||
} from "./chunk-7WWQ3R2W.js";
|
||||
import "./chunk-CGFDJW4T.js";
|
||||
export {
|
||||
DefaultMagicKeysAliasMap,
|
||||
StorageSerializers,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import {
|
||||
tryOnScopeDispose,
|
||||
unrefElement
|
||||
} from "./chunk-GK7ZRSPS.js";
|
||||
} from "./chunk-7WWQ3R2W.js";
|
||||
import {
|
||||
ref,
|
||||
watch
|
||||
} from "./chunk-XPVHNUZ4.js";
|
||||
} from "./chunk-CGFDJW4T.js";
|
||||
|
||||
// node_modules/tabbable/dist/index.esm.js
|
||||
// node_modules/.pnpm/tabbable@6.2.0/node_modules/tabbable/dist/index.esm.js
|
||||
var candidateSelectors = ["input:not([inert])", "select:not([inert])", "textarea:not([inert])", "a[href]:not([inert])", "button:not([inert])", "[tabindex]:not(slot):not([inert])", "audio[controls]:not([inert])", "video[controls]:not([inert])", '[contenteditable]:not([contenteditable="false"]):not([inert])', "details>summary:first-of-type:not([inert])", "details:not([inert])"];
|
||||
var candidateSelector = candidateSelectors.join(",");
|
||||
var NoElement = typeof Element === "undefined";
|
||||
@@ -338,7 +338,7 @@ var isFocusable = function isFocusable2(node, options) {
|
||||
return isNodeMatchingSelectorFocusable(options, node);
|
||||
};
|
||||
|
||||
// node_modules/focus-trap/dist/focus-trap.esm.js
|
||||
// node_modules/.pnpm/focus-trap@7.5.4/node_modules/focus-trap/dist/focus-trap.esm.js
|
||||
function ownKeys(e, r) {
|
||||
var t = Object.keys(e);
|
||||
if (Object.getOwnPropertySymbols) {
|
||||
@@ -1018,7 +1018,7 @@ var createFocusTrap = function createFocusTrap2(elements, userOptions) {
|
||||
return trap;
|
||||
};
|
||||
|
||||
// node_modules/@vueuse/integrations/useFocusTrap.mjs
|
||||
// node_modules/.pnpm/@vueuse+integrations@10.11.0_focus-trap@7.5.4_vue@3.4.31/node_modules/@vueuse/integrations/useFocusTrap.mjs
|
||||
function useFocusTrap(target, options = {}) {
|
||||
let trap;
|
||||
const { immediate, ...focusTrapOptions } = options;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
// node_modules/mark.js/src/lib/domiterator.js
|
||||
// node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/lib/domiterator.js
|
||||
var DOMIterator = class _DOMIterator {
|
||||
/**
|
||||
* @param {HTMLElement|HTMLElement[]|NodeList|string} ctx - The context DOM
|
||||
@@ -494,7 +494,7 @@ var DOMIterator = class _DOMIterator {
|
||||
*/
|
||||
};
|
||||
|
||||
// node_modules/mark.js/src/lib/mark.js
|
||||
// node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/lib/mark.js
|
||||
var Mark = class {
|
||||
// eslint-disable-line no-unused-vars
|
||||
/**
|
||||
@@ -1638,7 +1638,7 @@ var Mark = class {
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/mark.js/src/vanilla.js
|
||||
// node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/vanilla.js
|
||||
function Mark2(ctx) {
|
||||
const instance = new Mark(ctx);
|
||||
this.mark = (sv, opt) => {
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,4 +1,4 @@
|
||||
// node_modules/minisearch/dist/es/index.js
|
||||
// node_modules/.pnpm/minisearch@6.3.0/node_modules/minisearch/dist/es/index.js
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign2(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -158,7 +158,7 @@ import {
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-XPVHNUZ4.js";
|
||||
} from "./chunk-CGFDJW4T.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
|
||||
@@ -99,20 +99,22 @@ export default defineConfig({
|
||||
text: "教程",
|
||||
items: [
|
||||
{ text: "快速开始", link: "/src/guide/quick.md" },
|
||||
{ text: "目录结构", link: "/src/guide/dir.md" },
|
||||
{ text: "Ai编码", link: "/src/guide/ai.md" },
|
||||
{ text: "Ai流程编排", link: "/src/guide/flow.md" },
|
||||
{ text: "扩展插件", link: "/src/guide/plugin.md" },
|
||||
{ text: "开发方式", link: "/src/guide/dev.md" },
|
||||
{
|
||||
text: "核心",
|
||||
items: [
|
||||
{ text: "Spring Boot3", link: "/src/guide/springboot3.md" },
|
||||
{ text: "控制器(controller)", link: "/src/guide/controller.md" },
|
||||
{ text: "缓存", link: "/src/guide/cache.md" },
|
||||
{ text: "控制器(Controller)", link: "/src/guide/controller.md" },
|
||||
{ text: "服务(Service)", link: "/src/guide/service.md" },
|
||||
{ text: "数据库(Db)", link: "/src/guide/db.md" },
|
||||
{ text: "缓存(Cache)", link: "/src/guide/cache.md" },
|
||||
{ text: "文件上传", link: "/src/guide/upload.md" },
|
||||
{ text: "统一异常", link: "/src/guide/exception.md" },
|
||||
{ text: "权限校验", link: "/src/guide/security.md" },
|
||||
{ text: "数据初始化", link: "/src/guide/initData.md" },
|
||||
{ text: "代码生成", link: "/src/guide/generatorCode.md" },
|
||||
{ text: "swagger 文档", link: "/src/guide/swagger.md" },
|
||||
],
|
||||
},
|
||||
@@ -133,7 +135,7 @@ export default defineConfig({
|
||||
},
|
||||
{
|
||||
text: "常见问题",
|
||||
link: "/src/question/commonQuestion.md",
|
||||
link: "/src/question/common.md",
|
||||
},
|
||||
{
|
||||
text: "交流合作",
|
||||
|
||||
Vendored
+3
-3
@@ -6,16 +6,16 @@
|
||||
<title>404 | Cool Admin</title>
|
||||
<meta name="description" content="Not Found">
|
||||
<meta name="generator" content="VitePress v1.3.0">
|
||||
<link rel="preload stylesheet" href="/assets/style.8kWPK1kv.css" as="style">
|
||||
<link rel="preload stylesheet" href="/assets/style.CoKMOhgV.css" as="style">
|
||||
|
||||
<script type="module" src="/assets/app.BbEPPFnZ.js"></script>
|
||||
<script type="module" src="/assets/app.BU4S0woS.js"></script>
|
||||
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
||||
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||||
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"CAVf4Oqs\",\"readme.md\":\"BXdrAVTM\",\"src_about_index.md\":\"BcF27jYK\",\"src_guide_ai.md\":\"Gsy5t_8S\",\"src_guide_cache.md\":\"BOJv_Che\",\"src_guide_controller.md\":\"r2nPGOST\",\"src_guide_exception.md\":\"m-_TuVSi\",\"src_guide_flow.md\":\"DPOXSEzV\",\"src_guide_generatorcode.md\":\"vZguykgt\",\"src_guide_initdata.md\":\"CSiXmFuQ\",\"src_guide_plugin.md\":\"jVCi1KWQ\",\"src_guide_quick.md\":\"Dd-HcOh7\",\"src_guide_security.md\":\"BubSrMYS\",\"src_guide_springboot3.md\":\"_tGrFUv8\",\"src_guide_swagger.md\":\"BS_bARv2\",\"src_guide_upload.md\":\"Bq5siQ0E\",\"src_introduce_index.md\":\"CXfKVW0H\",\"src_introduce_show.md\":\"DSZevIGP\",\"src_introduce_src.md\":\"pd2vUss-\",\"src_question_commonquestion.md\":\"CeHvXEMU\",\"src_todo_plan.md\":\"bhlKWKsq\",\"src_todo_update.md\":\"qtvh9HZG\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Cool Admin\",\"description\":\"一个很酷的后台管理系统开发框架\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.png\",\"search\":{\"provider\":\"local\"},\"footer\":{\"message\":\"COOL为开发者而生\",\"copyright\":\"<a href=\\\"https://beian.miit.gov.cn\\\">Copyright © COOL | 闽ICP备2024042701号</a>\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":{\"label\":\"页面导航\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"medium\"}},\"langMenuLabel\":\"多语言\",\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"切换到浅色模式\",\"darkModeSwitchTitle\":\"切换到深色模式\",\"editLink\":{\"text\":\"在GitHub上编辑\",\"pattern\":\"https://github.com/cool-team-official/cool-admin-java-docs/blob/main/:path\"},\"nav\":[{\"text\":\"介绍\",\"link\":\"/src/introduce/index.md\",\"noIcon\":false},{\"text\":\"教程\",\"link\":\"/src/guide/quick.md\"},{\"text\":\"🔥插件市场\",\"link\":\"https://cool-js.com/plugin/list.html\"},{\"text\":\"交流合作\",\"link\":\"/src/about/index.md\"},{\"text\":\"v7.1.0\",\"items\":[{\"text\":\"更新日志\",\"link\":\"/src/todo/update.md\"},{\"text\":\"版本计划\",\"link\":\"/src/todo/plan.md\"}]},{\"text\":\"更多\",\"items\":[{\"text\":\"Cool Admin(Nodejs版)\",\"link\":\"https://cool-js.com\"},{\"text\":\"Uni(基于uni-app跨端移动端开发)\",\"link\":\"https://cool-js.com/uni/introduce.html\"}]}],\"sidebar\":[{\"text\":\"介绍\",\"items\":[{\"text\":\"简介\",\"link\":\"/src/introduce/index.md\"},{\"text\":\"演示\",\"link\":\"/src/introduce/show.md\"},{\"text\":\"源码\",\"link\":\"/src/introduce/src.md\"}]},{\"text\":\"教程\",\"items\":[{\"text\":\"快速开始\",\"link\":\"/src/guide/quick.md\"},{\"text\":\"Ai编码\",\"link\":\"/src/guide/ai.md\"},{\"text\":\"Ai流程编排\",\"link\":\"/src/guide/flow.md\"},{\"text\":\"扩展插件\",\"link\":\"/src/guide/plugin.md\"},{\"text\":\"核心\",\"items\":[{\"text\":\"Spring Boot3\",\"link\":\"/src/guide/springboot3.md\"},{\"text\":\"控制器(controller)\",\"link\":\"/src/guide/controller.md\"},{\"text\":\"缓存\",\"link\":\"/src/guide/cache.md\"},{\"text\":\"文件上传\",\"link\":\"/src/guide/upload.md\"},{\"text\":\"统一异常\",\"link\":\"/src/guide/exception.md\"},{\"text\":\"权限校验\",\"link\":\"/src/guide/security.md\"},{\"text\":\"数据初始化\",\"link\":\"/src/guide/initData.md\"},{\"text\":\"代码生成\",\"link\":\"/src/guide/generatorCode.md\"},{\"text\":\"swagger 文档\",\"link\":\"/src/guide/swagger.md\"}]}]},{\"text\":\"计划&更新\",\"items\":[{\"text\":\"更新\",\"link\":\"/src/todo/update.md\"},{\"text\":\"计划\",\"link\":\"/src/todo/plan.md\"}]},{\"text\":\"常见问题\",\"link\":\"/src/question/commonQuestion.md\"},{\"text\":\"交流合作\",\"link\":\"/src/about/index.md\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/cool-team-official/cool-admin-java\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
||||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"Cgb96qqp\",\"readme.md\":\"CH6W0xY-\",\"src_about_index.md\":\"D5pLvKL8\",\"src_guide_ai.md\":\"C2wKEBKg\",\"src_guide_cache.md\":\"BhqP_wiC\",\"src_guide_controller.md\":\"DFXsvLef\",\"src_guide_db.md\":\"JecGjjcC\",\"src_guide_dev.md\":\"Cgkglw3x\",\"src_guide_dir.md\":\"z6VUJtso\",\"src_guide_exception.md\":\"DTaAZohQ\",\"src_guide_flow.md\":\"CDskEDnP\",\"src_guide_initdata.md\":\"D5kMLxxc\",\"src_guide_plugin.md\":\"D4um12uG\",\"src_guide_quick.md\":\"DbcQSNam\",\"src_guide_security.md\":\"DjyHN9T3\",\"src_guide_service.md\":\"Coeaaupo\",\"src_guide_swagger.md\":\"C8SICQIq\",\"src_guide_upload.md\":\"DSE1ASmj\",\"src_introduce_index.md\":\"CqGpQfmF\",\"src_introduce_show.md\":\"y18FuumV\",\"src_introduce_src.md\":\"ByQ4FCeZ\",\"src_question_common.md\":\"BDnOx12Z\",\"src_todo_plan.md\":\"BzDFnPcU\",\"src_todo_update.md\":\"BLutrh4G\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Cool Admin\",\"description\":\"一个很酷的后台管理系统开发框架\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.png\",\"search\":{\"provider\":\"local\"},\"footer\":{\"message\":\"COOL为开发者而生\",\"copyright\":\"<a href=\\\"https://beian.miit.gov.cn\\\">Copyright © COOL | 闽ICP备2024042701号</a>\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"outline\":{\"label\":\"页面导航\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"medium\"}},\"langMenuLabel\":\"多语言\",\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"切换到浅色模式\",\"darkModeSwitchTitle\":\"切换到深色模式\",\"editLink\":{\"text\":\"在GitHub上编辑\",\"pattern\":\"https://github.com/cool-team-official/cool-admin-java-docs/blob/main/:path\"},\"nav\":[{\"text\":\"介绍\",\"link\":\"/src/introduce/index.md\",\"noIcon\":false},{\"text\":\"教程\",\"link\":\"/src/guide/quick.md\"},{\"text\":\"🔥插件市场\",\"link\":\"https://cool-js.com/plugin/list.html\"},{\"text\":\"交流合作\",\"link\":\"/src/about/index.md\"},{\"text\":\"v7.1.0\",\"items\":[{\"text\":\"更新日志\",\"link\":\"/src/todo/update.md\"},{\"text\":\"版本计划\",\"link\":\"/src/todo/plan.md\"}]},{\"text\":\"更多\",\"items\":[{\"text\":\"Cool Admin(Nodejs版)\",\"link\":\"https://cool-js.com\"},{\"text\":\"Uni(基于uni-app跨端移动端开发)\",\"link\":\"https://cool-js.com/uni/introduce.html\"}]}],\"sidebar\":[{\"text\":\"介绍\",\"items\":[{\"text\":\"简介\",\"link\":\"/src/introduce/index.md\"},{\"text\":\"演示\",\"link\":\"/src/introduce/show.md\"},{\"text\":\"源码\",\"link\":\"/src/introduce/src.md\"}]},{\"text\":\"教程\",\"items\":[{\"text\":\"快速开始\",\"link\":\"/src/guide/quick.md\"},{\"text\":\"目录结构\",\"link\":\"/src/guide/dir.md\"},{\"text\":\"Ai编码\",\"link\":\"/src/guide/ai.md\"},{\"text\":\"Ai流程编排\",\"link\":\"/src/guide/flow.md\"},{\"text\":\"扩展插件\",\"link\":\"/src/guide/plugin.md\"},{\"text\":\"开发方式\",\"link\":\"/src/guide/dev.md\"},{\"text\":\"核心\",\"items\":[{\"text\":\"控制器(Controller)\",\"link\":\"/src/guide/controller.md\"},{\"text\":\"服务(Service)\",\"link\":\"/src/guide/service.md\"},{\"text\":\"数据库(Db)\",\"link\":\"/src/guide/db.md\"},{\"text\":\"缓存(Cache)\",\"link\":\"/src/guide/cache.md\"},{\"text\":\"文件上传\",\"link\":\"/src/guide/upload.md\"},{\"text\":\"统一异常\",\"link\":\"/src/guide/exception.md\"},{\"text\":\"权限校验\",\"link\":\"/src/guide/security.md\"},{\"text\":\"数据初始化\",\"link\":\"/src/guide/initData.md\"},{\"text\":\"swagger 文档\",\"link\":\"/src/guide/swagger.md\"}]}]},{\"text\":\"计划&更新\",\"items\":[{\"text\":\"更新\",\"link\":\"/src/todo/update.md\"},{\"text\":\"计划\",\"link\":\"/src/todo/plan.md\"}]},{\"text\":\"常见问题\",\"link\":\"/src/question/common.md\"},{\"text\":\"交流合作\",\"link\":\"/src/about/index.md\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/cool-team-official/cool-admin-java\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+7
-7
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BZ5u8Vj7.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 "介绍""></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 "地址""></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),c=[l];function n(s,i,_,d,h,p){return t(),e("div",null,c)}const u=a(r,[["render",n]]);export{f as __pageData,u as default};
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.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 "介绍""></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 "地址""></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),c=[l];function n(s,i,_,d,h,p){return t(),e("div",null,c)}const u=a(r,[["render",n]]);export{f as __pageData,u as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BZ5u8Vj7.js";const f=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),r={name:"README.md"},l=o("",4),c=[l];function n(s,i,_,d,h,p){return t(),e("div",null,c)}const u=a(r,[["render",n]]);export{f as __pageData,u as default};
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const f=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1720848653000}'),r={name:"README.md"},l=o("",4),c=[l];function n(s,i,_,d,h,p){return t(),e("div",null,c)}const u=a(r,[["render",n]]);export{f as __pageData,u as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{U as o,ab as p,ac as u,ad as l,ae as c,af as f,ag as d,ah as m,ai as h,aj as g,ak as A,d as P,u as v,y,x as w,al as C,am as R,an as b,ao as E}from"./chunks/framework.BZ5u8Vj7.js";import{R as S}from"./chunks/theme.BlfWphLu.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,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}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp};
|
||||
import{U as o,ae as p,af as u,ag as l,ah as c,ai as f,aj as d,ak as m,al as h,am as g,an as A,d as P,u as v,y,x as w,ao as C,ap as R,aq as b,ar as E}from"./chunks/framework.DkvLLw5I.js";import{R as S}from"./chunks/theme.C9P7FTri.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,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}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
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
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as r,a5 as o,a6 as i,a7 as s}from"./chunks/framework.BZ5u8Vj7.js";const 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 "交流合作""></a></h1><p>如果我们的项目对你有用,欢迎加入我们大家庭一起讨论,共创一些美好的事情。</p><h2 id="微信" tabindex="-1">微信 <a class="header-anchor" href="#微信" aria-label="Permalink to "微信""></a></h2><p>扫一扫加入微信开发交流群</p><p><img src="'+o+'" alt=""></p><h2 id="抖音" tabindex="-1">抖音 <a class="header-anchor" href="#抖音" aria-label="Permalink to "抖音""></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 "B 站""></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 "公众号""></a></h2><p>COOL 的一些最新资讯、技术分享、框架更新、插件分享等</p><p><img src="'+s+'" alt=""></p>',13),l=[c];function d(_,h,p,m,b,u){return t(),e("div",null,l)}const q=a(n,[["render",d]]);export{x as __pageData,q as default};
|
||||
import{_ as a,c as e,o as t,a4 as r,a5 as o,a6 as i,a7 as s}from"./chunks/framework.DkvLLw5I.js";const 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 "交流合作""></a></h1><p>如果我们的项目对你有用,欢迎加入我们大家庭一起讨论,共创一些美好的事情。</p><h2 id="微信" tabindex="-1">微信 <a class="header-anchor" href="#微信" aria-label="Permalink to "微信""></a></h2><p>扫一扫加入微信开发交流群</p><p><img src="'+o+'" alt=""></p><h2 id="抖音" tabindex="-1">抖音 <a class="header-anchor" href="#抖音" aria-label="Permalink to "抖音""></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 "B 站""></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 "公众号""></a></h2><p>COOL 的一些最新资讯、技术分享、框架更新、插件分享等</p><p><img src="'+s+'" alt=""></p>',13),l=[c];function d(_,h,p,m,b,u){return t(),e("div",null,l)}const q=a(n,[["render",d]]);export{x as __pageData,q as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as r,a5 as o,a6 as i,a7 as s}from"./chunks/framework.BZ5u8Vj7.js";const 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),l=[c];function d(_,h,p,m,b,u){return t(),e("div",null,l)}const q=a(n,[["render",d]]);export{x as __pageData,q as default};
|
||||
import{_ as a,c as e,o as t,a4 as r,a5 as o,a6 as i,a7 as s}from"./chunks/framework.DkvLLw5I.js";const 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),l=[c];function d(_,h,p,m,b,u){return t(),e("div",null,l)}const q=a(n,[["render",d]]);export{x as __pageData,q as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,c as t,o as i,j as e,a as s,a8 as r}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),o={name:"src/guide/ai.md"},c=e("h1",{id:"ai-编码",tabindex:"-1"},[s("Ai 编码 "),e("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"")],-1),n=e("p",null,"通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成",-1),d=e("p",null,[e("img",{src:r,alt:"","data-zoomable":""})],-1),l=e("p",null,[e("a",{href:"https://www.bilibili.com/video/BV1Hm421g7Br/?",target:"_blank",rel:"noreferrer"},"B 站视频教程")],-1),_=[c,n,d,l];function p(h,m,f,u,g,b){return i(),t("div",null,_)}const k=a(o,[["render",p]]);export{x as __pageData,k as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as s,j as a,a as o,a8 as i}from"./chunks/framework.BZ5u8Vj7.js";const $=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),r={name:"src/guide/ai.md"},c=a("h1",{id:"ai-编码",tabindex:"-1"},[o("Ai 编码 "),a("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"")],-1),n=a("p",null,"coming soon!!!",-1),d=a("p",null,[a("img",{src:i,alt:"","data-zoomable":""})],-1),_=[c,n,d];function l(p,m,h,u,f,g){return s(),t("div",null,_)}const b=e(r,[["render",l]]);export{$ as __pageData,b as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as e,c as t,o as s,j as a,a as o,a8 as i}from"./chunks/framework.BZ5u8Vj7.js";const $=JSON.parse('{"title":"Ai 编码","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/ai.md","filePath":"src/guide/ai.md","lastUpdated":1720593505000}'),r={name:"src/guide/ai.md"},c=a("h1",{id:"ai-编码",tabindex:"-1"},[o("Ai 编码 "),a("a",{class:"header-anchor",href:"#ai-编码","aria-label":'Permalink to "Ai 编码"'},"")],-1),n=a("p",null,"coming soon!!!",-1),d=a("p",null,[a("img",{src:i,alt:"","data-zoomable":""})],-1),_=[c,n,d];function l(p,m,h,u,f,g){return s(),t("div",null,_)}const b=e(r,[["render",l]]);export{$ as __pageData,b as default};
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n(`<h1 id="缓存" tabindex="-1">缓存 <a class="header-anchor" href="#缓存" aria-label="Permalink to "缓存""></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 s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n(`<h1 id="缓存" tabindex="-1">缓存 <a class="header-anchor" href="#缓存" aria-label="Permalink to "缓存""></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>
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n("",10),p=[l];function t(e,k,E,r,d,c){return a(),i("div",null,p)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const y=JSON.parse('{"title":"缓存","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/cache.md","filePath":"src/guide/cache.md","lastUpdated":1720593505000}'),h={name:"src/guide/cache.md"},l=n("",10),p=[l];function t(e,k,E,r,d,c){return a(),i("div",null,p)}const o=s(h,[["render",t]]);export{y as __pageData,o as default};
|
||||
+8
-8
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n(`<h1 id="控制器" tabindex="-1">控制器 <a class="header-anchor" href="#控制器" aria-label="Permalink to "控制器""></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 "示例""></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;"> "测试CURD"</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;"> "测试CURD"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n(`<h1 id="控制器" tabindex="-1">控制器 <a class="header-anchor" href="#控制器" aria-label="Permalink to "控制器""></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 "示例""></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;"> "测试CURD"</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;"> "测试CURD"</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;"> "/cool"</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;">"add"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"delete"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"update"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"page"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"info"</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;"><</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;">> {</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>
|
||||
@@ -14,17 +14,17 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">fieldEq</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"status"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><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:#6F42C1;--shiki-dark:#B392F0;">keyWordLikeFields</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"phone"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 需要模糊查询的字段,对应请求参数中的 keyWord</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">select</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"phone"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"age"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><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:#6F42C1;--shiki-dark:#B392F0;">queryWrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Wrappers.</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DemoEntity</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">query</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">eq</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, requestParams.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getStr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)))); </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 其他查询方式 具体看 https://baomidou.com/文档</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> .</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">queryWrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(QueryWrapper.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">create</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">())); </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 其他查询方式 具体看 https://mybatis-flex.com/zh/base/querywrapper.html文档</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> setListOption</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">createOp</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()); </span><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><h2 id="请求参数" tabindex="-1">请求参数 <a class="header-anchor" href="#请求参数" aria-label="Permalink to "请求参数""></a></h2><p>为了方便获取参数,框架封装了一个请求属性,将 URL、表单、body</p><p>等参数封装在了一个JSONObject requestParams,开发者可以从中方便的获取各种参数;</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;"> "测试CURD"</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;"> "测试CURD"</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><h2 id="请求参数" tabindex="-1">请求参数 <a class="header-anchor" href="#请求参数" aria-label="Permalink to "请求参数""></a></h2><p>为了方便获取参数,框架封装了一个请求属性,将 URL、表单、body</p><p>等参数封装在了一个 JSONObject requestParams,开发者可以从中方便的获取各种参数;</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;"> "测试CURD"</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;"> "测试CURD"</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;"> "/cool"</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;">"add"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"delete"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"update"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"page"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"info"</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;"><</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;">> {</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>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">PostMapping</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/test"</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:#24292E;--shiki-dark:#E1E4E8;"> R </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">test</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 </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">requestparams</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, String </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">user</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestparams.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getStr</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"user"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
|
||||
@@ -44,21 +44,21 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 重写逻辑</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><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;">page</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestParams, option);</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>同样也可以对service进行重写</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;">Service</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>同样也可以对 service 进行重写</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;">Service</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;"> DemoServiceImpl</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseServiceImpl</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoMapper</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;">> </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">implements</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DemoService</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;">Override</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Object </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">page</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;">, Page<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoEntity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">page</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, QueryWrapper<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">DemoEntity</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">queryWrapper</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:#D73A49;--shiki-dark:#F97583;"> return</span><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;">page</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestParams, page, queryWrapper);</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>和传统的controller对比一下是简化了不少,接下来我们看看实现的原理</p><h1 id="原理" tabindex="-1">原理 <a class="header-anchor" href="#原理" aria-label="Permalink to "原理""></a></h1><h2 id="接口路由规则" tabindex="-1">接口路由规则 <a class="header-anchor" href="#接口路由规则" aria-label="Permalink to "接口路由规则""></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 style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>和传统的 controller 对比一下是简化了不少,接下来我们看看实现的原理</p><h1 id="原理" tabindex="-1">原理 <a class="header-anchor" href="#原理" aria-label="Permalink to "原理""></a></h1><h2 id="接口路由规则" tabindex="-1">接口路由规则 <a class="header-anchor" href="#接口路由规则" aria-label="Permalink to "接口路由规则""></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>├── modules</span></span>
|
||||
<span class="line"><span>│ └── demo(模块名)</span></span>
|
||||
<span class="line"><span>│ │ └── controller(接口)</span></span>
|
||||
<span class="line"><span>│ │ │ └── admin(后端接口)</span></span>
|
||||
<span class="line"><span>│ │ │ │ └── AdminDemoInfoController.java</span></span>
|
||||
<span class="line"><span>│ │ │ └── app(前端接口)</span></span>
|
||||
<span class="line"><span>│ │ │ │ └── AppDemoInfoController.java</span></span></code></pre></div><ul><li>生成的路由前缀为: /admin/demo/info/xxx与/app/demo/info/xxx</li><li>规则为: admin(app)/模块名/AdminDemoInfoController转成小写替换掉admin(app)、模块名和controller</li></ul><h2 id="自定义路由注解" tabindex="-1">自定义路由注解 <a class="header-anchor" href="#自定义路由注解" aria-label="Permalink to "自定义路由注解""></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:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">interface</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> CoolRestController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"><span>│ │ │ │ └── AppDemoInfoController.java</span></span></code></pre></div><ul><li>生成的路由前缀为: /admin/demo/info/xxx 与/app/demo/info/xxx</li><li>规则为: admin(app)/模块名/AdminDemoInfoController 转成小写替换掉 admin(app)、模块名和 controller</li></ul><h2 id="自定义路由注解" tabindex="-1">自定义路由注解 <a class="header-anchor" href="#自定义路由注解" aria-label="Permalink to "自定义路由注解""></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:#D73A49;--shiki-dark:#F97583;">public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">interface</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> CoolRestController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">AliasFor</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">annotation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> RequestMapping.class)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">default</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ""</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||||
@@ -67,7 +67,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[] </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">value</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {};</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> String</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[] </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">api</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">default</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><h2 id="重写getmappingformethod" tabindex="-1">重写getMappingForMethod <a class="header-anchor" href="#重写getmappingformethod" aria-label="Permalink to "重写getMappingForMethod""></a></h2><p>我们不直接使用 spring自带的注解,而是对它做一层封装,controller上加了这个注解后</p><p>将由以下这个类实现自动配置模块路由,该类继承了 spring的RequestMappingHandlerMapping,并重写了getMappingForMethod方法</p><p>根据一定规则生成path,返回给spring做解析。</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;"> AutoPrefixUrlMapping</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RequestMappingHandlerMapping</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><h2 id="重写-getmappingformethod" tabindex="-1">重写 getMappingForMethod <a class="header-anchor" href="#重写-getmappingformethod" aria-label="Permalink to "重写 getMappingForMethod""></a></h2><p>我们不直接使用 spring 自带的注解,而是对它做一层封装,controller 上加了这个注解后</p><p>将由以下这个类实现自动配置模块路由,该类继承了 spring 的 RequestMappingHandlerMapping,并重写了 getMappingForMethod 方法</p><p>根据一定规则生成 path,返回给 spring 做解析。</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;"> AutoPrefixUrlMapping</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RequestMappingHandlerMapping</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"></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:#24292E;--shiki-dark:#E1E4E8;"> RequestMappingInfo </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getMappingForMethod</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(Method </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">method</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Class<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">handlerType</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n("",29),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"控制器","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/controller.md","filePath":"src/guide/controller.md","lastUpdated":1720593505000}'),h={name:"src/guide/controller.md"},t=n("",29),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const o=s(h,[["render",l]]);export{F as __pageData,o as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
import{_ as t,c as d,o as r,a4 as e}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"数据库","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/db.md","filePath":"src/guide/db.md","lastUpdated":null}'),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};
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const g=JSON.parse('{"title":"代码生成","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/generatorCode.md","filePath":"src/guide/generatorCode.md","lastUpdated":1720593505000}'),e={name:"src/guide/generatorCode.md"},t=n(`<h1 id="代码生成" tabindex="-1">代码生成 <a class="header-anchor" href="#代码生成" aria-label="Permalink to "代码生成""></a></h1><p>系统根据框架特性封装了一个简单的代码生成器</p><p>请先参考快速开始,把entity对象创建出来,在通过自动生成代码创建对应的 controller、service、mapper</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 s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":null}'),t={name:"src/guide/dev.md"},h=n('<h1 id="开发方式" tabindex="-1">开发方式 <a class="header-anchor" href="#开发方式" aria-label="Permalink to "开发方式""></a></h1><p>Cool Admin 推荐两种快速开发方式,可以大大节省开发时间,降低开发成本,提高开发效率。</p><h2 id="ai-全自动" tabindex="-1">Ai 全自动 <a class="header-anchor" href="#ai-全自动" aria-label="Permalink to "Ai 全自动""></a></h2><p>零代码开发(非低代码),通过微调大模型学习框架特有写法,实现简单功能从 Api 接口到前端页面的一键生成</p><p><img src="'+e+`" 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 "半自动""></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,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const g
|
||||
<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>`,4),l=[t];function h(p,k,E,d,r,o){return a(),i("div",null,l)}const y=s(e,[["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><ul><li>自动生成前端页面,通过管理后台菜单管理的快速创建即可生成</li></ul><p>Ui 组件会根据字段智能选择</p><p><img src="`+l+'" alt=""></p>',15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const u=s(t,[["render",k]]);export{F as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n,a8 as e,a9 as l}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"开发方式","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dev.md","filePath":"src/guide/dev.md","lastUpdated":null}'),t={name:"src/guide/dev.md"},h=n("",15),p=[h];function k(d,r,E,o,c,g){return a(),i("div",null,p)}const u=s(t,[["render",k]]);export{F as __pageData,u as default};
|
||||
@@ -0,0 +1,25 @@
|
||||
import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":null}'),e={name:"src/guide/dir.md"},l=p(`<h1 id="目录结构" tabindex="-1">目录结构 <a class="header-anchor" href="#目录结构" aria-label="Permalink to "目录结构""></a></h1><p>项目按照模块化的方式组织,每个模块都有其特有的功能,清晰明了便于管理。</p><h2 id="结构" tabindex="-1">结构 <a class="header-anchor" href="#结构" aria-label="Permalink to "结构""></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>
|
||||
<span class="line"><span>│ ├─ core 核心包</span></span>
|
||||
<span class="line"><span>│ │ ├─ annotation</span></span>
|
||||
<span class="line"><span>│ │ └─ ...</span></span>
|
||||
<span class="line"><span>│ ├─ modules 模块包</span></span>
|
||||
<span class="line"><span>│ │ ├─ base 基础模块(系统用户、菜单、资源、角色)</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ controller</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ entity</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ mapper</span></span>
|
||||
<span class="line"><span>│ │ │ └─ service</span></span>
|
||||
<span class="line"><span>│ │ ├─ dict 字段模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ plugin 插件模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ recycle 数据回收站模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ space 文件管理模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ task 定时任务模块</span></span>
|
||||
<span class="line"><span>│ │ └─ user 用户管理模块(c端用户)</span></span>
|
||||
<span class="line"><span>│ └─ CoolApplication</span></span>
|
||||
<span class="line"><span>└─ resources 资源文件</span></span>
|
||||
<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),c=[l];function i(t,o,r,d,u,_){return n(),a("div",null,c)}const b=s(e,[["render",i]]);export{h as __pageData,b as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as s,c as a,o as n,a4 as p}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"目录结构","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/dir.md","filePath":"src/guide/dir.md","lastUpdated":null}'),e={name:"src/guide/dir.md"},l=p("",5),c=[l];function i(t,o,r,d,u,_){return n(),a("div",null,c)}const b=s(e,[["render",i]]);export{h as __pageData,b as default};
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),h={name:"src/guide/exception.md"},k=n(`<h1 id="统一异常处理" tabindex="-1">统一异常处理 <a class="header-anchor" href="#统一异常处理" aria-label="Permalink to "统一异常处理""></a></h1><p>提供了简化的业务异常抛出工具</p><ul><li>CoolPreconditions.check(check != null, "用户名已存在");</li></ul><h2 id="异常统一捕获" tabindex="-1">异常统一捕获 <a class="header-anchor" href="#异常统一捕获" aria-label="Permalink to "异常统一捕获""></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 s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),h={name:"src/guide/exception.md"},k=n(`<h1 id="统一异常处理" tabindex="-1">统一异常处理 <a class="header-anchor" href="#统一异常处理" aria-label="Permalink to "统一异常处理""></a></h1><p>提供了简化的业务异常抛出工具</p><ul><li>CoolPreconditions.check(check != null, "用户名已存在");</li></ul><h2 id="异常统一捕获" tabindex="-1">异常统一捕获 <a class="header-anchor" href="#异常统一捕获" aria-label="Permalink to "异常统一捕获""></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>
|
||||
@@ -44,7 +44,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> BaseSysUserEntity check </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> getOne</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Wrappers.</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">BaseSysUserEntity</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">lambdaQuery</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">eq</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(BaseSysUserEntity</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">::</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">getUsername, entity.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getUsername</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()));</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (check </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> throw</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CoolException</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"用户名已存在"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">); </span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> throw</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CoolException</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"用户名已存在"</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;"> 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>
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),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};
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const F=JSON.parse('{"title":"统一异常处理","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/exception.md","filePath":"src/guide/exception.md","lastUpdated":1720593505000}'),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};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=o('<h1 id="ai-流程编排" tabindex="-1">Ai 流程编排 <a class="header-anchor" href="#ai-流程编排" aria-label="Permalink to "Ai 流程编排""></a></h1><p>coming soon!!!</p><p><a href="https://cool-js.com/plugin/detail.html?id=105" target="_blank" rel="noreferrer">Nodejs 版本</a></p><p><a href="https://www.bilibili.com/video/BV1Dw4m1Y7m6/" target="_blank" rel="noreferrer">视频演示</a></p><p>开发 Ai 应用必备!!!</p><p>随着 Ai 的火热,很多应用希望接入 Ai 的能力,但是每次都是用代码手搓,容易把我们累死,而是也非常不灵活。</p><p>于是我们面向开发者和软件开发公司,做了一个 Ai 流程编排功能,结合知识库,通过拖动配置,很容易就能完成一个 Ai 的核心流程。</p><p>因此如果你需要开发 Ai 相关应用,这个可能会给你带来巨大的帮助。</p><p><img src="'+i+'" alt="流程编排" data-zoomable=""></p><div class="warning custom-block"><p class="custom-block-title">注意</p><p>Ai 流程编排+知识库届时会上架到插件市场</p></div>',10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,c as a,o as t,a4 as o,aa as i}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=o("",10),p=[s];function c(l,_,n,d,m,f){return t(),a("div",null,p)}const A=e(r,[["render",c]]);export{u as __pageData,A as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as t,a4 as i,a9 as o}from"./chunks/framework.BZ5u8Vj7.js";const A=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=i('<h1 id="ai-流程编排" tabindex="-1">Ai 流程编排 <a class="header-anchor" href="#ai-流程编排" aria-label="Permalink to "Ai 流程编排""></a></h1><p>coming soon!!!</p><p><a href="https://www.bilibili.com/video/BV1i1421r7ri/" target="_blank" rel="noreferrer">nodejs 版本视频演示</a></p><p>开发 Ai 应用必备!!!</p><p>随着 Ai 的火热,很多应用希望接入 Ai 的能力,但是每次都是用代码手搓,容易把我们累死,而是也非常不灵活。</p><p>于是我们面向开发者和软件开发公司,做了一个 Ai 流程编排功能,结合知识库,通过拖动配置,很容易就能完成一个 Ai 的核心流程。</p><p>因此如果你需要开发 Ai 相关应用,这个可能会给你带来巨大的帮助。</p><p><img src="'+o+'" alt="流程编排" data-zoomable=""></p><div class="warning custom-block"><p class="custom-block-title">注意</p><p>Ai 流程编排+知识库需要单独购买,预售 999 元</p></div>',9),c=[s];function p(_,l,n,d,m,f){return t(),e("div",null,c)}const u=a(r,[["render",p]]);export{A as __pageData,u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o as t,a4 as i,a9 as o}from"./chunks/framework.BZ5u8Vj7.js";const A=JSON.parse('{"title":"Ai 流程编排","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/flow.md","filePath":"src/guide/flow.md","lastUpdated":1720847903000}'),r={name:"src/guide/flow.md"},s=i("",9),c=[s];function p(_,l,n,d,m,f){return t(),e("div",null,c)}const u=a(r,[["render",p]]);export{A as __pageData,u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const g=JSON.parse('{"title":"代码生成","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/generatorCode.md","filePath":"src/guide/generatorCode.md","lastUpdated":1720593505000}'),e={name:"src/guide/generatorCode.md"},t=n("",4),l=[t];function h(p,k,E,d,r,o){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{g as __pageData,y as default};
|
||||
+13
-13
@@ -1,17 +1,17 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n(`<h1 id="数据初始化" tabindex="-1">数据初始化 <a class="header-anchor" href="#数据初始化" aria-label="Permalink to "数据初始化""></a></h1><p>有些功能模块上线时,需要初始化一些数据</p><p>可以在resources下的 cool/data/db目录创建 demo.json文件</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 s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n(`<h1 id="数据初始化" tabindex="-1">数据初始化 <a class="header-anchor" href="#数据初始化" aria-label="Permalink to "数据初始化""></a></h1><p>有些功能模块上线时,需要初始化一些数据</p><p>可以在 resources 下的 cool/data/db 目录创建 demo.json 文件</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;"> "demo"</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;"> "keyName"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"rich"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"富文本参数"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remark"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</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>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keyName"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"JSON参数"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remark"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</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>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keyName"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"rich"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"富文本参数"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remark"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</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>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keyName"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"JSON参数"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "remark"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</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>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>创建 demo.json文件后,在项目启动的时候会去加载该文件,并实现值的插入</p><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;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>创建 demo.json 文件后,在项目启动的时候会去加载该文件,并实现值的插入</p><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;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/**</span></span>
|
||||
@@ -30,4 +30,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.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;">"数据初始化完成!"</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,r,d,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),t=[l];function h(k,e,E,r,d,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n("",10),t=[l];function h(k,e,E,r,d,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"数据初始化","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/initData.md","filePath":"src/guide/initData.md","lastUpdated":1720593505000}'),p={name:"src/guide/initData.md"},l=n("",10),t=[l];function h(k,e,E,r,d,o){return a(),i("div",null,t)}const y=s(p,[["render",h]]);export{g as __pageData,y as default};
|
||||
+14
-48
@@ -1,38 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720593505000}'),l={name:"src/guide/plugin.md"},p=n(`<h1 id="扩展插件" tabindex="-1">扩展插件 <a class="header-anchor" href="#扩展插件" aria-label="Permalink to "扩展插件""></a></h1><p>为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。</p><p>而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。 或者通过官网<a href="https://cool-js.com/plugin/list.html" target="_blank" rel="noreferrer">下载插件</a>。</p><h2 id="使用插件" tabindex="-1">使用插件 <a class="header-anchor" href="#使用插件" aria-label="Permalink to "使用插件""></a></h2><h3 id="_1、安装" tabindex="-1">1、安装 <a class="header-anchor" href="#_1、安装" aria-label="Permalink to "1、安装""></a></h3><p>首先下载插件包,然后在系统中安装插件包。插件包可以通过官网<a href="https://cool-js.com/plugin/list.html" target="_blank" rel="noreferrer">下载插件</a>。</p><p>打开后台管理系统,点击左侧菜单扩展管理->插件管理,点击+按钮,选择插件包进行安装。</p><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.plugin.service.CoolPluginService;</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.ConvertUtil;</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>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> java.io.File;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> lombok.RequiredArgsConstructor;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.stereotype.Controller;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.web.bind.annotation.PostMapping;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.web.bind.annotation.RequestMapping;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.web.bind.annotation.RequestParam;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.web.bind.annotation.ResponseBody;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> org.springframework.web.multipart.MultipartFile;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Controller</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;"> CommonController</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> final</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CoolPluginService coolPluginService;</span></span>
|
||||
<span class="line"></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>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">PostMapping</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/testPlugin/reload"</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;">ResponseBody</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> public</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">reload</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;"> File file </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;">(</span></span>
|
||||
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "/Users/mac/work/cool_new/cool-admin-java-plugin/target/my_cool_plugin.cool"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MultipartFile multipartFile </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ConvertUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">convertToMultipartFile</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(file);</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> coolPluginService.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">install</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(multipartFile, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "reload Success"</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><h3 id="_2、调用" tabindex="-1">2、调用 <a class="header-anchor" href="#_2、调用" aria-label="Permalink to "2、调用""></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 s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720874463000}'),p={name:"src/guide/plugin.md"},t=n('<h1 id="扩展插件" tabindex="-1">扩展插件 <a class="header-anchor" href="#扩展插件" aria-label="Permalink to "扩展插件""></a></h1><p>为了丰富系统功能,我们提供了插件系统,可以通过插件的方式来扩展系统功能。</p><p>而不用一味地堆功能,导致系统臃肿。你可以自己开发插件,也可以使用别人开发的插件。</p><p><a href="https://cool-js.com/plugin/list.html" target="_blank" rel="noreferrer">点击前往插件市场</a></p><h2 id="使用插件" tabindex="-1">使用插件 <a class="header-anchor" href="#使用插件" aria-label="Permalink to "使用插件""></a></h2><h3 id="_1、安装" tabindex="-1">1、安装 <a class="header-anchor" href="#_1、安装" aria-label="Permalink to "1、安装""></a></h3><p>首先下载插件包,然后在系统中安装插件包。插件包可以通过官网<a href="https://cool-js.com/plugin/list.html" 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 "2、调用""></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>
|
||||
@@ -135,18 +101,18 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> InputStream inputStream </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> parentClassLoader.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getResourceAsStream</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"banner.txt"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(StrUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(IoUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">readBytes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(inputStream), </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"UTF-8"</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><p>其中我们可以在插件包里通过 invokeMain 方法去调用主应用的一些对象方法</p><p>比如 coolCache 缓存对象, 通过反射实现</p><p>在加载jar包时会想该插件注入ApplicationContext,使得可以在插件中获取主应用中的bean</p><h3 id="_3、配置" tabindex="-1">3、配置 <a class="header-anchor" href="#_3、配置" aria-label="Permalink to "3、配置""></a></h3><p>有时候开发时的配置和生产环境的配置是不一样的,我们可以通过配置文件来实现。</p><p>例如原本的配置文件是这样的</p><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;"> "appId"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"xxxxx"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "appSecret"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"xxxxx"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "filePath"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"banner.txt"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>其中 banner.txt 为主应用resources资源目录下的文件,路径可以自己指定,范围在resources下</p><h2 id="开发插件" tabindex="-1">开发插件 <a class="header-anchor" href="#开发插件" aria-label="Permalink to "开发插件""></a></h2><h3 id="_1、脚手架" tabindex="-1">1、脚手架 <a class="header-anchor" href="#_1、脚手架" aria-label="Permalink to "1、脚手架""></a></h3><p>为了方便开发插件和统一插件开发规范,我们提供了插件脚手架,可以快速开发我们的插件。</p><h3 id="_2、目录结构" tabindex="-1">2、目录结构 <a class="header-anchor" href="#_2、目录结构" aria-label="Permalink to "2、目录结构""></a></h3><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 style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>其中我们可以在插件包里通过 invokeMain 方法去调用主应用的一些对象方法</p><p>比如 coolCache 缓存对象, 通过反射实现</p><p>在加载 jar 包时会想该插件注入 ApplicationContext,使得可以在插件中获取主应用中的 bean</p><h3 id="_3、配置" tabindex="-1">3、配置 <a class="header-anchor" href="#_3、配置" aria-label="Permalink to "3、配置""></a></h3><p>有时候开发时的配置和生产环境的配置是不一样的,我们可以通过配置文件来实现。</p><p>例如原本的配置文件是这样的</p><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;"> "appId"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"xxxxx"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "appSecret"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"xxxxx"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "filePath"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"banner.txt"</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>其中 banner.txt 为主应用 resources 资源目录下的文件,路径可以自己指定,范围在 resources 下</p><h2 id="开发插件" tabindex="-1">开发插件 <a class="header-anchor" href="#开发插件" aria-label="Permalink to "开发插件""></a></h2><h3 id="_1、脚手架" tabindex="-1">1、脚手架 <a class="header-anchor" href="#_1、脚手架" aria-label="Permalink to "1、脚手架""></a></h3><p>为了方便开发插件和统一插件开发规范,我们提供了插件脚手架,可以快速开发我们的插件。</p><p>脚手架源码仓库:</p><p><a href="https://github.com/cool-team-official/cool-admin-java-plugin" target="_blank" rel="noreferrer">https://github.com/cool-team-official/cool-admin-java-plugin</a></p><p>或</p><p><a href="https://gitee.com/cool-team-official/cool-admin-java-plugin" target="_blank" rel="noreferrer">https://gitee.com/cool-team-official/cool-admin-java-plugin</a></p><h3 id="_2、目录结构" tabindex="-1">2、目录结构 <a class="header-anchor" href="#_2、目录结构" aria-label="Permalink to "2、目录结构""></a></h3><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>
|
||||
<span class="line"><span>│ ├─core 核心包 </span></span>
|
||||
<span class="line"><span>│ │ ├─ annotation </span></span>
|
||||
<span class="line"><span>│ ├─core 核心包</span></span>
|
||||
<span class="line"><span>│ │ ├─ annotation</span></span>
|
||||
<span class="line"><span>│ │ └─ ...</span></span>
|
||||
<span class="line"><span>│ └─ plugin </span></span>
|
||||
<span class="line"><span>│ └─ plugin</span></span>
|
||||
<span class="line"><span>│ └─ MyCoolPlugin 插件包,插件类放在这个包下,在打包的时候选择要打包的插件,加上@CoolPlugin注解</span></span>
|
||||
<span class="line"><span>├─ resources</span></span>
|
||||
<span class="line"><span>│ └─ plugin.json 插件信息配置文件</span></span>
|
||||
@@ -199,7 +165,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Object cache </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> invokeMain</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"coolCache"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"get"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"verify:img:4fd03504-47ac-4b57-b8e4-3c64059230d0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">format</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"hello,%s 我是插件"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, chineseChar);</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>类必须要有 @CoolPlugin 注解,一个插件jar有且只能有一个类被 @CoolPlugin 注解</li><li>类必须继承 BaseCoolPlugin, 并实现 invokePlugin 插件方法 满足以上条件,在插件导入时才能被识别到。<br> 在提供的插件脚手架中已经应用了常用的依赖如hutool等<br> 在开发过程中如果需要引入第三方类库,可使用maven引入依赖,如我们这边示例使用到了中文转拼音</li></ul><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;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">dependency</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><ul><li>类必须要有 @CoolPlugin 注解,一个插件 jar 有且只能有一个类被 @CoolPlugin 注解</li><li>类必须继承 BaseCoolPlugin, 并实现 invokePlugin 插件方法 满足以上条件,在插件导入时才能被识别到。<br> 在提供的插件脚手架中已经应用了常用的依赖如 hutool 等<br> 在开发过程中如果需要引入第三方类库,可使用 maven 引入依赖,如我们这边示例使用到了中文转拼音</li></ul><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;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">dependency</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:#22863A;--shiki-dark:#85E89D;">groupId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>cn.hutool</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">groupId</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:#22863A;--shiki-dark:#85E89D;">artifactId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>hutool-all</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">artifactId</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>5.8.26</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
||||
@@ -211,7 +177,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> <</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">groupId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>com.belerweb</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">groupId</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:#22863A;--shiki-dark:#85E89D;">artifactId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>pinyin4j</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">artifactId</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:#22863A;--shiki-dark:#85E89D;">version</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>2.5.0</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">version</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:#22863A;--shiki-dark:#85E89D;">dependency</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>在我们脚手架上你可以发现,我们还引入了其他包 springframework、hutool 等,这会使得打包结果很臃肿,这边使用到了 maven-shade-plugin maven插件可以在打包的时候将在我们 cool-admin-java 主应用项目已经有的依赖给排除掉,避免打包结果过大</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:#6A737D;--shiki-dark:#6A737D;"><!--***为了开发插件如果引入了主应用已经有的maven依赖可以在下面的 maven-shade-plugin 中排除掉不打入jar***--></span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">dependency</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>在我们脚手架上你可以发现,我们还引入了其他包 springframework、hutool 等,这会使得打包结果很臃肿,这边使用到了 maven-shade-plugin maven 插件可以在打包的时候将在我们 cool-admin-java 主应用项目已经有的依赖给排除掉,避免打包结果过大</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:#6A737D;--shiki-dark:#6A737D;"><!--***为了开发插件如果引入了主应用已经有的maven依赖可以在下面的 maven-shade-plugin 中排除掉不打入jar***--></span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">build</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:#22863A;--shiki-dark:#85E89D;">plugins</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:#22863A;--shiki-dark:#85E89D;">plugin</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
||||
@@ -265,7 +231,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y
|
||||
<span class="line"><span>[INFO] Excluding org.slf4j:slf4j-api:jar:2.0.13 from the shaded jar.</span></span>
|
||||
<span class="line"><span>[INFO] Excluding org.projectlombok:lombok:jar:1.18.32 from the shaded jar.</span></span>
|
||||
<span class="line"><span>[INFO] Excluding cn.hutool:hutool-core:jar:5.8.26 from the shaded jar.</span></span>
|
||||
<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 "打包""></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;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">properties</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span>
|
||||
<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 "打包""></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;"><</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">properties</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:#22863A;--shiki-dark:#85E89D;">cool.plugin.name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">>my_cool_plugin</</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">cool.plugin.name</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:#22863A;--shiki-dark:#85E89D;">properties</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>最终打出的包为: my_cool_plugin.cool</p><h2 id="安装插件" tabindex="-1">安装插件 <a class="header-anchor" href="#安装插件" aria-label="Permalink to "安装插件""></a></h2><p>在后台插件管理页面,安装插件将打包好的.cool文件上传。</p><h2 id="实现原理" tabindex="-1">实现原理 <a class="header-anchor" href="#实现原理" aria-label="Permalink to "实现原理""></a></h2><ul><li>动态加载 Jar 包</li></ul><blockquote><p>实现动态加载的技术方案<br> 在 SpringBoot 中实现动态加载 Jar 包: URLClassLoader 是 Java 标准库中提供的一个类加载器,它可以加载指定的 URL 资源,包括本地文件系统、远程服务器和 JAR 文件等。<br> 通过 URLClassLoader,我们可以在运行时动态地加载外部的 Jar 包或类。</p></blockquote><ul><li>优势:</li></ul><blockquote><p>1、灵活性高:可以动态指定 Jar 包的位置和版本。<br> 2、可控性强:可以通过代码控制加载、卸载和替换 Jar 包。</p></blockquote><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;">"jar:file:"</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;"> "!/"</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>`,63),t=[p];function h(k,e,E,r,g,d){return a(),i("div",null,t)}const c=s(l,[["render",h]]);export{y as __pageData,c as default};
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">properties</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">></span></span></code></pre></div><p>最终打出的包为: my_cool_plugin.cool</p><h2 id="安装插件" tabindex="-1">安装插件 <a class="header-anchor" href="#安装插件" aria-label="Permalink to "安装插件""></a></h2><p>在后台插件管理页面,安装插件将打包好的.cool 文件上传。</p><h2 id="实现原理" tabindex="-1">实现原理 <a class="header-anchor" href="#实现原理" aria-label="Permalink to "实现原理""></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;">"jar:file:"</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;"> "!/"</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,d,g,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n,ab as l}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720874463000}'),p={name:"src/guide/plugin.md"},t=n("",64),h=[t];function k(e,E,r,d,g,o){return a(),i("div",null,h)}const u=s(p,[["render",k]]);export{c as __pageData,u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const y=JSON.parse('{"title":"扩展插件","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/plugin.md","filePath":"src/guide/plugin.md","lastUpdated":1720593505000}'),l={name:"src/guide/plugin.md"},p=n("",63),t=[p];function h(k,e,E,r,g,d){return a(),i("div",null,t)}const c=s(l,[["render",h]]);export{y as __pageData,c as default};
|
||||
@@ -0,0 +1,13 @@
|
||||
import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),t={name:"src/guide/quick.md"},p=e(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to "快速开始""></a></h1><p>开始使用 Cool-Admin!!!</p><h2 id="环境准备" tabindex="-1">环境准备 <a class="header-anchor" href="#环境准备" aria-label="Permalink to "环境准备""></a></h2><ul><li>Java Jdk >= 17 (注意:选择 GraalVM)</li><li>Mysql >= 5.7 (推荐 8.0)</li><li>Maven >= 3.6 (推荐 3.9)</li></ul><h2 id="运行系统" tabindex="-1">运行系统 <a class="header-anchor" href="#运行系统" aria-label="Permalink to "运行系统""></a></h2><h3 id="_1、拉取源码" tabindex="-1">1、拉取源码 <a class="header-anchor" href="#_1、拉取源码" aria-label="Permalink to "1、拉取源码""></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 "2、配置数据库""></a></h3><p>后端修改数据库配置,配置文件位于<code>src/resources/application-local.yml</code></p><p>以 Mysql 为例,其他数据库适配中...</p><p>Mysql(<code>>=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&characterEncoding=UTF-8&serverTimezone=GMT%2b8</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> username</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> password</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">123456</span></span>
|
||||
<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 "3、启动后端服务""></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="`+n+`" alt=""></p><h3 id="_4、启动前端服务" tabindex="-1">4、启动前端服务 <a class="header-anchor" href="#_4、启动前端服务" aria-label="Permalink to "4、启动前端服务""></a></h3><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="`+l+'" alt=""></p>',23),h=[p];function r(o,c,d,k,g,u){return i(),s("div",null,h)}const _=a(t,[["render",r]]);export{E as __pageData,_ as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,c as s,o as i,a4 as e,ac as n,ad as l}from"./chunks/framework.DkvLLw5I.js";const E=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),t={name:"src/guide/quick.md"},p=e("",23),h=[p];function r(o,c,d,k,g,u){return i(),s("div",null,h)}const _=a(t,[["render",r]]);export{E as __pageData,_ as default};
|
||||
@@ -1,80 +0,0 @@
|
||||
import{_ as e,D as t,c as h,j as a,a as s,I as p,w as l,a4 as i,o as k}from"./chunks/framework.BZ5u8Vj7.js";const v=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),o={name:"src/guide/quick.md"},r=i('<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to "快速开始""></a></h1><h2 id="前置准备" tabindex="-1">前置准备 <a class="header-anchor" href="#前置准备" aria-label="Permalink to "前置准备""></a></h2><ul><li>Java Jdk >= 17 选择 GraalVM</li><li>Mysql >= 5.7</li><li>Maven >= 3.0</li></ul><h2 id="运行系统" tabindex="-1">运行系统 <a class="header-anchor" href="#运行系统" aria-label="Permalink to "运行系统""></a></h2>',4),c=a("li",null,[s("1、"),a("a",{href:"/src/introduce/src.html"},"拉取前后端代码到本地"),s("。")],-1),d=a("li",null,"2、选择你熟悉的开发工具,打开你的项目。",-1),E=a("li",null,[s("3、确保打开的项目有Maven依赖,如没有具体参考"),a("a",{href:"/src/question/commonQuestion.html#IDEA导入Maven项目右侧没有Maven"},"IDEA导入Maven项目右侧没有Maven"),s("。")],-1),g=i(`<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-05-25T00:11:36.475+08:00 INFO 8321 --- [cool-admin-java] [uartzScheduler]] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now, after delay of 2 seconds</span></span>
|
||||
<span class="line"><span>2024-05-25T00:11:36.475+08:00 INFO 8321 --- [cool-admin-java] [uartzScheduler]] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started.</span></span>
|
||||
<span class="line"><span>2024-05-25T00:11:36.717+08:00 INFO 8321 --- [cool-admin-java] [nio-8001-exec-1] o.springdoc.api.AbstractOpenApiResource : Init duration for springdoc-openapi is: 1044 ms</span></span>
|
||||
<span class="line"><span>2024-05-25T00:11:40.195+08:00 INFO 8321 --- [cool-admin-java] [pool-3-thread-1] com.cool.core.eps.CoolEps : 初始化eps</span></span></code></pre></div><ul><li>5、<a href="https://cool-js.com/admin/vue/introduce.html#%E4%BB%A3%E7%A0%81%E4%BB%93%E5%BA%93" target="_blank" rel="noreferrer">启动前端系统</a></li><li>6、访问<a href="http://127.0.0.1:9100" target="_blank" rel="noreferrer">http://127.0.0.1:9100</a> 默认账户密码</li></ul><blockquote><p>账户:admin<br> 密码:123456</p></blockquote><h2 id="项目包结构" tabindex="-1">项目包结构 <a class="header-anchor" href="#项目包结构" aria-label="Permalink to "项目包结构""></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>
|
||||
<span class="line"><span>│ ├─ core 核心包</span></span>
|
||||
<span class="line"><span>│ │ ├─ annotation</span></span>
|
||||
<span class="line"><span>│ │ └─ ...</span></span>
|
||||
<span class="line"><span>│ ├─ modules 模块包</span></span>
|
||||
<span class="line"><span>│ │ ├─ base 基础模块(系统用户、菜单、资源、角色)</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ controller</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ entity</span></span>
|
||||
<span class="line"><span>│ │ │ ├─ mapper</span></span>
|
||||
<span class="line"><span>│ │ │ └─ service</span></span>
|
||||
<span class="line"><span>│ │ ├─ dict 字段模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ plugin 插件模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ recycle 数据回收站模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ space 文件管理模块</span></span>
|
||||
<span class="line"><span>│ │ ├─ task 定时任务模块</span></span>
|
||||
<span class="line"><span>│ │ └─ user 用户管理模块(c端用户)</span></span>
|
||||
<span class="line"><span>│ └─ CoolApplication</span></span>
|
||||
<span class="line"><span>└─ resources 资源文件</span></span>
|
||||
<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><ul><li>core 为核心模块,包括一些核心的组件工具</li><li>modules 为业务模块,业务代码放在这边,在新增功能模块时,按上面的包结构新增即可 <blockquote><p>比如你有一个订单管理的模块,在 modules 新增一个 order 包,在 order 包下创建 controller、entity、mapper、service 等包</p></blockquote></li></ul><h2 id="表结构创建" tabindex="-1">表结构创建 <a class="header-anchor" href="#表结构创建" aria-label="Permalink to "表结构创建""></a></h2><p>无需手动创建表结构,启动项目时会自动生成表结构 在 modules 包下新建一个 demo 模块,把 DemoEntity 实体创建出来</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.modules.demo.entity;</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.base.BaseEntity;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.mybatisflex.annotation.Table;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.tangzc.mybatisflex.autotable.annotation.ColumnDefine;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> com.tangzc.autotable.annotation.Index;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> lombok.Getter;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> lombok.Setter;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Getter</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Setter</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Table</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;"> "demo"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "demo实体"</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;"> DemoEntity</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> BaseEntity</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;">> {</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ColumnDefine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "头像"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">notNull</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String headImg;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Index</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ColumnDefine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "名字"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">notNull</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String name;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ColumnDefine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "年龄"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">defaultValue</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "18"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Integer age;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ColumnDefine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "手机号"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">notNull</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String phone;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ColumnDefine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">comment</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "介绍"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">type</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "text"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String introduce;</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>无需手动添加数据库字段,只需修改实体对象就能自动添加表字段<br> 请参考 <a href="https://autotable.tangzc.com/" target="_blank" rel="noreferrer">AutoTable</a> 由该框架实现</p>`,10),u=i(`<h2 id="第一个-crud" tabindex="-1">第一个 CRUD <a class="header-anchor" href="#第一个-crud" aria-label="Permalink to "第一个 CRUD""></a></h2><p>实体创建完成后,通过 运行以下代码(在 test 包下)</p><p>将在 com.cool.modules 下生成 demo 包且自动生成对应的 controller、service、mapper 文件</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>package com.cool;</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span>import com.cool.core.code.CodeGenerator;</span></span>
|
||||
<span class="line"><span>import com.cool.core.code.CodeModel;</span></span>
|
||||
<span class="line"><span>import com.cool.core.code.CodeTypeEnum;</span></span>
|
||||
<span class="line"><span>import com.cool.modules.demo.entity.DemoEntity;</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span>public class CoolCodeGeneratorTest {</span></span>
|
||||
<span class="line"><span> public static void main(String[] args) {</span></span>
|
||||
<span class="line"><span> CodeGenerator codeGenerator = new CodeGenerator();</span></span>
|
||||
<span class="line"><span> codeGenerator.init();</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span> CodeModel codeModel = new CodeModel();</span></span>
|
||||
<span class="line"><span> codeModel.setType(CodeTypeEnum.ADMIN);</span></span>
|
||||
<span class="line"><span> codeModel.setName("测试CURD");</span></span>
|
||||
<span class="line"><span> codeModel.setModule("demo");</span></span>
|
||||
<span class="line"><span> codeModel.setEntity(DemoEntity.class);</span></span>
|
||||
<span class="line"><span></span></span>
|
||||
<span class="line"><span> codeGenerator.controller(codeModel);</span></span>
|
||||
<span class="line"><span> codeGenerator.mapper(codeModel);</span></span>
|
||||
<span class="line"><span> codeGenerator.service(codeModel);</span></span>
|
||||
<span class="line"><span> }</span></span>
|
||||
<span class="line"><span>}</span></span></code></pre></div><h2 id="配置数据库信息" tabindex="-1">配置数据库信息 <a class="header-anchor" href="#配置数据库信息" aria-label="Permalink to "配置数据库信息""></a></h2><p>/resources/application-local.yml(开发环境)</p><p>/resources/application-prod.yml(生成环境)</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:#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&characterEncoding=UTF-8&serverTimezone=GMT%2b8</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> username</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">root</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> password</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">123456</span></span></code></pre></div>`,8);function y(m,F,C,_,b,D){const n=t("font");return k(),h("div",null,[r,a("ul",null,[c,d,E,a("li",null,[s("4、打开项目运行 "),p(n,{color:"4364CF"},{default:l(()=>[s("com.cool.CoolApplication.java")]),_:1}),s(",出现如下日志表示启动成功。")])]),g,a("blockquote",null,[a("p",null,[s("注意: "),p(n,{color:"red"},{default:l(()=>[s("默认仅开发环境开启该功能,如无调整生产环境需手动创建表结构")]),_:1})])]),u])}const q=e(o,[["render",y]]);export{v as __pageData,q as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as e,D as t,c as h,j as a,a as s,I as p,w as l,a4 as i,o as k}from"./chunks/framework.BZ5u8Vj7.js";const v=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/quick.md","filePath":"src/guide/quick.md","lastUpdated":1720593505000}'),o={name:"src/guide/quick.md"},r=i("",4),c=a("li",null,[s("1、"),a("a",{href:"/src/introduce/src.html"},"拉取前后端代码到本地"),s("。")],-1),d=a("li",null,"2、选择你熟悉的开发工具,打开你的项目。",-1),E=a("li",null,[s("3、确保打开的项目有Maven依赖,如没有具体参考"),a("a",{href:"/src/question/commonQuestion.html#IDEA导入Maven项目右侧没有Maven"},"IDEA导入Maven项目右侧没有Maven"),s("。")],-1),g=i("",10),u=i("",8);function y(m,F,C,_,b,D){const n=t("font");return k(),h("div",null,[r,a("ul",null,[c,d,E,a("li",null,[s("4、打开项目运行 "),p(n,{color:"4364CF"},{default:l(()=>[s("com.cool.CoolApplication.java")]),_:1}),s(",出现如下日志表示启动成功。")])]),g,a("blockquote",null,[a("p",null,[s("注意: "),p(n,{color:"red"},{default:l(()=>[s("默认仅开发环境开启该功能,如无调整生产环境需手动创建表结构")]),_:1})])]),u])}const q=e(o,[["render",y]]);export{v as __pageData,q as default};
|
||||
+4
-6
@@ -1,12 +1,10 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n(`<h1 id="权限校验" tabindex="-1">权限校验 <a class="header-anchor" href="#权限校验" aria-label="Permalink to "权限校验""></a></h1><p>采用spring-security与 jwt 作为框架安全与权限校验。</p><h2 id="配置" tabindex="-1">配置 <a class="header-anchor" href="#配置" aria-label="Permalink to "配置""></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 s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n(`<h1 id="权限校验" tabindex="-1">权限校验 <a class="header-anchor" href="#权限校验" aria-label="Permalink to "权限校验""></a></h1><p>采用 spring-security 与 jwt 作为框架安全与权限校验。</p><h2 id="配置" tabindex="-1">配置 <a class="header-anchor" href="#配置" aria-label="Permalink to "配置""></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>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> expire</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1800</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 刷新token过期时间 单位:秒 7天</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> refreshExpire</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">604800</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 密钥</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> secret</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DSAKOJLFAADASKD</span></span></code></pre></div><h2 id="原理" tabindex="-1">原理 <a class="header-anchor" href="#原理" aria-label="Permalink to "原理""></a></h2><p>1、系统启动的时候,系统会查询并向<a href="https://spring.io/projects/spring-security" target="_blank" rel="noreferrer">spring-security</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;">Component</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> refreshExpire</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">604800</span></span></code></pre></div><h2 id="原理" tabindex="-1">原理 <a class="header-anchor" href="#原理" aria-label="Permalink to "原理""></a></h2><p>1、系统启动的时候,系统会查询并向<a href="https://spring.io/projects/spring-security" target="_blank" rel="noreferrer">spring-security</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;">Component</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;"> MySecurityMetadataSource</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> implements</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> FilterInvocationSecurityMetadataSource</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;"> BaseSysPermsService baseSysPermsService;</span></span>
|
||||
@@ -210,7 +208,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const c
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="当前用户" tabindex="-1">当前用户 <a class="header-anchor" href="#当前用户" aria-label="Permalink to "当前用户""></a></h2><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:#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;"> CoolSecurityUtil coolSecurityUtil;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String username </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> coolSecurityUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">username</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><ul><li>获得用户信息 请求过程中会解析 token,并将用户信息存在整个请求过程中的requestParams</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:#24292E;--shiki-dark:#E1E4E8;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">Resource</span></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> String username </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> coolSecurityUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">username</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span></code></pre></div><ul><li>获得用户信息 请求过程中会解析 token,并将用户信息存在整个请求过程中的 requestParams</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:#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;"> CoolSecurityUtil coolSecurityUtil;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> JSONObject userInfo </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> coolSecurityUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">userInfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestParams);</span></span></code></pre></div><p>userInfo</p><table tabindex="0"><thead><tr><th>字段</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td>roleIds</td><td>Long[]</td><td>角色数组</td></tr><tr><td>username</td><td>String</td><td>用户名</td></tr><tr><td>userId</td><td>Long</td><td>用户ID</td></tr><tr><td>passwordVersion</td><td>Integer</td><td>密码版本号</td></tr></tbody></table>`,20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> JSONObject userInfo </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> coolSecurityUtil.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">userInfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(requestParams);</span></span></code></pre></div><p>userInfo</p><table tabindex="0"><thead><tr><th>字段</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td>roleIds</td><td>Long[]</td><td>角色数组</td></tr><tr><td>username</td><td>String</td><td>用户名</td></tr><tr><td>userId</td><td>Long</td><td>用户 ID</td></tr><tr><td>passwordVersion</td><td>Integer</td><td>密码版本号</td></tr></tbody></table>`,20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n("",20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const c=JSON.parse('{"title":"权限校验","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/security.md","filePath":"src/guide/security.md","lastUpdated":1720593505000}'),h={name:"src/guide/security.md"},k=n("",20),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",t]]);export{c as __pageData,F as default};
|
||||
@@ -0,0 +1,20 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":null}'),e={name:"src/guide/service.md"},l=n(`<h1 id="服务" tabindex="-1">服务 <a class="header-anchor" href="#服务" aria-label="Permalink to "服务""></a></h1><p>处理业务逻辑的代码应该被封装在服务中。</p><h2 id="crud" tabindex="-1">Crud <a class="header-anchor" href="#crud" aria-label="Permalink to "Crud""></a></h2><p><code>BaseService</code>中集成了常用的 CRUD 操作,可以参考<code>BaseService</code>的实现。</p><h2 id="修改前后" tabindex="-1">修改前后 <a class="header-anchor" href="#修改前后" aria-label="Permalink to "修改前后""></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>
|
||||
<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;"> t</span><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;"> type</span><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:#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;"> modifyBefore</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(JSONObject requestParams, T t, ModifyEnum type) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><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>
|
||||
<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;"> t</span><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;"> type</span><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:#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};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const g=JSON.parse('{"title":"服务","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/service.md","filePath":"src/guide/service.md","lastUpdated":null}'),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 +0,0 @@
|
||||
import{_ as t,c as o,o as r,a4 as a}from"./chunks/framework.BZ5u8Vj7.js";const _=JSON.parse('{"title":"Spring Boot 3 介绍","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/springboot3.md","filePath":"src/guide/springboot3.md","lastUpdated":1720593505000}'),n={name:"src/guide/springboot3.md"},i=a('<h1 id="spring-boot-3-介绍" tabindex="-1">Spring Boot 3 介绍 <a class="header-anchor" href="#spring-boot-3-介绍" aria-label="Permalink to "Spring Boot 3 介绍""></a></h1><p>Spring Boot 3 是 <strong>Spring 框架</strong> 的一部分,旨在简化新 Spring 应用程序的创建和开发过程。Spring Boot 通过提供<strong>预先配置的设置</strong>,减少了开发者的配置工作,使得开发和部署 Spring 应用程序更加快捷和高效。以下是对 Spring Boot 3 的一些详细介绍:</p><h2 id="主要特点" tabindex="-1">主要特点 <a class="header-anchor" href="#主要特点" aria-label="Permalink to "主要特点""></a></h2><h3 id="简化的配置" tabindex="-1">简化的配置 <a class="header-anchor" href="#简化的配置" aria-label="Permalink to "简化的配置""></a></h3><ul><li>通过 <strong>自动配置(Auto-Configuration)</strong> 和 <strong>约定优于配置(Convention over Configuration)</strong> 原则,减少了繁琐的手动配置。</li><li>提供了大量的 <strong>starter 依赖</strong>,可以轻松集成常用的库和工具。</li></ul><h3 id="新特性和增强" tabindex="-1">新特性和增强 <a class="header-anchor" href="#新特性和增强" aria-label="Permalink to "新特性和增强""></a></h3><ul><li>支持 <strong>Java 17 和 Java 21</strong>(最新的 LTS 版本)。</li><li>采用 <strong>Jakarta EE 9 标准</strong>,这意味着 javax 包命名空间改为 jakarta 包命名空间。</li><li>提供对 <strong>GraalVM Native Image</strong> 的更好支持,允许将 Spring Boot 应用编译为本地可执行文件,提高启动速度和资源利用效率。</li></ul><h3 id="改进的性能" tabindex="-1">改进的性能 <a class="header-anchor" href="#改进的性能" aria-label="Permalink to "改进的性能""></a></h3><ul><li>更快的<strong>启动时间</strong>和更低的<strong>内存占用</strong>。</li><li>提供更多<strong>性能调优选项</strong>和<strong>监控工具</strong>。</li></ul><h3 id="现代化开发体验" tabindex="-1">现代化开发体验 <a class="header-anchor" href="#现代化开发体验" aria-label="Permalink to "现代化开发体验""></a></h3><ul><li>集成了 <strong>Spring Native</strong>,能够更好地支持<strong>云原生应用程序开发</strong>。</li><li>提供更丰富的<strong>开发工具集成</strong>和增强的<strong>开发者体验</strong>。</li></ul><h3 id="更强的安全性" tabindex="-1">更强的安全性 <a class="header-anchor" href="#更强的安全性" aria-label="Permalink to "更强的安全性""></a></h3><ul><li>更新的<strong>安全性默认配置</strong>和更严格的<strong>安全控制</strong>。</li><li>支持最新的<strong>安全协议</strong>和<strong>加密标准</strong>。</li></ul>',13),s=[i];function e(l,g,h,d,c,u){return r(),o("div",null,s)}const b=t(n,[["render",e]]);export{_ as __pageData,b as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as t,c as o,o as r,a4 as a}from"./chunks/framework.BZ5u8Vj7.js";const _=JSON.parse('{"title":"Spring Boot 3 介绍","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/springboot3.md","filePath":"src/guide/springboot3.md","lastUpdated":1720593505000}'),n={name:"src/guide/springboot3.md"},i=a("",13),s=[i];function e(l,g,h,d,c,u){return r(),o("div",null,s)}const b=t(n,[["render",e]]);export{_ as __pageData,b as default};
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.BZ5u8Vj7.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 "swagger 文档""></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;"> "测试CURD"</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;"> "测试CURD"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.DkvLLw5I.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 "swagger 文档""></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;"> "测试CURD"</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;"> "测试CURD"</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;"> "/cool"</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;">"add"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"delete"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"update"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"page"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"info"</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;"><</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;">> {</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>
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.BZ5u8Vj7.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};
|
||||
import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.DkvLLw5I.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};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n("",10),p=[h];function t(k,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",t]]);export{o as __pageData,F as default};
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n(`<h1 id="文件上传" tabindex="-1">文件上传 <a class="header-anchor" href="#文件上传" aria-label="Permalink to "文件上传""></a></h1><p>框架自带两种文件上传方式本地上传与云存储,与前端紧密结合,</p><p>前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)</p><ul><li>本地上传</li><li>阿里云oss (通过插件市场搜索OSS,下载安装插件实现<a href="https://cool-js.com/plugin/list.html" target="_blank" rel="noreferrer">下载插件</a>)</li></ul><h1 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to "使用""></a></h1><p>application.yml</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:#22863A;--shiki-dark:#85E89D;">cool</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n(`<h1 id="文件上传" tabindex="-1">文件上传 <a class="header-anchor" href="#文件上传" aria-label="Permalink to "文件上传""></a></h1><p>框架自带两种文件上传方式本地上传与云存储,与前端紧密结合,</p><p>前端会根据后端返回的上传模式进行本地上传或者云存储签名直传(不经过服务器,直接上传到对应的云存储)</p><ul><li>本地上传</li><li>云存储,如阿里云、腾讯云、七牛云等</li></ul><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>安装云存储插件,如 Oss,系统的文件上传就会自动替换成云存储上传的方式,云存储上传服务端值提供签名供前端直传到对应的云存储</p></div><h1 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to "使用""></a></h1><p>application.yml</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:#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;"> # 文件上传相关</span></span>
|
||||
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> file</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> #上传模式</span></span>
|
||||
@@ -28,4 +28,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.BZ5u8Vj7.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;">uploadMode</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</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;">(fileUploadStrategyFactory.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">getMode</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>`,10),p=[h];function t(k,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",t]]);export{o as __pageData,F as default};
|
||||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div>`,11),p=[h];function k(t,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",k]]);export{o as __pageData,F as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.DkvLLw5I.js";const o=JSON.parse('{"title":"文件上传","description":"","frontmatter":{},"headers":[],"relativePath":"src/guide/upload.md","filePath":"src/guide/upload.md","lastUpdated":1720593505000}'),l={name:"src/guide/upload.md"},h=n("",11),p=[h];function k(t,e,E,r,d,g){return a(),i("div",null,p)}const F=s(l,[["render",k]]);export{o as __pageData,F as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as l,c as a,o as e,a4 as t,aa as i,a9 as o}from"./chunks/framework.BZ5u8Vj7.js";const f=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t('<h1 id="简介" tabindex="-1">简介 <a class="header-anchor" href="#简介" aria-label="Permalink to "简介""></a></h1><p><img src="'+i+'" alt="" data-zoomable=""></p><h2 id="技术选型" tabindex="-1">技术选型 <a class="header-anchor" href="#技术选型" aria-label="Permalink to "技术选型""></a></h2><p>1、系统环境</p><ul><li>Java Jdk >= 17 选择 graalvm</li><li>Mysql >= 5.7</li><li>Maven >= 3.0</li></ul><p>2、主要框架</p><ul><li>Spring Boot 3.2.5</li><li>Spring Framework 6.1.6</li><li>Mybatis Flex 1.9.3(新版本替换: Mybatis Plus)</li><li>Auto Table 1.7.4</li><li>Spring Doc 2.5.0</li></ul><h2 id="为什么选择-cool-admin" tabindex="-1">为什么选择 Cool Admin? <a class="header-anchor" href="#为什么选择-cool-admin" aria-label="Permalink to "为什么选择 Cool Admin?""></a></h2><p>随着技术不断地发展,特别是最近 Ai 相关的技术发展,以往的框架已经越来越不能满足现代化的开发需求。</p><p>Cool Admin 做为后来者有后发优势,主要特点:</p><ul><li>Ai 编码,从页面到后端代码,部分功能实现零代码;</li><li>Ai 流程编排,专门为 Ai 开发设计的,Ai 开发几乎不用写代码,只需拖一拖即可;</li><li>扩展插件,可插拔,如支付、短信这类功能的插件可以通过后台动态安装卸载,灵活又不臃肿;</li><li>代码简洁,不像一般代码生成器生成一堆冗余代码,Cool 只需极少编码即可实现大部分需求;</li><li>......</li></ul><p><img src="'+i+'" alt="" data-zoomable=""></p><p><img src="'+o+'" alt="" data-zoomable=""></p><h2 id="内置功能" tabindex="-1">内置功能 <a class="header-anchor" href="#内置功能" aria-label="Permalink to "内置功能""></a></h2><ul><li>用户管理:呈现公司组织部门树形结构,用户是系统操作者,该功能主要完成系统用户配置。</li><li>菜单管理:配置系统菜单,操作权限标识等。</li><li>角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。</li><li>参数管理:对系统动态配置常用参数。</li><li>字典管理:对系统中经常使用的一些较为固定的数据进行维护。</li><li>请求日志:接口的请求入参日志,便于问题排查。</li><li>操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。</li><li>定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。</li><li>文件管理:支持静态资源文件上传云端进行云管理。</li><li>数据回收站:数据有 30 天的保留,支持回滚操作。</li><li>前后端插件:支持动态安装、卸载插件,实现功能可插拔。(后端插件开发中...)</li></ul>',15),s=[n];function d(c,p,_,m,h,u){return e(),a("div",null,s)}const x=l(r,[["render",d]]);export{f as __pageData,x as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as l,c as a,o as e,a4 as t,aa as i,a9 as o}from"./chunks/framework.BZ5u8Vj7.js";const f=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t("",15),s=[n];function d(c,p,_,m,h,u){return e(),a("div",null,s)}const x=l(r,[["render",d]]);export{f as __pageData,x as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t('<h1 id="简介" tabindex="-1">简介 <a class="header-anchor" href="#简介" aria-label="Permalink to "简介""></a></h1><p><img src="'+a+'" alt="" data-zoomable=""></p><h2 id="技术选型" tabindex="-1">技术选型 <a class="header-anchor" href="#技术选型" aria-label="Permalink to "技术选型""></a></h2><p>按照简单、常用的技术进行选择,减少技术栈的复杂度。</p><h3 id="一、环境要求" tabindex="-1">一、环境要求 <a class="header-anchor" href="#一、环境要求" aria-label="Permalink to "一、环境要求""></a></h3><ul><li>Java Jdk >= 17 选择 graalvm</li><li>Mysql >= 5.7</li><li>Maven >= 3.6</li></ul><h3 id="二、后端框架" tabindex="-1">二、后端框架 <a class="header-anchor" href="#二、后端框架" aria-label="Permalink to "二、后端框架""></a></h3><ul><li>Spring Boot 3.x</li><li>Mybatis Flex</li><li>Auto Table</li><li>Hutool</li></ul><h3 id="三、前端框架" tabindex="-1">三、前端框架 <a class="header-anchor" href="#三、前端框架" aria-label="Permalink to "三、前端框架""></a></h3><ul><li>Vue3</li><li>Typescript</li><li>Element-UI</li></ul><h2 id="为什么选择-cool-admin" tabindex="-1">为什么选择 Cool Admin? <a class="header-anchor" href="#为什么选择-cool-admin" aria-label="Permalink to "为什么选择 Cool Admin?""></a></h2><p>随着技术不断地发展,特别是最近 Ai 相关的技术发展,以往的框架已经越来越不能满足现代化的开发需求。</p><p>Cool Admin 做为后来者有后发优势,主要特点:</p><ul><li>Ai 编码,从页面到后端代码,部分功能实现零代码;</li><li>Ai 流程编排,专门为 Ai 开发设计的,Ai 开发几乎不用写代码,只需拖一拖即可;</li><li>扩展插件,可插拔,如支付、短信这类功能的插件可以通过后台动态安装卸载,灵活又不臃肿;</li><li>代码简洁,不像一般代码生成器生成一堆冗余代码,Cool 只需极少编码即可实现大部分需求;</li><li>......</li></ul><p><img src="'+a+'" alt="" data-zoomable=""></p><p><img src="'+o+'" alt="" data-zoomable=""></p><h2 id="内置功能" tabindex="-1">内置功能 <a class="header-anchor" href="#内置功能" aria-label="Permalink to "内置功能""></a></h2><ul><li>用户管理:呈现公司组织部门树形结构,用户是系统操作者,该功能主要完成系统用户配置。</li><li>菜单管理:配置系统菜单,操作权限标识等。</li><li>角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。</li><li>参数管理:对系统动态配置常用参数。</li><li>字典管理:对系统中经常使用的一些较为固定的数据进行维护。</li><li>请求日志:接口的请求入参日志,便于问题排查。</li><li>操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。</li><li>定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。</li><li>文件管理:支持静态资源文件上传云端进行云管理。</li><li>数据回收站:数据有 n 天的保留,支持回滚操作。</li><li>前后端插件:支持动态安装、卸载插件,实现功能可插拔。</li></ul>',18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as i,c as l,o as e,a4 as t,ad as a,aa as o}from"./chunks/framework.DkvLLw5I.js";const x=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/index.md","filePath":"src/introduce/index.md","lastUpdated":1720847903000}'),r={name:"src/introduce/index.md"},n=t("",18),d=[n];function s(c,h,u,m,_,p){return e(),l("div",null,d)}const f=i(r,[["render",s]]);export{x as __pageData,f as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a,a4 as o,aa as r}from"./chunks/framework.BZ5u8Vj7.js";const u=JSON.parse('{"title":"演示","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/show.md","filePath":"src/introduce/show.md","lastUpdated":1720593505000}'),s={name:"src/introduce/show.md"},c=o('<h1 id="演示" tabindex="-1">演示 <a class="header-anchor" href="#演示" aria-label="Permalink to "演示""></a></h1><p><img src="'+r+'" alt=""></p><p>功能几乎跟<a href="https://cool-js.com" target="_blank" rel="noreferrer">nodejs 版本一致</a></p><p><a href="https://show.cool-admin.com" target="_blank" rel="noreferrer">https://show.cool-admin.com</a></p><p>账户:admin 密码:123456</p>',5),n=[c];function _(d,i,p,h,l,m){return a(),t("div",null,n)}const w=e(s,[["render",_]]);export{u as __pageData,w as default};
|
||||
import{_ as e,c as t,o as a,a4 as o,ad as r}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"演示","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/show.md","filePath":"src/introduce/show.md","lastUpdated":1720593505000}'),s={name:"src/introduce/show.md"},c=o('<h1 id="演示" tabindex="-1">演示 <a class="header-anchor" href="#演示" aria-label="Permalink to "演示""></a></h1><p><img src="'+r+'" alt=""></p><p>功能几乎跟<a href="https://cool-js.com" target="_blank" rel="noreferrer">nodejs 版本一致</a></p><p><a href="https://show.cool-admin.com" target="_blank" rel="noreferrer">https://show.cool-admin.com</a></p><p>账户:admin 密码:123456</p>',5),n=[c];function _(d,i,p,h,l,m){return a(),t("div",null,n)}const w=e(s,[["render",_]]);export{u as __pageData,w as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as e,c as t,o as a,a4 as o,aa as r}from"./chunks/framework.BZ5u8Vj7.js";const u=JSON.parse('{"title":"演示","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/show.md","filePath":"src/introduce/show.md","lastUpdated":1720593505000}'),s={name:"src/introduce/show.md"},c=o("",5),n=[c];function _(d,i,p,h,l,m){return a(),t("div",null,n)}const w=e(s,[["render",_]]);export{u as __pageData,w as default};
|
||||
import{_ as e,c as t,o as a,a4 as o,ad as r}from"./chunks/framework.DkvLLw5I.js";const u=JSON.parse('{"title":"演示","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/show.md","filePath":"src/introduce/show.md","lastUpdated":1720593505000}'),s={name:"src/introduce/show.md"},c=o("",5),n=[c];function _(d,i,p,h,l,m){return a(),t("div",null,n)}const w=e(s,[["render",_]]);export{u as __pageData,w as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=o('<h1 id="源码" tabindex="-1">源码 <a class="header-anchor" href="#源码" aria-label="Permalink to "源码""></a></h1><p>项目是开源免费、可商用、无需授权的,为了使项目能够持续,不要吝啬你们免费的<code>Star</code>哦!!!你的<code>Star</code>是我们最大的动力!!!</p><h2 id="后端-点个-star" tabindex="-1">后端(点个 Star) <a class="header-anchor" href="#后端-点个-star" aria-label="Permalink to "后端(点个 Star)""></a></h2><p><a href="https://github.com/cool-team-official/cool-admin-java" target="_blank" rel="noreferrer">https://github.com/cool-team-official/cool-admin-java</a></p><p>或</p><p><a href="https://gitee.com/cool-team-official/cool-admin-java" target="_blank" rel="noreferrer">https://gitee.com/cool-team-official/cool-admin-java</a></p><h2 id="前端-点个-star" tabindex="-1">前端(点个 Star) <a class="header-anchor" href="#前端-点个-star" aria-label="Permalink to "前端(点个 Star)""></a></h2><p><a href="https://github.com/cool-team-official/cool-admin-vue" target="_blank" rel="noreferrer">https://github.com/cool-team-official/cool-admin-vue</a></p><p>或</p><p><a href="https://gitee.com/cool-team-official/cool-admin-vue" target="_blank" rel="noreferrer">https://gitee.com/cool-team-official/cool-admin-vue</a></p>',10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=o("",10),i=[c];function l(s,n,d,h,m,f){return t(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o,a4 as t}from"./chunks/framework.BZ5u8Vj7.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=t('<h1 id="源码" tabindex="-1">源码 <a class="header-anchor" href="#源码" aria-label="Permalink to "源码""></a></h1><p>项目是开源免费、可商用、无需授权的,为了使项目能够持续,不要吝啬你们免费的<code>Start</code>哦!!!</p><h2 id="后端" tabindex="-1">后端 <a class="header-anchor" href="#后端" aria-label="Permalink to "后端""></a></h2><p><a href="https://github.com/cool-team-official/cool-admin-java" target="_blank" rel="noreferrer">https://github.com/cool-team-official/cool-admin-java</a></p><p>或</p><p><a href="https://gitee.com/cool-team-official/cool-admin-java" target="_blank" rel="noreferrer">https://gitee.com/cool-team-official/cool-admin-java</a></p><h2 id="前端" tabindex="-1">前端 <a class="header-anchor" href="#前端" aria-label="Permalink to "前端""></a></h2><p><a href="https://github.com/cool-team-official/cool-admin-vue" target="_blank" rel="noreferrer">https://github.com/cool-team-official/cool-admin-vue</a></p><p>或</p><p><a href="https://gitee.com/cool-team-official/cool-admin-vue" target="_blank" rel="noreferrer">https://gitee.com/cool-team-official/cool-admin-vue</a></p>',10),i=[c];function l(n,s,d,h,m,f){return o(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as a,c as e,o,a4 as t}from"./chunks/framework.BZ5u8Vj7.js";const _=JSON.parse('{"title":"源码","description":"","frontmatter":{},"headers":[],"relativePath":"src/introduce/src.md","filePath":"src/introduce/src.md","lastUpdated":1720593505000}'),r={name:"src/introduce/src.md"},c=t("",10),i=[c];function l(n,s,d,h,m,f){return o(),e("div",null,i)}const u=a(r,[["render",l]]);export{_ as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":null}'),l={name:"src/question/common.md"},i=o('<h1 id="常见问题" tabindex="-1">常见问题 <a class="header-anchor" href="#常见问题" aria-label="Permalink to "常见问题""></a></h1><p>项目中常见的问题</p><h2 id="_1、找不到类似xxxtabledef文件" tabindex="-1">1、找不到类似<code>xxxTableDef</code>文件 <a class="header-anchor" href="#_1、找不到类似xxxtabledef文件" aria-label="Permalink to "1、找不到类似`xxxTableDef`文件""></a></h2><p>框架用到了<a href="https://mybatis-flex.com/zh/others/apt.html" target="_blank" rel="noreferrer">Mybatis Flex 的 APT 功能</a>,在项目编译的时候会自动生成这些文件。</p><p>你可以这样做:</p><ul><li>Build 你的项目;</li><li>执行 maven 的<code>mvn compile</code>命令;</li><li>配置完数据库直接启动;</li><li>【推荐】开启 idea 的<code>Build project automatically</code>自动编译功能(Settings -> Build, Execution, Deployment -> Compiler -> Build Project Automatically);</li></ul><p>这些方式都可以解决这个问题。</p>',7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{h as __pageData,x as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,c as t,o as a,a4 as o}from"./chunks/framework.DkvLLw5I.js";const h=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/common.md","filePath":"src/question/common.md","lastUpdated":null}'),l={name:"src/question/common.md"},i=o("",7),c=[i];function r(n,s,d,_,m,p){return a(),t("div",null,c)}const x=e(l,[["render",r]]);export{h as __pageData,x as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o as n,a4 as t}from"./chunks/framework.BZ5u8Vj7.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/commonQuestion.md","filePath":"src/question/commonQuestion.md","lastUpdated":1720593505000}'),o={name:"src/question/commonQuestion.md"},i=t('<h1 id="常见问题" tabindex="-1">常见问题 <a class="header-anchor" href="#常见问题" aria-label="Permalink to "常见问题""></a></h1><h2 id="idea导入maven项目右侧没有maven" tabindex="-1">IDEA导入Maven项目右侧没有Maven <a class="header-anchor" href="#idea导入maven项目右侧没有maven" aria-label="Permalink to "IDEA导入Maven项目右侧没有Maven""></a></h2><h3 id="当在-intellij-idea-中导入-maven-项目时-如果右侧没有显示-maven-面板-可能是因为以下几个原因" tabindex="-1">当在 IntelliJ IDEA 中导入 Maven 项目时,如果右侧没有显示 Maven 面板,可能是因为以下几个原因: <a class="header-anchor" href="#当在-intellij-idea-中导入-maven-项目时-如果右侧没有显示-maven-面板-可能是因为以下几个原因" aria-label="Permalink to "当在 IntelliJ IDEA 中导入 Maven 项目时,如果右侧没有显示 Maven 面板,可能是因为以下几个原因:""></a></h3><p>1、项目未正确识别为 Maven 项目:确保项目的根目录下有一个 pom.xml 文件,这是 Maven 项目的标志。如果找不到 pom.xml 文件,需要检查项目导入过程中是否有误,或者从正确的源重新获取项目。</p><p>2、Maven 面板未启用显示:可能是由于 IDEA 的设置导致 Maven 面板未显示。请按照以下步骤检查和更改设置:</p><blockquote><p>在 IDEA 中,选择 File > Settings(对于 macOS 用户是 IntelliJ IDEA > Preferences)。 在设置窗口中,导航到 Build, Execution, Deployment > Build Tools > Maven。 确保选中了显示 Maven 面板的选项。</p></blockquote><p>3、项目未正确加载 pom 文件:如果是因为读取项目出错,未正确加载 pom 文件造成的,可以尝试以下解决方案:</p><blockquote><p>关闭 IDEA,在项目目录中删除 .idea 文件夹,然后重新打开项目,重新加载。 直接在 pom 文件中右键选择 Add as Maven Project。</p></blockquote><p>4、视图设置问题:如果之前 Maven 面板是有的,突然之间没有了,可以尝试通过菜单 View > Tool Windows > Maven 来重新显示 Maven 面板。</p><p>通过上述步骤,大多数情况下可以解决 IntelliJ IDEA 中 Maven 面板不显示的问题。如果问题依旧存在,可能需要进一步检查项目的配置或考虑重新导入项目。</p>',10),l=[i];function s(c,r,m,d,p,v){return n(),a("div",null,l)}const h=e(o,[["render",s]]);export{u as __pageData,h as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as e,c as a,o as n,a4 as t}from"./chunks/framework.BZ5u8Vj7.js";const u=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"src/question/commonQuestion.md","filePath":"src/question/commonQuestion.md","lastUpdated":1720593505000}'),o={name:"src/question/commonQuestion.md"},i=t("",10),l=[i];function s(c,r,m,d,p,v){return n(),a("div",null,l)}const h=e(o,[["render",s]]);export{u as __pageData,h as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.BZ5u8Vj7.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default};
|
||||
import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.DkvLLw5I.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.BZ5u8Vj7.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default};
|
||||
import{_ as t,c as o,o as s,j as e,a}from"./chunks/framework.DkvLLw5I.js";const b=JSON.parse('{"title":"计划","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/plan.md","filePath":"src/todo/plan.md","lastUpdated":1720593505000}'),n={name:"src/todo/plan.md"},l=e("h1",{id:"计划",tabindex:"-1"},[a("计划 "),e("a",{class:"header-anchor",href:"#计划","aria-label":'Permalink to "计划"'},"")],-1),r=e("p",null,"以下是我们的一些计划,如果你有更好的建议,欢迎联系我们。",-1),c=e("h2",{id:"v7-1-1",tabindex:"-1"},[a("v7.1.1 "),e("a",{class:"header-anchor",href:"#v7-1-1","aria-label":'Permalink to "v7.1.1"'},"")],-1),d=e("ul",null,[e("li",null,"新增 Ai 自动编码功能,简单功能零代码实现;"),e("li",null,"新增后台扩展插件,如文件上传、支付、短信等功能可以通过安装插件的方式添加;")],-1),i=[l,r,c,d];function _(h,p,m,f,u,v){return s(),o("div",null,i)}const k=t(n,[["render",_]]);export{b as __pageData,k as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BZ5u8Vj7.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o('<h1 id="更新" tabindex="-1">更新 <a class="header-anchor" href="#更新" aria-label="Permalink to "更新""></a></h1><p>因为有你们的支持,cool-admin 会持续不断地更新,如果方便请点下 Star,这将会给我们带来更多的动力!!!</p><h2 id="v7-1-0-2024-06-27" tabindex="-1">v7.1.0(2024-06-27) <a class="header-anchor" href="#v7-1-0-2024-06-27" aria-label="Permalink to "v7.1.0(2024-06-27)""></a></h2><ul><li>升级到 Springboot3.x;</li><li>升级所有相关依赖到最新;</li><li>跟进<a href="https://cool-js.com" target="_blank" rel="noreferrer">Nodejs 版</a>相关功能;</li><li>优化若干问题;</li></ul>',4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default};
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o('<h1 id="更新" tabindex="-1">更新 <a class="header-anchor" href="#更新" aria-label="Permalink to "更新""></a></h1><p>因为有你们的支持,cool-admin 会持续不断地更新,如果方便请点下 Star,这将会给我们带来更多的动力!!!</p><h2 id="v7-1-0-2024-06-27" tabindex="-1">v7.1.0(2024-06-27) <a class="header-anchor" href="#v7-1-0-2024-06-27" aria-label="Permalink to "v7.1.0(2024-06-27)""></a></h2><ul><li>升级到 Springboot3.x;</li><li>升级所有相关依赖到最新;</li><li>跟进<a href="https://cool-js.com" target="_blank" rel="noreferrer">Nodejs 版</a>相关功能;</li><li>优化若干问题;</li></ul>',4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.BZ5u8Vj7.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o("",4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default};
|
||||
import{_ as a,c as e,o as t,a4 as o}from"./chunks/framework.DkvLLw5I.js";const m=JSON.parse('{"title":"更新","description":"","frontmatter":{},"headers":[],"relativePath":"src/todo/update.md","filePath":"src/todo/update.md","lastUpdated":1720593505000}'),r={name:"src/todo/update.md"},l=o("",4),s=[l];function i(d,c,n,_,p,h){return t(),e("div",null,s)}const f=a(r,[["render",i]]);export{m as __pageData,f as default};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Vendored
+1
-1
@@ -1 +1 @@
|
||||
{"index.md":"CAVf4Oqs","readme.md":"BXdrAVTM","src_about_index.md":"BcF27jYK","src_guide_ai.md":"Gsy5t_8S","src_guide_cache.md":"BOJv_Che","src_guide_controller.md":"r2nPGOST","src_guide_exception.md":"m-_TuVSi","src_guide_flow.md":"DPOXSEzV","src_guide_generatorcode.md":"vZguykgt","src_guide_initdata.md":"CSiXmFuQ","src_guide_plugin.md":"jVCi1KWQ","src_guide_quick.md":"Dd-HcOh7","src_guide_security.md":"BubSrMYS","src_guide_springboot3.md":"_tGrFUv8","src_guide_swagger.md":"BS_bARv2","src_guide_upload.md":"Bq5siQ0E","src_introduce_index.md":"CXfKVW0H","src_introduce_show.md":"DSZevIGP","src_introduce_src.md":"pd2vUss-","src_question_commonquestion.md":"CeHvXEMU","src_todo_plan.md":"bhlKWKsq","src_todo_update.md":"qtvh9HZG"}
|
||||
{"index.md":"Cgb96qqp","readme.md":"CH6W0xY-","src_about_index.md":"D5pLvKL8","src_guide_ai.md":"C2wKEBKg","src_guide_cache.md":"BhqP_wiC","src_guide_controller.md":"DFXsvLef","src_guide_db.md":"JecGjjcC","src_guide_dev.md":"Cgkglw3x","src_guide_dir.md":"z6VUJtso","src_guide_exception.md":"DTaAZohQ","src_guide_flow.md":"CDskEDnP","src_guide_initdata.md":"D5kMLxxc","src_guide_plugin.md":"D4um12uG","src_guide_quick.md":"DbcQSNam","src_guide_security.md":"DjyHN9T3","src_guide_service.md":"Coeaaupo","src_guide_swagger.md":"C8SICQIq","src_guide_upload.md":"DSE1ASmj","src_introduce_index.md":"CqGpQfmF","src_introduce_show.md":"y18FuumV","src_introduce_src.md":"ByQ4FCeZ","src_question_common.md":"BDnOx12Z","src_todo_plan.md":"BzDFnPcU","src_todo_update.md":"BLutrh4G"}
|
||||
|
||||
Vendored
+7
-7
File diff suppressed because one or more lines are too long
Vendored
+7
-7
File diff suppressed because one or more lines are too long
Vendored
+7
-7
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user