Skip to content

Commit 9a60489

Browse files
committed
initial commit
0 parents  commit 9a60489

File tree

4 files changed

+353
-0
lines changed

4 files changed

+353
-0
lines changed

database.db

28 KB
Binary file not shown.

go.mod

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
module main
2+
3+
go 1.20
4+
5+
require (
6+
github.com/gin-gonic/gin v1.9.1
7+
gorm.io/driver/sqlite v1.5.2
8+
gorm.io/gorm v1.25.2
9+
)
10+
11+
require (
12+
github.com/bytedance/sonic v1.9.1 // indirect
13+
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
14+
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
15+
github.com/gin-contrib/sse v0.1.0 // indirect
16+
github.com/go-playground/locales v0.14.1 // indirect
17+
github.com/go-playground/universal-translator v0.18.1 // indirect
18+
github.com/go-playground/validator/v10 v10.14.0 // indirect
19+
github.com/goccy/go-json v0.10.2 // indirect
20+
github.com/jinzhu/inflection v1.0.0 // indirect
21+
github.com/jinzhu/now v1.1.5 // indirect
22+
github.com/json-iterator/go v1.1.12 // indirect
23+
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
24+
github.com/leodido/go-urn v1.2.4 // indirect
25+
github.com/mattn/go-isatty v0.0.19 // indirect
26+
github.com/mattn/go-sqlite3 v1.14.17 // indirect
27+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
28+
github.com/modern-go/reflect2 v1.0.2 // indirect
29+
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
30+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
31+
github.com/ugorji/go/codec v1.2.11 // indirect
32+
golang.org/x/arch v0.3.0 // indirect
33+
golang.org/x/crypto v0.9.0 // indirect
34+
golang.org/x/net v0.10.0 // indirect
35+
golang.org/x/sys v0.8.0 // indirect
36+
golang.org/x/text v0.9.0 // indirect
37+
google.golang.org/protobuf v1.30.0 // indirect
38+
gopkg.in/yaml.v3 v3.0.1 // indirect
39+
)

go.sum

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
2+
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
3+
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
4+
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
5+
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
6+
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
7+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
8+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
9+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
10+
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
11+
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
12+
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
13+
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
14+
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
15+
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
16+
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
17+
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
18+
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
19+
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
20+
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
21+
github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js=
22+
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
23+
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
24+
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
25+
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
26+
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
27+
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
28+
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
29+
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
30+
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
31+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
32+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
33+
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
34+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
35+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
36+
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
37+
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
38+
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
39+
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
40+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
41+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
42+
github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
43+
github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
44+
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
45+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
46+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
47+
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
48+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
49+
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
50+
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
51+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
52+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
53+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
54+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
55+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
56+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
57+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
58+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
59+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
60+
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
61+
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
62+
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
63+
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
64+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
65+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
66+
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
67+
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
68+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
69+
golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
70+
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
71+
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
72+
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
73+
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
74+
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
75+
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
76+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
77+
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
78+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
79+
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
80+
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
81+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
82+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
83+
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
84+
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
85+
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
86+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
87+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
88+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
89+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
90+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
91+
gorm.io/driver/sqlite v1.5.2 h1:TpQ+/dqCY4uCigCFyrfnrJnrW9zjpelWVoEVNy5qJkc=
92+
gorm.io/driver/sqlite v1.5.2/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4=
93+
gorm.io/gorm v1.25.2 h1:gs1o6Vsa+oVKG/a9ElL3XgyGfghFfkKA2SInQaCyMho=
94+
gorm.io/gorm v1.25.2/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
95+
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

