clllll  

修修改改成为自己想要的

七米老师的 :https://github.com/Q1mi/bubble

gifts_for_you

就是送的礼物的 记录
字段包括 时间、礼物、文字

先运行起来

1、创建数据库 配置连接数据的用户密码

CREATE DATABASE bubble DEFAULT CHARSET=utf8mb4;

conf/config.ini

port = 9000
release = false
[mysql]
user = root
password = root
host = 127.0.0.1
port = 3306
db = bubble

2、编译运行

go build
.\bubble.exe conf/config.ini
image

表自动就创建好了
image

3、访问

image
image

可以访问,说明环境没问题。改一下model成为咱要的字段就可以了。

阅读源代码

1、从main.go开始

package main
import (
"fmt"
"gifts_for_you/dao"
"gifts_for_you/models"
"gifts_for_you/routers"
"gifts_for_you/setting"
"os"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: ./gifts_for_you conf/config.ini")
return
}
// 加载配置文件
if err := setting.Init(os.Args[1]); err != nil {
fmt.Printf("load config from file failed, err:%v\n", err)
return
}
// 创建数据库
// sql: CREATE DATABASE bubble;
// 连接数据库
err := dao.InitMySQL(setting.Conf.MySQLConfig)
if err != nil {
fmt.Printf("init mysql failed, err:%v\n", err)
return
}
defer dao.Close() // 程序退出关闭数据库连接
// 模型绑定
dao.DB.AutoMigrate(&models.Todo{})
// 注册路由
r := routers.SetupRouter()
if err := r.Run(fmt.Sprintf(":%d", setting.Conf.Port)); err != nil {
fmt.Printf("server startup failed, err:%v\n", err)
}
}

整个流程就是 执行启动需要一个ini配置文件(数据库的信息),然后会连接数据库,然后创建表。然后配置 url和函数的映射。

2、要修改前台。还是要用vue. 不然不好改。

image

https://github.com/Q1mi/bubble_frontend
先把前台运行起来。
image

image

连不上后台。报错
Proxy error: Could not proxy request /v1/todo from localhost:8080 to http://127.0.0.1:9000.

破案了,打开前台代码把后台的窗口关了。

image

现在好了。可以正常访问。
image

开始修改

model改成咱要用的字段。类名先不改。

type Todo struct {
ID int `json:"id"`
Title string `json:"title"`
Status bool `json:"status"`
Type string `json:"type"`
Text string `json:"text"`
Date time.Time `json:"date"`
To string `json:"to"`
}

修改之后启动。表自动创建好了
image

修改前台 界面,基本的

image

bug1,除了原来的待办事项能输入,其他的都输入不了。

image

先用postman测试后端

image

时间不对。修改为 sql.NullTime
image

数据库的数据不太对。
image

form表单格式不对。应该是json。哈哈
image

image

查询

时间不对,还得改一下。
image

修改

image

image

日期格式

我只要想要 年月日,需要格式化啥的。咱简单点。搞成字符串。
image

image

至此 后端没啥问题了。

前端

1、从element ui 挑一个模板,表格类型,

image

mounted来获取数据

mounted() {
this.axios
.get("/v1/todo")
.then(response => (this.tableData = response.data));
},

2、添加礼物表单

image

bug:select value 为汉字不行。得用英文,简单点,改成 用户自己输入把。不选择了。
image

image

能正确显示,就这样吧
image

<template>
<el-form ref="form" :model="sizeForm" label-width="80px" size="mini">
<el-form-item label="送礼人">
<el-input v-model="sizeForm.from"></el-input>
</el-form-item>
<el-form-item label="收礼人">
<el-input v-model="sizeForm.to"></el-input>
</el-form-item>
<el-form-item label="送礼时间">
<el-col :span="11">
<el-date-picker type="date" value-format="yyyy-MM-dd" placeholder="选择日期" v-model="sizeForm.date" style="width: 100%;"></el-date-picker>
</el-col>
</el-form-item>
<el-form-item label="礼物类型">
<el-input v-model="sizeForm.type" placeholder="父亲节、母亲节、情人节等等"></el-input>
</el-form-item>
<el-form-item label="礼物">
<el-input v-model="sizeForm.gift"></el-input>
</el-form-item>
<el-form-item label="留言">
<el-input type="textarea" v-model="sizeForm.text"></el-input>
</el-form-item>
<el-form-item size="large">
<el-button type="primary" @click="onSubmit">添加</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
sizeForm: {
from: this.from,
to: this.to,
date: this.date,
type: this.type,
gift: this.gift,
text: this.text
}
};
},
methods: {
onSubmit() {
this.axios
.post("/v1/todo", {
from: this.sizeForm.from,
to: this.sizeForm.to,
date: this.sizeForm.date,
type: this.sizeForm.type,
gift: this.sizeForm.gift,
text: this.sizeForm.text
})
.then(() => {
this.$message({
showClose: true,
duration: 1500,
message: "添加礼物成功",
type: "success"
});
});
}
}
};
</script>
<template>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
label="送礼人"
prop="from">
</el-table-column>
<el-table-column
label="接收者"
prop="to">
</el-table-column>
<el-table-column
label="送礼时间"
prop="date">
</el-table-column>
<el-table-column
label="礼物类型"
prop="type">
</el-table-column>
<el-table-column
label="礼物"
prop="gift">
</el-table-column>
<el-table-column
label="留言"
prop="text">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
"id": 1,
"title": "title1",
"status": false,
"type": "父亲节",
"text": "happy Day",
"date": "2023-04-09",
"from": "lzl",
"to": "mother",
"gift": "围巾"
}],
search: ''
}
},
mounted() {
this.axios
.get("/v1/todo")
.then(response => (this.tableData = response.data));
},
methods: {
handleEdit() {
},
handleDelete() {
}
},
}
</script>
礼物后期有时间改成上传图片的。
posted on   llcl  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
 
点击右上角即可分享
微信分享提示