Skip to content

Commit

Permalink
feat(app-console): replace bucket fs api with oss
Browse files Browse the repository at this point in the history
  • Loading branch information
walle233 committed Apr 15, 2022
1 parent eddda3d commit 3286322
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 16 deletions.
104 changes: 104 additions & 0 deletions packages/app-console/src/api/oss.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@

import store from '@/store'
import { assert } from '@/utils/assert'
import request from '@/utils/request'

/**
* Get bucket list
* @returns
*/
export async function getBuckets() {
const appid = store.state.app.appid
const res = await request({
url: `/apps/${appid}/oss/buckets`,
method: 'get'
})

assert(res.code === 0, 'get file buckets got error', res)
return res
}

/**
* Get a bucket & tokens
* @returns
*/
export async function getBucket(bucketName) {
const appid = store.state.app.appid
const res = await request({
url: `/apps/${appid}/oss/buckets/${bucketName}`,
method: 'get'
})

assert(res.code === 0, 'get bucket got error', res)
return res
}

/**
* Create a bucket
* @param {string} bucketName
* @param {number} mode
* @returns {Promise<any[]>}
*/
export async function createBucket(bucketName, mode) {
const appid = store.state.app.appid
const res = await request({
url: `/apps/${appid}/oss/buckets`,
method: 'post',
data: {
bucket: bucketName,
mode
}
})

assert(res.code === 0, 'create bucket got error', res)
return res
}

/**
* Update a bucket
* @param {string} bucketName
* @param {number} mode
* @returns {Promise<any[]>}
*/
export async function updateBucket(bucketName, mode) {
const appid = store.state.app.appid
const res = await request({
url: `/apps/${appid}/oss/buckets/${bucketName}`,
method: 'put',
data: {
mode
}
})

assert(res.code === 0, 'update bucket got error', res)
return res
}

/**
* Delete a bucket
* @param {string} bucketName
* @returns
*/
export async function deleteBucket(bucketName) {
const appid = store.state.app.appid
const res = await request({
url: `/apps/${appid}/oss/buckets/${bucketName}`,
method: 'delete'
})

assert(res.code === 0, 'delete bucket got error', res)
return res
}

/**
* 获取当前应用的指定文件桶的服务地址
* @param {*} bucket
* @returns
*/
export function getBucketUrl(bucket) {
const appid = store.state.app.appid
const domain = store.state.app.storage_deploy_host
const schema = store.state.app.storage_deploy_url_schema || 'http'
const url = `${schema}://${appid}-${bucket}.${domain}`
return url
}
40 changes: 24 additions & 16 deletions packages/app-console/src/views/storage/buckets.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@
</el-table-column>
<el-table-column label="默认权限" align="center" width="100">
<template slot-scope="{row}">
<span v-if="row.mode === 0">
<span v-if="row.mode === mode.PRIVATE">
<el-tag type="info" size="small" effect="plain">私有</el-tag>
</span>
<span v-if="row.mode === 1">
<span v-if="row.mode === mode.PUBLIC_READ">
<el-tag type="primary" size="small" effect="plain">公共读</el-tag>
</span>
<span v-if="row.mode === 2">
<span v-if="row.mode === mode.PUBLIC_READ_WRITE">
<el-tag type="danger" size="small" effect="plain">公共读写</el-tag>
</span>
</template>
Expand Down Expand Up @@ -74,9 +74,9 @@
</el-form-item>
<el-form-item label="默认权限" prop="mode">
<el-select v-model="form.mode" placeholder="">
<el-option label="私有" :value="0" />
<el-option label="公共读" :value="1" />
<el-option label="公共读写" :value="2" />
<el-option label="私有" :value="mode.PRIVATE" />
<el-option label="公共读" :value="mode.PUBLIC_READ" />
<el-option label="公共读写" :value="mode.PUBLIC_READ_WRITE" />
</el-select>
</el-form-item>
</el-form>
Expand All @@ -93,15 +93,21 @@
</template>

<script>
import * as fs from '@/api/file'
import * as oss from '@/api/oss'
import { assert } from '@/utils/assert'
import { showError, showSuccess } from '@/utils/show'
const MODE = {
PRIVATE: 'private',
PUBLIC_READ: 'public-read',
PUBLIC_READ_WRITE: 'public-read-write',
}
// 默认化创建表单的值
function getDefaultFormValue() {
return {
name: '',
mode: 0
mode: MODE.PRIVATE,
}
}
Expand Down Expand Up @@ -133,7 +139,8 @@ export default {
create: '创建'
},
rules: formRules,
downloadLoading: false
downloadLoading: false,
mode: MODE
}
},
created() {
Expand All @@ -147,7 +154,7 @@ export default {
this.listLoading = true
// 执行数据查询
const ret = await fs.getFileBuckets().catch(() => { this.listLoading = false })
const ret = await oss.getBuckets().catch(() => { this.listLoading = false })
assert(ret.code === 0, 'get file buckets got error')
this.list = ret.data
Expand All @@ -167,12 +174,13 @@ export default {
this.$refs['dataForm'].validate(async(valid) => {
if (!valid) { return }
if (/^[\w|\d]{1,32}$/g.test(this.form.name) === false) {
return showError('Bucket 名称长度必须在 1~32 之间,且只能包含字母、数字和下划线')
const isNameValid = /^[A-Za-z0-9\-]{1,16}$/g.test(this.form.name)
if (!isNameValid) {
return showError('Bucket 名称长度必须在 1~16 之间,且只能包含字母、数字和中划线')
}
// 执行创建请求
const r = await fs.createFileBucket(this.form.name, this.form.mode)
const r = await oss.createBucket(this.form.name, this.form.mode)
if (r.code) {
this.$notify({
Expand Down Expand Up @@ -208,7 +216,7 @@ export default {
if (!valid) { return }
// 执行更新请求
const r = await fs.updateFileBucket(this.form.name, this.form.mode)
const r = await oss.updateBucket(this.form.name, this.form.mode)
if (r.code) {
this.$notify({
Expand All @@ -230,7 +238,7 @@ export default {
await this.$confirm('确认要删除此数据?', '删除确认')
// 执行删除请求
const r = await fs.deleteFileBucket(row.name)
const r = await oss.deleteBucket(row.name)
if (r.code === 'BUCKET_NOT_EMPTY') {
return showError('不可删除非空文件桶')
Expand All @@ -250,7 +258,7 @@ export default {
},
// 获取 bucket 地址
getBucketUrl(bucketName) {
return fs.getAppFileBucketUrl(bucketName)
return oss.getBucketUrl(bucketName)
},
// 查看详情
async handleShowDetail(row) {
Expand Down

0 comments on commit 3286322

Please sign in to comment.