main.go

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
package main
2+
3+
import (
4+
"strconv"
5+
6+
"github.com/gin-gonic/gin"
7+
"gorm.io/driver/sqlite"
8+
"gorm.io/gorm"
9+
)
10+
11+
type User struct {
12+
ID uint `gorm:"primaryKey"`
13+
Username string `gorm:"unique"`
14+
Password string
15+
}
16+
17+
type Location struct {
18+
ID uint `gorm:"primaryKey"`
19+
Name string
20+
Description string
21+
}
22+
23+
type Record struct {
24+
ID uint `gorm:"primaryKey"`
25+
UserID uint
26+
LocationID uint
27+
Date string
28+
}
29+
30+
type Token struct {
31+
ID uint `gorm:"primaryKey"`
32+
UserID uint
33+
Token string `gorm:"unique"`
34+
CreatedAt int64
35+
}
36+
37+
func main() {
38+
db, err := gorm.Open(sqlite.Open("database.db"), &gorm.Config{})
39+
if err != nil {
40+
panic("failed to connect database")
41+
}
42+
43+
// Auto Migrate
44+
db.AutoMigrate(&User{}, &Location{}, &Record{}, &Token{})
45+
46+
r := gin.Default()
47+
48+
// 用户注册接口
49+
r.POST("/register", func(c *gin.Context) {
50+
var request struct {
51+
Username string `json:"username"`
52+
Password string `json:"password"`
53+
}
54+
if err := c.ShouldBindJSON(&request); err != nil {
55+
c.JSON(400, gin.H{"code": 1, "message": "参数错误"})
56+
return
57+
}
58+
59+
user := User{
60+
Username: request.Username,
61+
Password: request.Password,
62+
}
63+
if err := db.Create(&user).Error; err != nil {
64+
c.JSON(400, gin.H{"code": 1, "message": "用户名已存在"})
65+
return
66+
}
67+
68+
c.JSON(200, gin.H{"code": 0, "message": "注册成功"})
69+
})
70+
71+
// 用户登录接口
72+
r.POST("/login", func(c *gin.Context) {
73+
var request struct {
74+
Username string `json:"username"`
75+
Password string `json:"password"`
76+
}
77+
if err := c.ShouldBindJSON(&request); err != nil {
78+
c.JSON(400, gin.H{"code": 1, "message": "参数错误"})
79+
return
80+
}
81+
82+
var user User
83+
if err := db.Where("username = ?", request.Username).First(&user).Error; err != nil {
84+
c.JSON(400, gin.H{"code": 1, "message": "用户名或密码错误"})
85+
return
86+
}
87+
88+
if user.Password != request.Password {
89+
c.JSON(400, gin.H{"code": 1, "message": "用户名或密码错误"})
90+
return
91+
}
92+
93+
var token Token
94+
if err := db.Where("user_id = ?", user.ID).FirstOrCreate(&token).Error; err != nil {
95+
c.JSON(400, gin.H{"code": 1, "message": "无法生成token"})
96+
return
97+
}
98+
99+
c.JSON(200, gin.H{"code": 0, "message": "登录成功", "token": token.Token})
100+
})
101+
102+
// 用户获取个人信息接口
103+
r.POST("/userinfo", func(c *gin.Context) {
104+
token := c.PostForm("token")
105+
106+
var user User
107+
if err := db.Preload("Record").Where("token = ?", token).First(&user).Error; err != nil {
108+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
109+
return
110+
}
111+
112+
c.JSON(200, gin.H{"code": 0, "message": "获取个人信息成功", "data": user})
113+
})
114+
115+
// 用户修改个人信息接口
116+
r.POST("/updateuserinfo", func(c *gin.Context) {
117+
token := c.PostForm("token")
118+
username := c.PostForm("username")
119+
120+
var user User
121+
if err := db.Model(&user).Where("token = ?", token).Update("username", username).Error; err != nil {
122+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
123+
return
124+
}
125+
126+
c.JSON(200, gin.H{"code": 0, "message": "修改个人信息成功"})
127+
})
128+
129+
// 预约地点搜索接口
130+
r.POST("/searchlocation", func(c *gin.Context) {
131+
token := c.PostForm("token")
132+
keyword := c.PostForm("keyword")
133+
134+
var user User
135+
if err := db.Where("token = ?", token).First(&user).Error; err != nil {
136+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
137+
return
138+
}
139+
140+
var locations []Location
141+
if err := db.Where("name LIKE ?", "%"+keyword+"%").Find(&locations).Error; err != nil {
142+
c.JSON(400, gin.H{"code": 1, "message": "搜索失败"})
143+
return
144+
}
145+
146+
c.JSON(200, gin.H{"code": 0, "message": "搜索成功", "data": locations})
147+
})
148+
149+
// 用户预约接口
150+
r.POST("/reservation", func(c *gin.Context) {
151+
token := c.PostForm("token")
152+
locationID := c.PostForm("location_id")
153+
date := c.PostForm("date")
154+
155+
var user User
156+
if err := db.Where("token = ?", token).First(&user).Error; err != nil {
157+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
158+
return
159+
}
160+
161+
var record Record
162+
record.UserID = user.ID
163+
locationIDUint, err := strconv.ParseUint(locationID, 10, 32)
164+
if err != nil {
165+
// Handle the error if the conversion fails
166+
}
167+
record.LocationID = uint(locationIDUint)
168+
record.Date = date
169+
170+
if err := db.Create(&record).Error; err != nil {
171+
c.JSON(400, gin.H{"code": 1, "message": "预约失败"})
172+
return
173+
}
174+
175+
c.JSON(200, gin.H{"code": 0, "message": "预约成功", "data": record})
176+
})
177+
178+
// 预约记录搜索接口
179+
r.POST("/searchrecord", func(c *gin.Context) {
180+
token := c.PostForm("token")
181+
keyword := c.PostForm("keyword")
182+
183+
var user User
184+
if err := db.Where("token = ?", token).First(&user).Error; err != nil {
185+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
186+
return
187+
}
188+
189+
var records []Record
190+
if err := db.Where("date LIKE ? OR location_id LIKE ?", "%"+keyword+"%", "%"+keyword+"%").Find(&records).Error; err != nil {
191+
c.JSON(400, gin.H{"code": 1, "message": "搜索失败"})
192+
return
193+
}
194+
195+
c.JSON(200, gin.H{"code": 0, "message": "搜索成功", "data": records})
196+
})
197+
198+
// 预约地信息查询接口
199+
r.POST("/locationinfo", func(c *gin.Context) {
200+
token := c.PostForm("token")
201+
locationID := c.PostForm("location_id")
202+
203+
var user User
204+
if err := db.Where("token = ?", token).First(&user).Error; err != nil {
205+
c.JSON(400, gin.H{"code": 1, "message": "身份验证失败"})
206+
return
207+
}
208+
209+
var location Location
210+
if err := db.Where("id = ?", locationID).First(&location).Error; err != nil {
211+
c.JSON(400, gin.H{"code": 1, "message": "查询失败"})
212+
return
213+
}
214+
215+
c.JSON(200, gin.H{"code": 0, "message": "查询成功", "data": location})
216+
})
217+
218+
r.Run()
219+
}

0 commit comments

Comments
 (0)