refactor: 重构并添加版权信息
- 在多个 Java 文件中添加了版权信息的代码块 - 更新了部分文件中的导入路径 - 重命名了一些工具类,如 FileUtil 改为 CsFileUtil - 完善流水线机制,新增重启流水线、停止流水线功能
This commit is contained in:
@@ -71,8 +71,10 @@ https://github.com/odboy-tianjun/cutejava
|
|||||||
> 组件所在路径:cutejava-front/src/views/components/business
|
> 组件所在路径:cutejava-front/src/views/components/business
|
||||||
|
|
||||||
- CuteDeptTree 部门树
|
- CuteDeptTree 部门树
|
||||||
|
- CuteProductLineSelect 产品线选择框
|
||||||
|
- CuteProductLineSelectPro 产品线级联选择框
|
||||||
- CuteUserSelect 用户多选框
|
- CuteUserSelect 用户多选框
|
||||||

|

|
||||||
- CuteFileUpload 上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件)
|
- CuteFileUpload 上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件)
|
||||||

|

|
||||||
- CuteFileDragUpload 支持拖拽上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件)
|
- CuteFileDragUpload 支持拖拽上传文件到OSS, 必须结合Minio使用(上传完成后必须销毁组件)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB |
@@ -8,6 +8,14 @@ export function startPipeline(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function stopPipeline(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/devops/pipelineInstance/stop',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function retryPipeline(data) {
|
export function retryPipeline(data) {
|
||||||
return request({
|
return request({
|
||||||
url: 'api/devops/pipelineInstance/retry',
|
url: 'api/devops/pipelineInstance/retry',
|
||||||
|
|||||||
@@ -6,3 +6,10 @@ export function queryDeptSelectDataSource() {
|
|||||||
method: 'post'
|
method: 'post'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function queryDeptSelectProDataSource() {
|
||||||
|
return request({
|
||||||
|
url: 'api/component/queryDeptSelectProDataSource',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
<template>
|
||||||
|
<el-cascader
|
||||||
|
v-model="value"
|
||||||
|
:disabled="disabled"
|
||||||
|
:options="deptOptions"
|
||||||
|
@change="handleChange"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import { queryDeptSelectProDataSource } from '@/api/system/component'
|
||||||
|
import CsMessage from '@/utils/elementui/CsMessage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CuteProductLineSelectPro',
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Array,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
deptOptions: [],
|
||||||
|
selectedValue: this.value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value(newVal) {
|
||||||
|
this.selectedValue = newVal
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchDeptData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 递归清理空的children属性
|
||||||
|
cleanEmptyChildren(data) {
|
||||||
|
return data.map(item => {
|
||||||
|
const newItem = { ...item }
|
||||||
|
if (newItem.children && newItem.children.length > 0) {
|
||||||
|
// 递归处理子节点
|
||||||
|
newItem.children = this.cleanEmptyChildren(newItem.children)
|
||||||
|
} else {
|
||||||
|
// 删除空的children属性
|
||||||
|
delete newItem.children
|
||||||
|
}
|
||||||
|
return newItem
|
||||||
|
})
|
||||||
|
},
|
||||||
|
fetchDeptData() {
|
||||||
|
queryDeptSelectProDataSource().then(data => {
|
||||||
|
this.deptOptions = this.cleanEmptyChildren(data)
|
||||||
|
console.error('deptOptions', this.deptOptions)
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('获取部门数据失败:', error)
|
||||||
|
CsMessage.Error('获取部门数据失败')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleChange(value) {
|
||||||
|
this.selectedValue = value
|
||||||
|
// 绑定change事件
|
||||||
|
this.$emit('change', value)
|
||||||
|
// 绑定form value
|
||||||
|
this.$emit('input', value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -73,40 +73,15 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<div style="clear: both" />
|
<div style="clear: both" />
|
||||||
</el-row>
|
</el-row>
|
||||||
<cute-preview-drawer ref="detailDrawer" :title="currentTemplateData.name">
|
|
||||||
<el-timeline>
|
|
||||||
<el-timeline-item timestamp="2018/4/12" placement="top">
|
|
||||||
<el-card>
|
|
||||||
<h4>更新 Github 模板</h4>
|
|
||||||
<p>王小虎 提交于 2018/4/12 20:46</p>
|
|
||||||
</el-card>
|
|
||||||
</el-timeline-item>
|
|
||||||
<el-timeline-item timestamp="2018/4/3" placement="top">
|
|
||||||
<el-card>
|
|
||||||
<h4>更新 Github 模板</h4>
|
|
||||||
<p>王小虎 提交于 2018/4/3 20:46</p>
|
|
||||||
</el-card>
|
|
||||||
</el-timeline-item>
|
|
||||||
<el-timeline-item timestamp="2018/4/2" placement="top">
|
|
||||||
<el-card>
|
|
||||||
<h4>更新 Github 模板</h4>
|
|
||||||
<p>王小虎 提交于 2018/4/2 20:46</p>
|
|
||||||
</el-card>
|
|
||||||
</el-timeline-item>
|
|
||||||
</el-timeline>
|
|
||||||
</cute-preview-drawer>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import CutePreviewDrawer from '@/views/components/dev/CutePreviewDrawer'
|
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
import CsMessage from '@/utils/elementui/CsMessage'
|
import CsMessage from '@/utils/elementui/CsMessage'
|
||||||
import { retryPipeline } from '@/api/devops/pipelineInstance'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CutePipelineNode',
|
name: 'CutePipelineNode',
|
||||||
components: { CutePreviewDrawer },
|
|
||||||
props: {
|
props: {
|
||||||
templateData: {
|
templateData: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -309,8 +284,7 @@ export default {
|
|||||||
CsMessage.Warning('当前流水线节点不支持查看明细')
|
CsMessage.Warning('当前流水线节点不支持查看明细')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log('templateData', this.templateData)
|
this.$emit('node-click', this.templateData)
|
||||||
this.$refs.detailDrawer.show()
|
|
||||||
},
|
},
|
||||||
onNodeRetryClick() {
|
onNodeRetryClick() {
|
||||||
const currentTemplateData = this.currentTemplateData || { retry: false }
|
const currentTemplateData = this.currentTemplateData || { retry: false }
|
||||||
@@ -322,12 +296,11 @@ export default {
|
|||||||
...this.currentInstanceData,
|
...this.currentInstanceData,
|
||||||
code: this.currentTemplateData.code
|
code: this.currentTemplateData.code
|
||||||
}
|
}
|
||||||
// console.error('data', data)
|
this.$emit('node-retry', data)
|
||||||
retryPipeline(data)
|
|
||||||
this.$emit('retry', data)
|
|
||||||
},
|
},
|
||||||
onNodeOperationClick(buttonInfo) {
|
onNodeOperationClick(buttonInfo) {
|
||||||
console.log('buttonInfo', buttonInfo)
|
const currentTemplateData = this.currentTemplateData || {}
|
||||||
|
this.$emit('node-opera', currentTemplateData, buttonInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
<el-form-item label="产品线" prop="productLine">
|
<el-form-item label="产品线" prop="productLine">
|
||||||
<cute-product-line-select v-model="form.productLine" @detail="onProductLineDetailChange" />
|
<cute-product-line-select v-model="form.productLine" @detail="onProductLineDetailChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="产品线Pro" prop="productLinePro">
|
||||||
|
<cute-product-line-select-pro v-model="form.productLine" @detail="onProductLineDetailProChange" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="onSubmit('form')">提 交</el-button>
|
<el-button type="primary" @click="onSubmit('form')">提 交</el-button>
|
||||||
<el-button type="danger" @click="onReset('form')">重 置</el-button>
|
<el-button type="danger" @click="onReset('form')">重 置</el-button>
|
||||||
@@ -40,6 +43,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<cute-product-line-select @change="onProductLineChange" @detail="onProductLineDetailChange" />
|
<cute-product-line-select @change="onProductLineChange" @detail="onProductLineDetailChange" />
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<el-card style="margin-top: 10px">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>产品线选择框Pro</span>
|
||||||
|
</div>
|
||||||
|
<cute-product-line-select-pro @change="onProductLineDetailProChange" />
|
||||||
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -48,16 +57,18 @@
|
|||||||
import CuteUserSelect from '@/views/components/business/CuteUserSelect.vue'
|
import CuteUserSelect from '@/views/components/business/CuteUserSelect.vue'
|
||||||
import CuteDeptTree from '@/views/components/business/CuteDeptTree.vue'
|
import CuteDeptTree from '@/views/components/business/CuteDeptTree.vue'
|
||||||
import CuteProductLineSelect from '@/views/components/business/CuteProductLineSelect.vue'
|
import CuteProductLineSelect from '@/views/components/business/CuteProductLineSelect.vue'
|
||||||
|
import CuteProductLineSelectPro from '@/views/components/business/CuteProductLineSelectPro.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CuteBusinessDemo',
|
name: 'CuteBusinessDemo',
|
||||||
components: { CuteProductLineSelect, CuteDeptTree, CuteUserSelect },
|
components: { CuteProductLineSelectPro, CuteProductLineSelect, CuteDeptTree, CuteUserSelect },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
user: null,
|
user: null,
|
||||||
dept: null,
|
dept: null,
|
||||||
productLine: null
|
productLine: null,
|
||||||
|
productLinePro: null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -90,6 +101,9 @@ export default {
|
|||||||
},
|
},
|
||||||
onProductLineDetailChange(data) {
|
onProductLineDetailChange(data) {
|
||||||
console.log('onProductLineDetailChange', data)
|
console.log('onProductLineDetailChange', data)
|
||||||
|
},
|
||||||
|
onProductLineDetailProChange(data) {
|
||||||
|
console.log('onProductLineDetailProChange', data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,17 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
:loading="dynamicStartButtonLoading"
|
:loading="dynamicStartButtonLoading"
|
||||||
:disabled="dynamicStartButtonLoading"
|
:disabled="dynamicStartButtonLoading"
|
||||||
@click="startPipelineTest"
|
@click="doStartPipeline"
|
||||||
>{{ dynamicStartupStatusMap[dynamicStartupStatus].label }}
|
>{{ dynamicStartupStatusMap[dynamicStartupStatus].label }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-prevent-re-click
|
||||||
|
:disabled="!dynamicRunning"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
type="danger"
|
||||||
|
@click="doStopPipeline"
|
||||||
|
>停止
|
||||||
|
</el-button>
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<div class="box-pipeline">
|
<div class="box-pipeline">
|
||||||
<div v-if="dynamicInstance.nodes && dynamicInstance.nodes.length > 0" class="box-pipeline-content">
|
<div v-if="dynamicInstance.nodes && dynamicInstance.nodes.length > 0" class="box-pipeline-content">
|
||||||
@@ -18,7 +26,9 @@
|
|||||||
:key="template.code"
|
:key="template.code"
|
||||||
:template-data.sync="dynamicInstance.nodes[index]"
|
:template-data.sync="dynamicInstance.nodes[index]"
|
||||||
:instance-data.sync="dynamicInstance"
|
:instance-data.sync="dynamicInstance"
|
||||||
@retry="onPipelineRetrySuccess"
|
@node-click="onPipelineNodeClick"
|
||||||
|
@node-retry="onPipelineNodeRetryClick"
|
||||||
|
@node-opera="onPipelineNodeOperationClick"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="box-pipeline-content">
|
<div v-else class="box-pipeline-content">
|
||||||
@@ -30,40 +40,28 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <el-divider>演示:成功</el-divider>-->
|
<cute-preview-drawer ref="detailDrawer" :title="currentNodeData.name">
|
||||||
<!-- <div class="box-pipeline">-->
|
<el-timeline>
|
||||||
<!-- <div v-if="dataList2 && dataList2.length > 0" class="box-pipeline-content">-->
|
<el-timeline-item timestamp="2018/4/12" placement="top">
|
||||||
<!-- <cute-pipeline-node-->
|
<el-card>
|
||||||
<!-- v-for="(template, index) in dataList2"-->
|
<h4>更新 Github 模板</h4>
|
||||||
<!-- :key="template.code"-->
|
<p>王小虎 提交于 2018/4/12 20:46</p>
|
||||||
<!-- :template-data.sync="dataList2[index]"-->
|
</el-card>
|
||||||
<!-- />-->
|
</el-timeline-item>
|
||||||
<!-- </div>-->
|
<el-timeline-item timestamp="2018/4/3" placement="top">
|
||||||
<!-- <div v-else class="box-pipeline-content">-->
|
<el-card>
|
||||||
<!-- <cute-pipeline-node-->
|
<h4>更新 Github 模板</h4>
|
||||||
<!-- v-for="(template, index) in defaultTemplate"-->
|
<p>王小虎 提交于 2018/4/3 20:46</p>
|
||||||
<!-- :key="template.code"-->
|
</el-card>
|
||||||
<!-- :template-data.sync="defaultTemplate[index]"-->
|
</el-timeline-item>
|
||||||
<!-- />-->
|
<el-timeline-item timestamp="2018/4/2" placement="top">
|
||||||
<!-- </div>-->
|
<el-card>
|
||||||
<!-- </div>-->
|
<h4>更新 Github 模板</h4>
|
||||||
<!-- <el-divider>演示:失败或重试</el-divider>-->
|
<p>王小虎 提交于 2018/4/2 20:46</p>
|
||||||
<!-- <div class="box-pipeline">-->
|
</el-card>
|
||||||
<!-- <div v-if="dataList3 && dataList3.length > 0" class="box-pipeline-content">-->
|
</el-timeline-item>
|
||||||
<!-- <cute-pipeline-node-->
|
</el-timeline>
|
||||||
<!-- v-for="(template, index) in dataList3"-->
|
</cute-preview-drawer>
|
||||||
<!-- :key="template.code"-->
|
|
||||||
<!-- :template-data.sync="dataList3[index]"-->
|
|
||||||
<!-- />-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div v-else class="box-pipeline-content">-->
|
|
||||||
<!-- <cute-pipeline-node-->
|
|
||||||
<!-- v-for="(template, index) in defaultTemplate"-->
|
|
||||||
<!-- :key="template.code"-->
|
|
||||||
<!-- :template-data.sync="defaultTemplate[index]"-->
|
|
||||||
<!-- />-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -71,391 +69,30 @@
|
|||||||
|
|
||||||
import CutePipelineNode from '@/views/components/dev/CutePipelineNode'
|
import CutePipelineNode from '@/views/components/dev/CutePipelineNode'
|
||||||
import { getPipelineTemplate } from '@/api/devops/pipelineTemplate'
|
import { getPipelineTemplate } from '@/api/devops/pipelineTemplate'
|
||||||
import { queryLastPipelineDetailWs, startPipeline } from '@/api/devops/pipelineInstance'
|
import {
|
||||||
|
queryLastPipelineDetailWs,
|
||||||
|
restartPipeline,
|
||||||
|
retryPipeline,
|
||||||
|
startPipeline,
|
||||||
|
stopPipeline
|
||||||
|
} from '@/api/devops/pipelineInstance'
|
||||||
import { CountArraysObjectByPropKey } from '@/utils/CsUtil'
|
import { CountArraysObjectByPropKey } from '@/utils/CsUtil'
|
||||||
import CsMessage from '@/utils/elementui/CsMessage'
|
import CsMessage from '@/utils/elementui/CsMessage'
|
||||||
import CsWsClient from '@/utils/CsWsClient'
|
import CsWsClient from '@/utils/CsWsClient'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
import CutePreviewDrawer from '@/views/components/dev/CutePreviewDrawer.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CutePipelineNodeDemo',
|
name: 'CutePipelineNodeDemo',
|
||||||
components: { CutePipelineNode },
|
components: { CutePreviewDrawer, CutePipelineNode },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// // 静态模板
|
testAppInfo: {
|
||||||
// defaultTemplate: [
|
appName: 'cuteops',
|
||||||
// {
|
pipelineTemplateEnv: 'daily',
|
||||||
// code: 'node_init',
|
iterationName: '流水线测试'
|
||||||
// type: 'service',
|
},
|
||||||
// name: '初始化'
|
// ============== 动态流水线
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_branch',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并代码',
|
|
||||||
// click: true,
|
|
||||||
// retry: true
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_build_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '构建',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-backend'
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_image_scan',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '镜像扫描',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-image-scan'
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_approve_deploy',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署审批',
|
|
||||||
// click: false,
|
|
||||||
// retry: true,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '同意',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '拒绝',
|
|
||||||
// code: 'refuse',
|
|
||||||
// parameters: {}
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_deploy_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署',
|
|
||||||
// click: true,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'link',
|
|
||||||
// title: '查看部署详情',
|
|
||||||
// code: 'success',
|
|
||||||
// parameters: {
|
|
||||||
// 'isBlank': true
|
|
||||||
// }
|
|
||||||
// }]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_confirm',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并确认',
|
|
||||||
// click: false,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '通过',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// }]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_master',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并回Master',
|
|
||||||
// click: false,
|
|
||||||
// retry: true
|
|
||||||
// }],
|
|
||||||
// // 成功
|
|
||||||
// dataList2: [
|
|
||||||
// {
|
|
||||||
// code: 'node_init',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '初始化',
|
|
||||||
// createTime: '2025-07-17 21:12:01',
|
|
||||||
// updateTime: '2025-07-17 21:13:01',
|
|
||||||
// startTime: '2025-07-17 21:13:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_branch',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并代码',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// createTime: '2025-07-17 21:13:01',
|
|
||||||
// updateTime: '2025-07-17 21:18:01',
|
|
||||||
// startTime: '2025-07-17 21:13:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_build_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '构建',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-backend'
|
|
||||||
// },
|
|
||||||
// createTime: '2025-07-17 21:18:01',
|
|
||||||
// updateTime: '2025-07-17 21:28:01',
|
|
||||||
// startTime: '2025-07-17 21:18:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_image_scan',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '镜像扫描',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-image-scan'
|
|
||||||
// },
|
|
||||||
// createTime: '2025-07-17 21:28:01',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: '2025-07-17 21:28:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_approve_deploy',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署审批',
|
|
||||||
// click: false,
|
|
||||||
// retry: true,
|
|
||||||
// buttons: [
|
|
||||||
// {
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '同意',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '拒绝',
|
|
||||||
// code: 'refuse',
|
|
||||||
// parameters: {}
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:30:21',
|
|
||||||
// startTime: '2025-07-17 21:28:21',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_deploy_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署',
|
|
||||||
// click: true,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'link',
|
|
||||||
// title: '查看部署详情',
|
|
||||||
// code: 'success',
|
|
||||||
// parameters: {
|
|
||||||
// 'isBlank': true
|
|
||||||
// }
|
|
||||||
// }],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:58:21',
|
|
||||||
// startTime: '2025-07-17 21:30:21',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_confirm',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并确认',
|
|
||||||
// click: false,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '通过',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// }],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 22:10:21',
|
|
||||||
// startTime: '2025-07-17 21:58:21',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_master',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并回Master',
|
|
||||||
// click: false,
|
|
||||||
// retry: true,
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 22:10:58',
|
|
||||||
// startTime: '2025-07-17 22:10:21',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// // 失败或重试
|
|
||||||
// dataList3: [
|
|
||||||
// {
|
|
||||||
// code: 'node_init',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '初始化',
|
|
||||||
// createTime: '2025-07-17 21:12:01',
|
|
||||||
// updateTime: '2025-07-17 21:13:01',
|
|
||||||
// startTime: '2025-07-17 21:13:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_branch',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并代码',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// createTime: '2025-07-17 21:13:01',
|
|
||||||
// updateTime: '2025-07-17 21:18:01',
|
|
||||||
// startTime: '2025-07-17 21:13:01',
|
|
||||||
// currentNodeMsg: '执行成功',
|
|
||||||
// currentNodeStatus: 'success',
|
|
||||||
// status: 'success'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_build_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '构建',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-backend'
|
|
||||||
// },
|
|
||||||
// createTime: '2025-07-17 21:18:01',
|
|
||||||
// updateTime: '2025-07-17 21:28:01',
|
|
||||||
// startTime: '2025-07-17 21:18:01',
|
|
||||||
// currentNodeMsg: '执行失败',
|
|
||||||
// currentNodeStatus: 'fail',
|
|
||||||
// status: 'fail'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_image_scan',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '镜像扫描',
|
|
||||||
// click: true,
|
|
||||||
// retry: true,
|
|
||||||
// detailType: 'gitlab',
|
|
||||||
// parameters: {
|
|
||||||
// pipeline: 'pipeline-image-scan'
|
|
||||||
// },
|
|
||||||
// createTime: '2025-07-17 21:28:01',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: null,
|
|
||||||
// currentNodeMsg: '待执行',
|
|
||||||
// currentNodeStatus: 'pending',
|
|
||||||
// status: 'pending'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_approve_deploy',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署审批',
|
|
||||||
// click: false,
|
|
||||||
// retry: true,
|
|
||||||
// buttons: [
|
|
||||||
// {
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '同意',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '拒绝',
|
|
||||||
// code: 'refuse',
|
|
||||||
// parameters: {}
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: null,
|
|
||||||
// currentNodeMsg: '待执行',
|
|
||||||
// currentNodeStatus: 'pending',
|
|
||||||
// status: 'pending'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_deploy_java',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '部署',
|
|
||||||
// click: true,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'link',
|
|
||||||
// title: '查看部署详情',
|
|
||||||
// code: 'success',
|
|
||||||
// parameters: {
|
|
||||||
// 'isBlank': true
|
|
||||||
// }
|
|
||||||
// }],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: null,
|
|
||||||
// currentNodeMsg: '待执行',
|
|
||||||
// currentNodeStatus: 'pending',
|
|
||||||
// status: 'pending'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_confirm',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并确认',
|
|
||||||
// click: false,
|
|
||||||
// retry: false,
|
|
||||||
// buttons: [{
|
|
||||||
// type: 'execute',
|
|
||||||
// title: '通过',
|
|
||||||
// code: 'agree',
|
|
||||||
// parameters: {}
|
|
||||||
// }],
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: null,
|
|
||||||
// currentNodeMsg: '待执行',
|
|
||||||
// currentNodeStatus: 'pending',
|
|
||||||
// status: 'pending'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// code: 'node_merge_master',
|
|
||||||
// type: 'service',
|
|
||||||
// name: '合并回Master',
|
|
||||||
// click: false,
|
|
||||||
// retry: true,
|
|
||||||
// createTime: '2025-07-17 21:28:21',
|
|
||||||
// updateTime: '2025-07-17 21:28:21',
|
|
||||||
// startTime: null,
|
|
||||||
// currentNodeMsg: '待执行',
|
|
||||||
// currentNodeStatus: 'pending',
|
|
||||||
// status: 'pending'
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// 动态流水线
|
|
||||||
dynamicStartupStatusMap: {
|
dynamicStartupStatusMap: {
|
||||||
start: { label: '启动', code: 'start' },
|
start: { label: '启动', code: 'start' },
|
||||||
restart: { label: '重新启动', code: 'restart' }
|
restart: { label: '重新启动', code: 'restart' }
|
||||||
@@ -473,7 +110,10 @@ export default {
|
|||||||
// 当前流水线实例
|
// 当前流水线实例
|
||||||
dynamicInstance: {},
|
dynamicInstance: {},
|
||||||
// 当前ws客户端
|
// 当前ws客户端
|
||||||
dynamicWsClient: null
|
dynamicWsClient: null,
|
||||||
|
dynamicRunning: false,
|
||||||
|
// ============== 交互变量
|
||||||
|
currentNodeData: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -482,31 +122,9 @@ export default {
|
|||||||
])
|
])
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.refreshData()
|
|
||||||
this.initPipelineTemplate(this.dynamicTemplate.id)
|
this.initPipelineTemplate(this.dynamicTemplate.id)
|
||||||
// const pipelineInstanceId = sessionStorage.getItem('pipelineInstanceId')
|
|
||||||
// if (pipelineInstanceId) {
|
|
||||||
// this.fetchLastDetail(pipelineInstanceId)
|
|
||||||
// }
|
|
||||||
// this.connectWebSocketServer(pipelineInstanceId)
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// refreshData() {
|
|
||||||
// // 成功
|
|
||||||
// for (const datum of this.dataList2) {
|
|
||||||
// if (datum.status === 'running') {
|
|
||||||
// datum.updateTime = FormatDateTimeStr(new Date())
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// this.dataList2 = [...this.dataList2]
|
|
||||||
// // 失败或重试
|
|
||||||
// for (const datum of this.dataList3) {
|
|
||||||
// if (datum.status === 'running') {
|
|
||||||
// datum.updateTime = FormatDateTimeStr(new Date())
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// this.dataList3 = [...this.dataList3]
|
|
||||||
// },
|
|
||||||
/**
|
/**
|
||||||
* 初始化流水线模板
|
* 初始化流水线模板
|
||||||
* @param templateId
|
* @param templateId
|
||||||
@@ -530,6 +148,13 @@ export default {
|
|||||||
const that = this
|
const that = this
|
||||||
// {username}_{bizCode}_{contextParams}
|
// {username}_{bizCode}_{contextParams}
|
||||||
const sid = `${that.user.username}_FetchPipelineLastDetail_${instanceId}`
|
const sid = `${that.user.username}_FetchPipelineLastDetail_${instanceId}`
|
||||||
|
if (that.dynamicWsClient) {
|
||||||
|
try {
|
||||||
|
that.dynamicWsClient.close()
|
||||||
|
} catch (e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
that.dynamicWsClient = new CsWsClient(sid)
|
that.dynamicWsClient = new CsWsClient(sid)
|
||||||
that.dynamicWsClient.connect(that.handleWebSocketError, that.handleWebSocketMessage)
|
that.dynamicWsClient.connect(that.handleWebSocketError, that.handleWebSocketMessage)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -547,6 +172,7 @@ export default {
|
|||||||
const data = e.data
|
const data = e.data
|
||||||
// console.log('来自服务器的数据:data', data)
|
// console.log('来自服务器的数据:data', data)
|
||||||
const callbackData = JSON.parse(data)
|
const callbackData = JSON.parse(data)
|
||||||
|
that.dynamicRunning = true
|
||||||
// console.log('callbackData', callbackData)
|
// console.log('callbackData', callbackData)
|
||||||
try {
|
try {
|
||||||
that.dynamicInstance = JSON.parse(callbackData.data)
|
that.dynamicInstance = JSON.parse(callbackData.data)
|
||||||
@@ -555,8 +181,9 @@ export default {
|
|||||||
if (that.dynamicTemplateList && that.dynamicTemplateList.length === successCount) {
|
if (that.dynamicTemplateList && that.dynamicTemplateList.length === successCount) {
|
||||||
// 所有节点执行成功
|
// 所有节点执行成功
|
||||||
if (that.dynamicWsClient) {
|
if (that.dynamicWsClient) {
|
||||||
that.dynamicWsClient.close()
|
|
||||||
sessionStorage.removeItem('pipelineInstanceId')
|
sessionStorage.removeItem('pipelineInstanceId')
|
||||||
|
that.dynamicWsClient.close()
|
||||||
|
that.dynamicRunning = false
|
||||||
}
|
}
|
||||||
that.dynamicStartupStatus = that.dynamicStartupStatusMap.start.code
|
that.dynamicStartupStatus = that.dynamicStartupStatusMap.start.code
|
||||||
} else {
|
} else {
|
||||||
@@ -564,75 +191,87 @@ export default {
|
|||||||
// 存在失败的节点
|
// 存在失败的节点
|
||||||
if (that.dynamicWsClient && failCount > 0) {
|
if (that.dynamicWsClient && failCount > 0) {
|
||||||
that.dynamicWsClient.close()
|
that.dynamicWsClient.close()
|
||||||
|
that.dynamicRunning = false
|
||||||
}
|
}
|
||||||
that.dynamicStartupStatus = that.dynamicStartupStatusMap.restart.code
|
that.dynamicStartupStatus = that.dynamicStartupStatusMap.restart.code
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// ignore
|
// ignore
|
||||||
|
that.dynamicRunning = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// /**
|
|
||||||
// * 通过Http的方式拉取流水线最新的状态
|
|
||||||
// * @param instanceId
|
|
||||||
// * @returns {Promise<void>}
|
|
||||||
// */
|
|
||||||
// async fetchLastDetail(instanceId) {
|
|
||||||
// const that = this
|
|
||||||
// const intervalTime = 2000
|
|
||||||
// setTimeout(() => {
|
|
||||||
// that.dynamicHook = setInterval(() => {
|
|
||||||
// queryLastPipelineDetail(instanceId).then((data) => {
|
|
||||||
// that.dynamicInstance = data
|
|
||||||
// // 判断流水线是否结束
|
|
||||||
// const successCount = CountArraysObjectByPropKey(data.nodes, 'status', 'success')
|
|
||||||
// if (that.dynamicTemplateList && that.dynamicTemplateList.length === successCount) {
|
|
||||||
// clearInterval(that.dynamicHook)
|
|
||||||
// that.dynamicHook = null
|
|
||||||
// that.dynamicStartupStatus = that.dynamicStartupStatusMap.start.code
|
|
||||||
// } else {
|
|
||||||
// that.dynamicStartupStatus = that.dynamicStartupStatusMap.restart.code
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// }, intervalTime)
|
|
||||||
// that.dynamicStartButtonLoading = false
|
|
||||||
// }, 2000)
|
|
||||||
// },
|
|
||||||
/**
|
/**
|
||||||
* 启动流水线
|
* 启动流水线
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
async startPipelineTest() {
|
async doStartPipeline() {
|
||||||
const that = this
|
const that = this
|
||||||
const args = {
|
|
||||||
id: that.dynamicTemplate.id
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
// if (that.dynamicHook) {
|
|
||||||
// clearInterval(that.dynamicHook)
|
|
||||||
// }
|
|
||||||
that.dynamicStartButtonLoading = true
|
that.dynamicStartButtonLoading = true
|
||||||
// 这里的 dynamicStartupStatus状态,需要后期与上下文关联后,初始化的时候带入最近一个流水线实例
|
// 这里的 dynamicStartupStatus状态,需要后期与上下文关联后,初始化的时候带入最近一个流水线实例
|
||||||
// let result
|
const args = {
|
||||||
// if (that.dynamicStartupStatus === that.dynamicStartupStatusMap.start.code) {
|
templateId: that.dynamicTemplate.id,
|
||||||
// result = await restartPipeline()
|
instanceName: that.testAppInfo.iterationName,
|
||||||
// CsMessage.Success('流水线重新启动成功')
|
contextName: that.testAppInfo.appName,
|
||||||
// } else {
|
env: that.testAppInfo.pipelineTemplateEnv
|
||||||
// result = await startPipeline()
|
}
|
||||||
// CsMessage.Success('流水线启动成功')
|
let result
|
||||||
// }
|
const pipelineInstanceId = sessionStorage.getItem('pipelineInstanceId')
|
||||||
const result = await startPipeline(args)
|
if (pipelineInstanceId) {
|
||||||
|
result = await restartPipeline({
|
||||||
|
...args,
|
||||||
|
instanceId: pipelineInstanceId
|
||||||
|
})
|
||||||
|
CsMessage.Success('流水线重启成功')
|
||||||
|
} else {
|
||||||
|
result = await startPipeline(args)
|
||||||
CsMessage.Success('流水线启动成功')
|
CsMessage.Success('流水线启动成功')
|
||||||
// await that.fetchLastDetail(result.instanceId)
|
}
|
||||||
sessionStorage.setItem('pipelineInstanceId', result.instanceId)
|
sessionStorage.setItem('pipelineInstanceId', result.instanceId)
|
||||||
that.connectWebSocketServer(result.instanceId)
|
that.connectWebSocketServer(result.instanceId)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('error', e)
|
console.error('error', e)
|
||||||
that.dynamicStartButtonLoading = false
|
that.dynamicStartButtonLoading = false
|
||||||
|
CsMessage.Error('流水线启动失败')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onPipelineRetrySuccess(data) {
|
/**
|
||||||
sessionStorage.setItem('pipelineInstanceId', data.instanceId)
|
* 停止流水线
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async doStopPipeline() {
|
||||||
|
const that = this
|
||||||
|
const args = {
|
||||||
|
templateId: that.dynamicTemplate.id,
|
||||||
|
instanceName: that.testAppInfo.iterationName,
|
||||||
|
contextName: that.testAppInfo.appName,
|
||||||
|
env: that.testAppInfo.pipelineTemplateEnv
|
||||||
|
}
|
||||||
|
const pipelineInstanceId = sessionStorage.getItem('pipelineInstanceId')
|
||||||
|
if (pipelineInstanceId) {
|
||||||
|
await stopPipeline({
|
||||||
|
...args,
|
||||||
|
instanceId: pipelineInstanceId
|
||||||
|
})
|
||||||
|
CsMessage.Success('流水线停止成功')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onPipelineNodeClick(data) {
|
||||||
|
console.log('data', data)
|
||||||
|
this.currentNodeData = data
|
||||||
|
this.$refs.detailDrawer.show()
|
||||||
|
},
|
||||||
|
async onPipelineNodeRetryClick(data) {
|
||||||
|
console.log('data', data)
|
||||||
|
const result = await retryPipeline({
|
||||||
|
instanceId: data.instanceId,
|
||||||
|
code: data.code
|
||||||
|
})
|
||||||
|
sessionStorage.setItem('pipelineInstanceId', result.instanceId)
|
||||||
this.connectWebSocketServer(data.instanceId)
|
this.connectWebSocketServer(data.instanceId)
|
||||||
|
},
|
||||||
|
async onPipelineNodeOperationClick(data, buttonInfo) {
|
||||||
|
console.log('data', data, buttonInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
@@ -9,7 +24,7 @@ import java.lang.annotation.*;
|
|||||||
/**
|
/**
|
||||||
* Annotation for mapping HTTP {@code PATCH} requests onto specific handler
|
* Annotation for mapping HTTP {@code PATCH} requests onto specific handler
|
||||||
* methods.
|
* methods.
|
||||||
* * 支持匿名访问 PatchMapping
|
* 支持匿名访问 PatchMapping
|
||||||
*
|
*
|
||||||
* @see AnonymousGetMapping
|
* @see AnonymousGetMapping
|
||||||
* @see AnonymousPostMapping
|
* @see AnonymousPostMapping
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.annotation;
|
package cn.odboy.annotation;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
@@ -9,7 +24,7 @@ import java.lang.annotation.*;
|
|||||||
/**
|
/**
|
||||||
* Annotation for mapping HTTP {@code PUT} requests onto specific handler
|
* Annotation for mapping HTTP {@code PUT} requests onto specific handler
|
||||||
* methods.
|
* methods.
|
||||||
* * 支持匿名访问 PutMapping
|
* 支持匿名访问 PutMapping
|
||||||
*
|
*
|
||||||
* @see AnonymousGetMapping
|
* @see AnonymousGetMapping
|
||||||
* @see AnonymousPostMapping
|
* @see AnonymousPostMapping
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.base;
|
package cn.odboy.base;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.constant;
|
package cn.odboy.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.constant;
|
package cn.odboy.constant;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.constant;
|
package cn.odboy.constant;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.constant;
|
package cn.odboy.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.context;
|
package cn.odboy.framework.context;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
+17
-2
@@ -1,8 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.doc;
|
package cn.odboy.framework.doc;
|
||||||
|
|
||||||
import cn.odboy.constant.SystemConst;
|
import cn.odboy.constant.SystemConst;
|
||||||
import cn.odboy.framework.properties.AppProperties;
|
import cn.odboy.framework.properties.AppProperties;
|
||||||
import cn.odboy.util.AnonTagUtil;
|
import cn.odboy.util.CsAnonTagUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -80,7 +95,7 @@ public class SwaggerConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SecurityContext getContextByPath() {
|
private SecurityContext getContextByPath() {
|
||||||
Set<String> urls = AnonTagUtil.getAllAnonymousUrl(applicationContext);
|
Set<String> urls = CsAnonTagUtil.getAllAnonymousUrl(applicationContext);
|
||||||
urls = urls.stream().filter(url -> !"/".equals(url)).collect(Collectors.toSet());
|
urls = urls.stream().filter(url -> !"/".equals(url)).collect(Collectors.toSet());
|
||||||
String regExp = "^(?!" + apiPath + String.join("|" + apiPath, urls) + ").*$";
|
String regExp = "^(?!" + apiPath + String.join("|" + apiPath, urls) + ").*$";
|
||||||
return SecurityContext.builder()
|
return SecurityContext.builder()
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.exception;
|
package cn.odboy.framework.exception;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.exception.handler;
|
package cn.odboy.framework.exception.handler;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.exception.handler;
|
package cn.odboy.framework.exception.handler;
|
||||||
|
|
||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.monitor.service;
|
package cn.odboy.framework.monitor.service;
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.config;
|
package cn.odboy.framework.mybatisplus.config;
|
||||||
|
|
||||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
|
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.core;
|
package cn.odboy.framework.mybatisplus.core;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ package cn.odboy.framework.mybatisplus.core;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.odboy.base.CsBaseUserTimeTb;
|
import cn.odboy.base.CsBaseUserTimeTb;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.util.FileUtil;
|
import cn.odboy.util.CsFileUtil;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
|
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
|
||||||
import com.baomidou.mybatisplus.generator.config.*;
|
import com.baomidou.mybatisplus.generator.config.*;
|
||||||
@@ -193,7 +193,7 @@ public class CsMpCmdGenUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Consumer<GlobalConfig.Builder> getGlobalConfigConsumer() {
|
private static Consumer<GlobalConfig.Builder> getGlobalConfigConsumer() {
|
||||||
String outputDir = FileUtil.getTmpDirPath() + "CodeGen";
|
String outputDir = CsFileUtil.getTmpDirPath() + "CodeGen";
|
||||||
return globalConfigBuilder -> globalConfigBuilder
|
return globalConfigBuilder -> globalConfigBuilder
|
||||||
.enableSwagger()
|
.enableSwagger()
|
||||||
.outputDir(outputDir)
|
.outputDir(outputDir)
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.mybatisplus.core;
|
package cn.odboy.framework.mybatisplus.core;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties;
|
package cn.odboy.framework.properties;
|
||||||
|
|
||||||
import cn.odboy.framework.properties.model.*;
|
import cn.odboy.framework.properties.model.*;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+17
-2
@@ -1,9 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
import cn.odboy.constant.CaptchaCodeEnum;
|
import cn.odboy.constant.CaptchaCodeEnum;
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
import cn.odboy.util.StringUtil;
|
import cn.odboy.util.CsStringUtil;
|
||||||
import com.wf.captcha.*;
|
import com.wf.captcha.*;
|
||||||
import com.wf.captcha.base.Captcha;
|
import com.wf.captcha.base.Captcha;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -84,7 +99,7 @@ public class UserLoginCaptchaSettingModel extends CsObject {
|
|||||||
default:
|
default:
|
||||||
throw new BadRequestException("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
|
throw new BadRequestException("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
|
||||||
}
|
}
|
||||||
if (StringUtil.isNotBlank(fontName)) {
|
if (CsStringUtil.isNotBlank(fontName)) {
|
||||||
captcha.setFont(new Font(fontName, Font.PLAIN, fontSize));
|
captcha.setFont(new Font(fontName, Font.PLAIN, fontSize));
|
||||||
}
|
}
|
||||||
return captcha;
|
return captcha;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.properties.model;
|
package cn.odboy.framework.properties.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+23
-9
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.quartz.config;
|
package cn.odboy.framework.quartz.config;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -23,24 +38,23 @@ public class QuartzConfig {
|
|||||||
@Component("quartzJobFactory")
|
@Component("quartzJobFactory")
|
||||||
public static class QuartzJobFactory extends AdaptableJobFactory {
|
public static class QuartzJobFactory extends AdaptableJobFactory {
|
||||||
|
|
||||||
private final AutowireCapableBeanFactory capableBeanFactory;
|
private final AutowireCapableBeanFactory autowireCapableBeanFactory;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public QuartzJobFactory(AutowireCapableBeanFactory capableBeanFactory) {
|
public QuartzJobFactory(AutowireCapableBeanFactory autowireCapableBeanFactory) {
|
||||||
this.capableBeanFactory = capableBeanFactory;
|
this.autowireCapableBeanFactory = autowireCapableBeanFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
protected Object createJobInstance(@NonNull TriggerFiredBundle bundle) throws Exception {
|
protected Object createJobInstance(@NonNull TriggerFiredBundle triggerFiredBundle) throws Exception {
|
||||||
try {
|
try {
|
||||||
// 调用父类的方法, 把Job注入到spring中
|
// 调用父类的方法, 把Job注入Spring中
|
||||||
Object jobInstance = super.createJobInstance(bundle);
|
Object jobInstance = super.createJobInstance(triggerFiredBundle);
|
||||||
capableBeanFactory.autowireBean(jobInstance);
|
autowireCapableBeanFactory.autowireBean(jobInstance);
|
||||||
log.debug("Job instance created and autowired: {}", jobInstance.getClass().getName());
|
|
||||||
return jobInstance;
|
return jobInstance;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Error creating job instance for bundle: {}", bundle, e);
|
log.error("Job注入Spring失败, {}", triggerFiredBundle, e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.quartz.core;
|
package cn.odboy.framework.quartz.core;
|
||||||
|
|
||||||
import cn.odboy.framework.context.CsSpringBeanHolder;
|
import cn.odboy.framework.context.CsSpringBeanHolder;
|
||||||
|
|||||||
+15
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.redis;
|
package cn.odboy.framework.redis;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
@@ -5,7 +20,6 @@ import com.alibaba.fastjson2.JSONFactory;
|
|||||||
import com.alibaba.fastjson2.JSONWriter;
|
import com.alibaba.fastjson2.JSONWriter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.codec.digest.MurmurHash3;
|
import org.apache.commons.codec.digest.MurmurHash3;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||||
import org.springframework.cache.Cache;
|
import org.springframework.cache.Cache;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.redis;
|
package cn.odboy.framework.redis;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.redis;
|
package cn.odboy.framework.redis;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.server.config;
|
package cn.odboy.framework.server.config;
|
||||||
|
|
||||||
import cn.odboy.framework.properties.AppProperties;
|
import cn.odboy.framework.properties.AppProperties;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.server.converters;
|
package cn.odboy.framework.server.converters;
|
||||||
|
|
||||||
import org.springframework.core.convert.converter.Converter;
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.server.converters;
|
package cn.odboy.framework.server.converters;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|||||||
+22
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.server.core;
|
package cn.odboy.framework.server.core;
|
||||||
|
|
||||||
import cn.odboy.framework.server.converters.DateStringArraysToListDateConverter;
|
import cn.odboy.framework.server.converters.DateStringArraysToListDateConverter;
|
||||||
@@ -23,13 +38,19 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跨越、静态资源映射、Http消息转换
|
||||||
|
*
|
||||||
|
* @author odboy
|
||||||
|
* @date 2025-03-21
|
||||||
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebMvc
|
@EnableWebMvc
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ConfigurerAdapter implements WebMvcConfigurer {
|
public class ConfigurerAdapter implements WebMvcConfigurer {
|
||||||
private final DateStringArraysToListDateConverter dateStringArraysToListDateConverter;
|
private final DateStringArraysToListDateConverter dateStringArraysToListDateConverter;
|
||||||
private final DateStringToDateConverter dateStringToDateConverter;
|
private final DateStringToDateConverter dateStringToDateConverter;
|
||||||
private final FileUploadPathHelper fileUploadPathHelper;
|
private final CsFileLocalUploadHelper fileUploadPathHelper;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public CorsFilter corsFilter() {
|
public CorsFilter corsFilter() {
|
||||||
|
|||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.server.core;
|
package cn.odboy.framework.server.core;
|
||||||
|
|
||||||
import cn.odboy.constant.SystemConst;
|
import cn.odboy.constant.SystemConst;
|
||||||
@@ -10,7 +25,7 @@ import org.springframework.stereotype.Component;
|
|||||||
* @author odboy
|
* @author odboy
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class FileUploadPathHelper {
|
public class CsFileLocalUploadHelper {
|
||||||
/**
|
/**
|
||||||
* 单位MB
|
* 单位MB
|
||||||
*/
|
*/
|
||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.config;
|
package cn.odboy.framework.websocket.config;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.config;
|
package cn.odboy.framework.websocket.config;
|
||||||
|
|
||||||
import io.undertow.server.DefaultByteBufferPool;
|
import io.undertow.server.DefaultByteBufferPool;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.context;
|
package cn.odboy.framework.websocket.context;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.context;
|
package cn.odboy.framework.websocket.context;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.context;
|
package cn.odboy.framework.websocket.context;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.model;
|
package cn.odboy.framework.websocket.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.framework.websocket.util;
|
package cn.odboy.framework.websocket.util;
|
||||||
|
|
||||||
import cn.odboy.framework.exception.BadRequestException;
|
import cn.odboy.framework.exception.BadRequestException;
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ import java.util.*;
|
|||||||
* 匿名标记工具
|
* 匿名标记工具
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public class AnonTagUtil {
|
public class CsAnonTagUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取匿名标记的URL
|
* 获取匿名标记的URL
|
||||||
+1
-1
@@ -9,7 +9,7 @@ import java.math.RoundingMode;
|
|||||||
* 计算类
|
* 计算类
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class BigDecimalUtil {
|
public final class CsBigDecimalUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将对象转换为 BigDecimal
|
* 将对象转换为 BigDecimal
|
||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.hutool.http.useragent.UserAgent;
|
import cn.hutool.http.useragent.UserAgent;
|
||||||
@@ -14,7 +29,7 @@ import java.net.UnknownHostException;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class BrowserUtil {
|
public final class CsBrowserUtil {
|
||||||
private static final String UNKNOWN = "unknown";
|
private static final String UNKNOWN = "unknown";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import java.util.List;
|
|||||||
* 类 相关
|
* 类 相关
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class ClassUtil {
|
public final class CsClassUtil {
|
||||||
@SuppressWarnings({"unchecked", "all"})
|
@SuppressWarnings({"unchecked", "all"})
|
||||||
public static List<Field> getAllFields(Class clazz, List<Field> fields) {
|
public static List<Field> getAllFields(Class clazz, List<Field> fields) {
|
||||||
if (clazz != null) {
|
if (clazz != null) {
|
||||||
+1
-1
@@ -8,7 +8,7 @@ import java.io.Closeable;
|
|||||||
* 用于关闭各种连接, 缺啥补啥
|
* 用于关闭各种连接, 缺啥补啥
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class CloseUtil {
|
public final class CsCloseUtil {
|
||||||
|
|
||||||
public static void close(Closeable closeable) {
|
public static void close(Closeable closeable) {
|
||||||
if (null != closeable) {
|
if (null != closeable) {
|
||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
|||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
@@ -13,7 +28,7 @@ import java.nio.charset.StandardCharsets;
|
|||||||
* DES加密
|
* DES加密
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class DesEncryptUtil {
|
public final class CsDesEncryptUtil {
|
||||||
|
|
||||||
private static final String STR_PARAM = "Passw0rd";
|
private static final String STR_PARAM = "Passw0rd";
|
||||||
private static final IvParameterSpec IV = new IvParameterSpec(STR_PARAM.getBytes(StandardCharsets.UTF_8));
|
private static final IvParameterSpec IV = new IvParameterSpec(STR_PARAM.getBytes(StandardCharsets.UTF_8));
|
||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|||||||
+19
-4
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
@@ -34,7 +49,7 @@ import static cn.odboy.constant.SystemConst.*;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class FileUtil extends cn.hutool.core.io.FileUtil {
|
public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统临时目录
|
* 系统临时目录
|
||||||
@@ -127,8 +142,8 @@ public final class FileUtil extends cn.hutool.core.io.FileUtil {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
} finally {
|
} finally {
|
||||||
CloseUtil.close(os);
|
CsCloseUtil.close(os);
|
||||||
CloseUtil.close(ins);
|
CsCloseUtil.close(ins);
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
@@ -273,7 +288,7 @@ public final class FileUtil extends cn.hutool.core.io.FileUtil {
|
|||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
CloseUtil.close(in);
|
CsCloseUtil.close(in);
|
||||||
}
|
}
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
+16
-1
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.odboy.framework.context.CsSpringBeanHolder;
|
import cn.odboy.framework.context.CsSpringBeanHolder;
|
||||||
@@ -13,7 +28,7 @@ import java.util.Enumeration;
|
|||||||
* IP地址 相关
|
* IP地址 相关
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class IpUtil {
|
public final class CsIPUtil {
|
||||||
/**
|
/**
|
||||||
* 注入bean
|
* 注入bean
|
||||||
*/
|
*/
|
||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.odboy.base.CsResultVo;
|
import cn.odboy.base.CsResultVo;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.lang.Dict;
|
||||||
|
|||||||
+22
-7
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.util;
|
package cn.odboy.util;
|
||||||
|
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
@@ -15,7 +30,7 @@ import java.security.spec.X509EncodedKeySpec;
|
|||||||
* Rsa 工具类, 公钥私钥生成, 加解密
|
* Rsa 工具类, 公钥私钥生成, 加解密
|
||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class RsaEncryptUtil {
|
public final class CsRsaEncryptUtil {
|
||||||
|
|
||||||
private static final String SRC = "123456";
|
private static final String SRC = "123456";
|
||||||
|
|
||||||
@@ -36,12 +51,12 @@ public final class RsaEncryptUtil {
|
|||||||
*/
|
*/
|
||||||
private static void test1(RsaKeyPair keyPair) throws Exception {
|
private static void test1(RsaKeyPair keyPair) throws Exception {
|
||||||
System.out.println("***************** 公钥加密私钥解密开始 *****************");
|
System.out.println("***************** 公钥加密私钥解密开始 *****************");
|
||||||
String text1 = encryptByPublicKey(keyPair.getPublicKey(), RsaEncryptUtil.SRC);
|
String text1 = encryptByPublicKey(keyPair.getPublicKey(), CsRsaEncryptUtil.SRC);
|
||||||
String text2 = decryptByPrivateKey(keyPair.getPrivateKey(), text1);
|
String text2 = decryptByPrivateKey(keyPair.getPrivateKey(), text1);
|
||||||
System.out.println("加密前:" + RsaEncryptUtil.SRC);
|
System.out.println("加密前:" + CsRsaEncryptUtil.SRC);
|
||||||
System.out.println("加密后:" + text1);
|
System.out.println("加密后:" + text1);
|
||||||
System.out.println("解密后:" + text2);
|
System.out.println("解密后:" + text2);
|
||||||
if (RsaEncryptUtil.SRC.equals(text2)) {
|
if (CsRsaEncryptUtil.SRC.equals(text2)) {
|
||||||
System.out.println("解密字符串和原始字符串一致, 解密成功");
|
System.out.println("解密字符串和原始字符串一致, 解密成功");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("解密字符串和原始字符串不一致,解密失败");
|
System.out.println("解密字符串和原始字符串不一致,解密失败");
|
||||||
@@ -56,12 +71,12 @@ public final class RsaEncryptUtil {
|
|||||||
*/
|
*/
|
||||||
private static void test2(RsaKeyPair keyPair) throws Exception {
|
private static void test2(RsaKeyPair keyPair) throws Exception {
|
||||||
System.out.println("***************** 私钥加密公钥解密开始 *****************");
|
System.out.println("***************** 私钥加密公钥解密开始 *****************");
|
||||||
String text1 = encryptByPrivateKey(keyPair.getPrivateKey(), RsaEncryptUtil.SRC);
|
String text1 = encryptByPrivateKey(keyPair.getPrivateKey(), CsRsaEncryptUtil.SRC);
|
||||||
String text2 = decryptByPublicKey(keyPair.getPublicKey(), text1);
|
String text2 = decryptByPublicKey(keyPair.getPublicKey(), text1);
|
||||||
System.out.println("加密前:" + RsaEncryptUtil.SRC);
|
System.out.println("加密前:" + CsRsaEncryptUtil.SRC);
|
||||||
System.out.println("加密后:" + text1);
|
System.out.println("加密后:" + text1);
|
||||||
System.out.println("解密后:" + text2);
|
System.out.println("解密后:" + text2);
|
||||||
if (RsaEncryptUtil.SRC.equals(text2)) {
|
if (CsRsaEncryptUtil.SRC.equals(text2)) {
|
||||||
System.out.println("解密字符串和原始字符串一致,解密成功");
|
System.out.println("解密字符串和原始字符串一致,解密成功");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("解密字符串和原始字符串不一致,解密失败");
|
System.out.println("解密字符串和原始字符串不一致,解密失败");
|
||||||
+1
-1
@@ -11,7 +11,7 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class StringUtil extends org.apache.commons.lang3.StringUtils {
|
public final class CsStringUtil extends org.apache.commons.lang3.StringUtils {
|
||||||
|
|
||||||
private static final char SEPARATOR = '_';
|
private static final char SEPARATOR = '_';
|
||||||
|
|
||||||
@@ -20,8 +20,10 @@ import lombok.experimental.UtilityClass;
|
|||||||
import javax.validation.ConstraintViolation;
|
import javax.validation.ConstraintViolation;
|
||||||
import javax.validation.Validation;
|
import javax.validation.Validation;
|
||||||
import javax.validation.Validator;
|
import javax.validation.Validator;
|
||||||
|
import javax.validation.ValidatorFactory;
|
||||||
import javax.validation.groups.Default;
|
import javax.validation.groups.Default;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bean验证工具
|
* Bean验证工具
|
||||||
@@ -31,16 +33,22 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
@UtilityClass
|
@UtilityClass
|
||||||
public final class CsValidUtil {
|
public final class CsValidUtil {
|
||||||
private static final Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();
|
private static final Validator VALIDATOR;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try (ValidatorFactory factory = Validation.buildDefaultValidatorFactory()) {
|
||||||
|
VALIDATOR = factory.getValidator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static <T> void validate(T object) {
|
public static <T> void validate(T object) {
|
||||||
Set<ConstraintViolation<T>> violations = VALIDATOR.validate(object, Default.class);
|
Set<ConstraintViolation<T>> violations = VALIDATOR.validate(object, Default.class);
|
||||||
if (!violations.isEmpty()) {
|
if (!violations.isEmpty()) {
|
||||||
StringBuilder sb = new StringBuilder();
|
throw new IllegalArgumentException(violations
|
||||||
for (ConstraintViolation<T> violation : violations) {
|
.stream()
|
||||||
sb.append(violation.getMessage()).append(", ");
|
.map(ConstraintViolation::getMessage)
|
||||||
}
|
.collect(Collectors.joining(","))
|
||||||
throw new IllegalArgumentException(sb.toString());
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.constant.pipeline;
|
package cn.odboy.devops.constant.pipeline;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.constant.pipeline;
|
package cn.odboy.devops.constant.pipeline;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.constant.pipeline;
|
package cn.odboy.devops.constant.pipeline;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|||||||
+39
-14
@@ -1,8 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.controller;
|
package cn.odboy.devops.controller;
|
||||||
|
|
||||||
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
|
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
|
||||||
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
|
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
|
||||||
import cn.odboy.devops.dal.model.DevOpsQueryLastPipelineDetailArgs;
|
import cn.odboy.devops.dal.model.QueryLastPipelineDetailArgs;
|
||||||
|
import cn.odboy.devops.dal.model.RestartPipelineArgs;
|
||||||
|
import cn.odboy.devops.dal.model.StartPipelineArgs;
|
||||||
import cn.odboy.devops.framework.pipeline.model.PipelineInstanceVo;
|
import cn.odboy.devops.framework.pipeline.model.PipelineInstanceVo;
|
||||||
import cn.odboy.devops.service.core.PipelineInstanceService;
|
import cn.odboy.devops.service.core.PipelineInstanceService;
|
||||||
import cn.odboy.devops.service.core.PipelineTemplateService;
|
import cn.odboy.devops.service.core.PipelineTemplateService;
|
||||||
@@ -36,31 +53,39 @@ public class DevopsPipelineInstanceController {
|
|||||||
@ApiOperation("启动流水线")
|
@ApiOperation("启动流水线")
|
||||||
@PostMapping(value = "/start")
|
@PostMapping(value = "/start")
|
||||||
@PreAuthorize("@el.check()")
|
@PreAuthorize("@el.check()")
|
||||||
public ResponseEntity<?> startPipeline(@RequestBody PipelineTemplateTb args) {
|
public ResponseEntity<?> startPipeline(@Validated @RequestBody StartPipelineArgs args) {
|
||||||
// 输入参数
|
|
||||||
String appName = "cuteops";
|
|
||||||
String envCode = "daily";
|
|
||||||
// 获取模板
|
// 获取模板
|
||||||
PipelineTemplateTb pipelineTemplateTb = pipelineTemplateService.getPipelineTemplateById(args.getId());
|
PipelineTemplateTb pipelineTemplateTb = pipelineTemplateService.getPipelineTemplateById(args.getTemplateId());
|
||||||
// 创建流水线实例
|
// 创建流水线实例
|
||||||
PipelineInstanceTb pipelineInstanceTb = new PipelineInstanceTb();
|
PipelineInstanceTb pipelineInstanceTb = new PipelineInstanceTb();
|
||||||
pipelineInstanceTb.setTemplateId(pipelineTemplateTb.getId());
|
pipelineInstanceTb.setTemplateId(pipelineTemplateTb.getId());
|
||||||
pipelineInstanceTb.setInstanceName("流水线测试");
|
|
||||||
pipelineInstanceTb.setTemplateType(pipelineTemplateTb.getType());
|
pipelineInstanceTb.setTemplateType(pipelineTemplateTb.getType());
|
||||||
pipelineInstanceTb.setContextName(appName);
|
|
||||||
pipelineInstanceTb.setEnv(envCode);
|
|
||||||
pipelineInstanceTb.setTemplateContent(pipelineTemplateTb.getTemplate());
|
pipelineInstanceTb.setTemplateContent(pipelineTemplateTb.getTemplate());
|
||||||
|
pipelineInstanceTb.setInstanceName(args.getInstanceName());
|
||||||
|
pipelineInstanceTb.setContextName(args.getContextName());
|
||||||
|
pipelineInstanceTb.setEnv(args.getEnv());
|
||||||
return ResponseEntity.ok(pipelineInstanceService.startPipeline(pipelineInstanceTb));
|
return ResponseEntity.ok(pipelineInstanceService.startPipeline(pipelineInstanceTb));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO 待实现
|
* 已验证流程
|
||||||
*/
|
*/
|
||||||
@ApiOperation("重启流水线")
|
@ApiOperation("重启流水线")
|
||||||
@PostMapping(value = "/restart")
|
@PostMapping(value = "/restart")
|
||||||
@PreAuthorize("@el.check()")
|
@PreAuthorize("@el.check()")
|
||||||
public ResponseEntity<?> restartPipeline(@RequestBody PipelineTemplateTb args) {
|
public ResponseEntity<?> restartPipeline(@RequestBody RestartPipelineArgs args) {
|
||||||
return ResponseEntity.ok("功能开发中");
|
return ResponseEntity.ok(pipelineInstanceService.restartPipeline(args));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已验证流程
|
||||||
|
*/
|
||||||
|
@ApiOperation("停止流水线")
|
||||||
|
@PostMapping(value = "/stop")
|
||||||
|
@PreAuthorize("@el.check()")
|
||||||
|
public ResponseEntity<?> stopPipeline(@RequestBody RestartPipelineArgs args) {
|
||||||
|
pipelineInstanceService.stopPipeline(args);
|
||||||
|
return ResponseEntity.ok("流水线停止成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,14 +101,14 @@ public class DevopsPipelineInstanceController {
|
|||||||
@ApiOperation("查询流水线明细")
|
@ApiOperation("查询流水线明细")
|
||||||
@PostMapping(value = "/last")
|
@PostMapping(value = "/last")
|
||||||
@PreAuthorize("@el.check()")
|
@PreAuthorize("@el.check()")
|
||||||
public ResponseEntity<?> queryLastPipelineDetail(@Validated @RequestBody DevOpsQueryLastPipelineDetailArgs args) {
|
public ResponseEntity<?> queryLastPipelineDetail(@Validated @RequestBody QueryLastPipelineDetailArgs args) {
|
||||||
return ResponseEntity.ok(pipelineInstanceService.queryLastPipelineDetail(args.getInstanceId()));
|
return ResponseEntity.ok(pipelineInstanceService.queryLastPipelineDetail(args.getInstanceId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("查询流水线明细Ws")
|
@ApiOperation("查询流水线明细Ws")
|
||||||
@PostMapping(value = "/lastWs")
|
@PostMapping(value = "/lastWs")
|
||||||
@PreAuthorize("@el.check()")
|
@PreAuthorize("@el.check()")
|
||||||
public ResponseEntity<?> queryLastPipelineDetailWs(@Validated @RequestBody DevOpsQueryLastPipelineDetailArgs args) {
|
public ResponseEntity<?> queryLastPipelineDetailWs(@Validated @RequestBody QueryLastPipelineDetailArgs args) {
|
||||||
pipelineInstanceService.queryLastPipelineDetailWs(args.getInstanceId());
|
pipelineInstanceService.queryLastPipelineDetailWs(args.getInstanceId());
|
||||||
return ResponseEntity.ok("开始推送流水线明细");
|
return ResponseEntity.ok("开始推送流水线明细");
|
||||||
}
|
}
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.controller;
|
package cn.odboy.devops.controller;
|
||||||
|
|
||||||
import cn.odboy.base.CsArgs;
|
import cn.odboy.base.CsArgs;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.dataobject;
|
package cn.odboy.devops.dal.dataobject;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.dataobject;
|
package cn.odboy.devops.dal.dataobject;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.dataobject;
|
package cn.odboy.devops.dal.dataobject;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.dataobject;
|
package cn.odboy.devops.dal.dataobject;
|
||||||
|
|
||||||
import cn.odboy.base.CsBaseUserTimeLogicTb;
|
import cn.odboy.base.CsBaseUserTimeLogicTb;
|
||||||
|
|||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
package cn.odboy.devops.dal.model;
|
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public class DevOpsQueryLastPipelineDetailArgs extends CsObject {
|
|
||||||
@NotBlank(message = "流水线实例Id必填")
|
|
||||||
private String instanceId;
|
|
||||||
}
|
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package cn.odboy.devops.dal.model;
|
||||||
|
|
||||||
|
import cn.odboy.base.CsObject;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class QueryLastPipelineDetailArgs extends CsObject {
|
||||||
|
@NotBlank(message = "流水线实例id必填")
|
||||||
|
private String instanceId;
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package cn.odboy.devops.dal.model;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重启流水线 参数
|
||||||
|
*
|
||||||
|
* @author odboy
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class RestartPipelineArgs extends StartPipelineArgs {
|
||||||
|
@NotBlank(message = "流水线实例id必填")
|
||||||
|
private String instanceId;
|
||||||
|
}
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package cn.odboy.devops.dal.model;
|
||||||
|
|
||||||
|
import cn.odboy.base.CsObject;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流水线节点重试 参数
|
||||||
|
*
|
||||||
|
* @author odboy
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class RestartPipelineNodeArgs extends CsObject {
|
||||||
|
@NotBlank(message = "流水线实例id必填")
|
||||||
|
private String instanceId;
|
||||||
|
@NotBlank(message = "重试节点code必填")
|
||||||
|
private String code;
|
||||||
|
}
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package cn.odboy.devops.dal.model;
|
||||||
|
|
||||||
|
import cn.odboy.base.CsObject;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启动流水线 参数
|
||||||
|
*
|
||||||
|
* @author odboy
|
||||||
|
* @date 2025-07-28
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class StartPipelineArgs extends CsObject {
|
||||||
|
@NotNull(message = "模板id必填")
|
||||||
|
private Long templateId;
|
||||||
|
@NotBlank(message = "实例名称必填")
|
||||||
|
private String instanceName;
|
||||||
|
@NotBlank(message = "上下文名称必填")
|
||||||
|
private String contextName;
|
||||||
|
@NotBlank(message = "环境编码必填")
|
||||||
|
private String env;
|
||||||
|
}
|
||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.model;
|
package cn.odboy.devops.dal.model;
|
||||||
|
|
||||||
import cn.odboy.base.CsObject;
|
import cn.odboy.base.CsObject;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.mysql;
|
package cn.odboy.devops.dal.mysql;
|
||||||
|
|
||||||
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
|
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.mysql;
|
package cn.odboy.devops.dal.mysql;
|
||||||
|
|
||||||
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
|
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
|
||||||
|
|||||||
+21
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.dal.redis;
|
package cn.odboy.devops.dal.redis;
|
||||||
|
|
||||||
import cn.odboy.devops.constant.pipeline.PipelineConst;
|
import cn.odboy.devops.constant.pipeline.PipelineConst;
|
||||||
@@ -25,6 +40,12 @@ public class PipelineInstanceDAO {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLock(PipelineInstanceTb pipelineInstanceTb) {
|
||||||
|
String redisKey = PipelineConst.INSTANCE_PREFIX + pipelineInstanceTb.getTemplateId() + pipelineInstanceTb.getContextName();
|
||||||
|
Object o = redisHelper.get(redisKey);
|
||||||
|
return o != null;
|
||||||
|
}
|
||||||
|
|
||||||
public void unLock(PipelineInstanceTb pipelineInstanceTb) {
|
public void unLock(PipelineInstanceTb pipelineInstanceTb) {
|
||||||
String redisKey = PipelineConst.INSTANCE_PREFIX + pipelineInstanceTb.getTemplateId() + pipelineInstanceTb.getContextName();
|
String redisKey = PipelineConst.INSTANCE_PREFIX + pipelineInstanceTb.getTemplateId() + pipelineInstanceTb.getContextName();
|
||||||
Object o = redisHelper.get(redisKey);
|
Object o = redisHelper.get(redisKey);
|
||||||
|
|||||||
+15
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021-2025 Odboy
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package cn.odboy.devops.framework.mongoplus;
|
package cn.odboy.devops.framework.mongoplus;
|
||||||
|
|
||||||
import com.anwen.mongo.handlers.MetaObjectHandler;
|
import com.anwen.mongo.handlers.MetaObjectHandler;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user