gin vue admin 定时任务 怎么写
时间: 2023-05-27 21:06:52 浏览: 294
以下是在 Gin Vue Admin 中创建定时任务的基本步骤:
1. 在后端(Gin)中定义定时任务的接口路由
```go
// 定义定时任务接口路由
router.POST("/api/v1/tasks", task.CreateTask)
```
2. 在后端控制器中实现创建定时任务的逻辑
```go
func CreateTask(c *gin.Context) {
// 从请求中获取定时任务的信息
var task models.Task
if err := c.ShouldBindJSON(&task); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
// 写入数据库,创建定时任务
db.Create(&task)
// 返回创建成功的信息
c.JSON(http.StatusOK, gin.H{"status": "success"})
}
```
3. 在前端(Vue)中实现创建定时任务的界面和逻辑
```vue
<template>
<div>
<h2>Create Task</h2>
<form @submit.prevent="createTask">
<div>
<label for="name">Name:</label>
<input type="text" id="name" v-model="task.name" required>
</div>
<div>
<label for="cron">Cron:</label>
<input type="text" id="cron" v-model="task.cron" required>
</div>
<div>
<button type="submit">Create</button>
</div>
</form>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
task: {
name: '',
cron: '',
},
}
},
methods: {
createTask() {
axios.post('/api/v1/tasks', this.task)
.then(response => {
console.log(response.data)
alert('Task created successfully')
})
.catch(error => {
console.log(error)
alert('Failed to create task')
})
},
},
}
</script>
```
4. 在前端(Vue)中实现定时任务列表的界面和逻辑
```vue
<template>
<div>
<h2>Task List</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Cron</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr v-for="task in tasks" :key="task.id">
<td>{{ task.name }}</td>
<td>{{ task.cron }}</td>
<td>
<button @click="runTask(task.id)">Run</button>
<button @click="deleteTask(task.id)">Delete</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
tasks: [],
}
},
mounted() {
this.getTasks()
},
methods: {
getTasks() {
axios.get('/api/v1/tasks')
.then(response => {
console.log(response.data)
this.tasks = response.data
})
.catch(error => {
console.log(error)
alert('Failed to get tasks')
})
},
runTask(id) {
axios.post(`/api/v1/tasks/${id}/run`)
.then(response => {
console.log(response.data)
alert('Task executed successfully')
})
.catch(error => {
console.log(error)
alert('Failed to execute task')
})
},
deleteTask(id) {
axios.delete(`/api/v1/tasks/${id}`)
.then(response => {
console.log(response.data)
this.getTasks()
})
.catch(error => {
console.log(error)
alert('Failed to delete task')
})
},
},
}
</script>
```
5. 在后端控制器中实现获取定时任务列表、运行定时任务和删除定时任务的逻辑
```go
func GetTasks(c *gin.Context) {
// 从数据库中获取所有的定时任务
var tasks []models.Task
db.Find(&tasks)
// 返回定时任务列表
c.JSON(http.StatusOK, tasks)
}
func RunTask(c *gin.Context) {
// 获取定时任务的 ID
id := c.Param("id")
// 根据 ID 从数据库中获取定时任务
var task models.Task
db.First(&task, id)
// 执行定时任务
// ...
// 返回执行成功的信息
c.JSON(http.StatusOK, gin.H{"status": "success"})
}
func DeleteTask(c *gin.Context) {
// 获取定时任务的 ID
id := c.Param("id")
// 根据 ID 从数据库中删除定时任务
db.Delete(&models.Task{}, id)
// 返回删除成功的信息
c.JSON(http.StatusOK, gin.H{"status": "success"})
}
```
注意:定时任务的具体实现需要根据业务逻辑进行编写,此处仅为示例代码。
阅读全文