补充文章编辑

This commit is contained in:
yumaojun03 2025-01-19 12:03:30 +08:00
parent fd9766c0d7
commit 45f3bfae44
5 changed files with 100 additions and 3 deletions

View File

@ -1,6 +1,8 @@
package api
import (
"strconv"
"github.com/gin-gonic/gin"
"github.com/infraboard/mcube/v2/http/gin/response"
"github.com/infraboard/mcube/v2/ioc"
@ -47,9 +49,11 @@ func (h *BlogApiHandler) Init() error {
// 获取模块路有: url前缀,
r := ioc_gin.ObjectRouter(h)
r.GET("", h.QueryBlog)
r.GET(":id", h.DescribeBlog)
r.Use(middleware.Auth)
r.POST("", h.CreateBlog)
r.PUT(":id", h.UpdateBlog)
r.DELETE(":id", h.DeleteBlog)
return nil
}
@ -92,6 +96,22 @@ func (h *BlogApiHandler) QueryBlog(ctx *gin.Context) {
response.Success(ctx, ins)
}
func (h *BlogApiHandler) DescribeBlog(ctx *gin.Context) {
idInt, err := strconv.ParseInt(ctx.Param("id"), 10, 64)
if err != nil {
response.Failed(ctx, err)
return
}
req := blog.NewDescribeBlogRequest(uint(idInt))
ins, err := h.blog.DescribeBlog(ctx.Request.Context(), req)
if err != nil {
response.Failed(ctx, err)
return
}
response.Success(ctx, ins)
}
func (h *BlogApiHandler) DeleteBlog(ctx *gin.Context) {
in := blog.NewDeleteBlogRequest(ctx.Param("id"))
@ -102,3 +122,19 @@ func (h *BlogApiHandler) DeleteBlog(ctx *gin.Context) {
}
response.Success(ctx, "ok")
}
func (h *BlogApiHandler) UpdateBlog(ctx *gin.Context) {
idInt, err := strconv.ParseInt(ctx.Param("id"), 10, 64)
if err != nil {
response.Failed(ctx, err)
return
}
in := blog.NewUpdateBlogRequest(uint(idInt))
ins, err := h.blog.UpdateBlog(ctx.Request.Context(), in)
if err != nil {
response.Failed(ctx, err)
return
}
response.Success(ctx, ins)
}

View File

@ -58,6 +58,12 @@ type PublishBlogRequest struct {
StatusSpec
}
func NewUpdateBlogRequest(id uint) *UpdateBlogRequest {
return &UpdateBlogRequest{
GetRequest: *utils.NewGetRequest(id),
}
}
type UpdateBlogRequest struct {
utils.GetRequest
CreateBlogRequest

View File

@ -353,3 +353,36 @@
{"level":"info","component":"server","time":"2025-01-19T09:03:41+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
{"level":"info","component":"http","time":"2025-01-19T09:03:41+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}
{"level":"debug","time":"2025-01-19T09:05:07+08:00","caller":"token/api/api.go:57","message":"cookie domain: localhost"}
{"level":"info","component":"server","time":"2025-01-19T11:50:44+08:00","caller":"ioc/server/server.go:101","message":"receive signal 'interrupt', start graceful shutdown"}
{"level":"info","component":"http","time":"2025-01-19T11:50:44+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
{"level":"error","component":"http","time":"2025-01-19T11:50:44+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
{"level":"info","component":"server","time":"2025-01-19T11:50:44+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
{"level":"info","component":"gin_webframework","time":"2025-01-19T11:50:46+08:00","caller":"config/gin/framework.go:41","message":"enable gin recovery"}
{"level":"debug","time":"2025-01-19T11:50:46+08:00","caller":"token/impl/impl.go:39","message":"DefaultExpiredTTL: 3600"}
{"level":"info","component":"server","time":"2025-01-19T11:50:46+08:00","caller":"ioc/server/server.go:74","message":"loaded configs: [app.v1 trace.v1 log.v1 validator.v1 gin_webframework.v1 datasource.v1 grpc.v1 http.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:50:46+08:00","caller":"ioc/server/server.go:75","message":"loaded controllers: [token.v1 user.v1 blog.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:50:46+08:00","caller":"ioc/server/server.go:76","message":"loaded apis: [blogs.v1 tokens.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:50:46+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
{"level":"info","component":"http","time":"2025-01-19T11:50:46+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}
{"level":"info","component":"server","time":"2025-01-19T11:59:08+08:00","caller":"ioc/server/server.go:101","message":"receive signal 'interrupt', start graceful shutdown"}
{"level":"info","component":"http","time":"2025-01-19T11:59:08+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
{"level":"error","component":"http","time":"2025-01-19T11:59:08+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
{"level":"info","component":"server","time":"2025-01-19T11:59:08+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
{"level":"info","component":"gin_webframework","time":"2025-01-19T11:59:10+08:00","caller":"config/gin/framework.go:41","message":"enable gin recovery"}
{"level":"debug","time":"2025-01-19T11:59:10+08:00","caller":"token/impl/impl.go:39","message":"DefaultExpiredTTL: 3600"}
{"level":"info","component":"server","time":"2025-01-19T11:59:10+08:00","caller":"ioc/server/server.go:74","message":"loaded configs: [app.v1 trace.v1 log.v1 validator.v1 gin_webframework.v1 datasource.v1 grpc.v1 http.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:10+08:00","caller":"ioc/server/server.go:75","message":"loaded controllers: [token.v1 user.v1 blog.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:10+08:00","caller":"ioc/server/server.go:76","message":"loaded apis: [blogs.v1 tokens.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:10+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
{"level":"info","component":"http","time":"2025-01-19T11:59:10+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}
{"level":"info","component":"server","time":"2025-01-19T11:59:42+08:00","caller":"ioc/server/server.go:101","message":"receive signal 'interrupt', start graceful shutdown"}
{"level":"info","component":"http","time":"2025-01-19T11:59:42+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
{"level":"error","component":"http","time":"2025-01-19T11:59:42+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
{"level":"info","component":"server","time":"2025-01-19T11:59:42+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
{"level":"info","component":"gin_webframework","time":"2025-01-19T11:59:44+08:00","caller":"config/gin/framework.go:41","message":"enable gin recovery"}
{"level":"debug","time":"2025-01-19T11:59:44+08:00","caller":"token/impl/impl.go:39","message":"DefaultExpiredTTL: 3600"}
{"level":"info","component":"server","time":"2025-01-19T11:59:44+08:00","caller":"ioc/server/server.go:74","message":"loaded configs: [app.v1 trace.v1 log.v1 validator.v1 gin_webframework.v1 datasource.v1 grpc.v1 http.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:44+08:00","caller":"ioc/server/server.go:75","message":"loaded controllers: [token.v1 user.v1 blog.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:44+08:00","caller":"ioc/server/server.go:76","message":"loaded apis: [blogs.v1 tokens.v1]"}
{"level":"info","component":"server","time":"2025-01-19T11:59:44+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
{"level":"info","component":"http","time":"2025-01-19T11:59:44+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}

View File

@ -11,6 +11,12 @@ export const QUERY_BLOG = (params) =>
params,
})
export const DESCRIBE_BLOG = (blog_id) =>
client({
url: `/api/vblog/v1/blogs/${blog_id}`,
method: 'GET',
})
export const CREATE_BLOG = (data) =>
client({
url: '/api/vblog/v1/blogs',

View File

@ -37,12 +37,11 @@
</template>
<script setup>
import { reactive, ref, useTemplateRef } from 'vue';
import { onMounted, reactive, ref, useTemplateRef } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { MdEditor } from 'md-editor-v3';
import 'md-editor-v3/lib/style.css';
import { CREATE_BLOG } from '@/api/blog'
import { CREATE_BLOG, DESCRIBE_BLOG, UPDATE_BLOG } from '@/api/blog'
const formInstance = useTemplateRef("formRef")
@ -51,6 +50,13 @@ const route = useRoute()
const isEdit = ref(route.query.id ? true : false)
const router = useRouter()
onMounted(async () => {
if (isEdit.value) {
const resp = await DESCRIBE_BLOG(route.query.id)
Object.assign(form, { ...resp })
}
})
const form = reactive({
title: '',
@ -65,6 +71,16 @@ const saveLoading = ref(false)
const save = () => {
if (isEdit.value) {
//
formInstance.value.validate(async (errors) => {
if (errors === undefined) {
try {
saveLoading.value = true
await UPDATE_BLOG(route.query.id, form)
} finally {
saveLoading.value = false
}
}
})
} else {
//
// formInstance.validate()