Skip to content

Commit 4c2364c

Browse files
committed
feat: finish task
1 parent 2102ded commit 4c2364c

File tree

11 files changed

+656
-0
lines changed

11 files changed

+656
-0
lines changed

hkr0101/AI_answer/aianswer.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package aianswer
2+
3+
import (
4+
"context"
5+
"github.com/gin-gonic/gin"
6+
"github.com/sashabaranov/go-openai"
7+
"log"
8+
"net/http"
9+
"os"
10+
)
11+
12+
// ChatGPT处理函数
13+
func ChatGPTHandler(c *gin.Context) {
14+
var req struct {
15+
Prompt string `json:"prompt"`
16+
}
17+
// 绑定JSON输入
18+
if err := c.ShouldBindJSON(&req); err != nil {
19+
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid input"})
20+
return
21+
}
22+
23+
// 从环境变量中获取API密钥
24+
apiKey := os.Getenv("OPENAI_API_KEY")
25+
if apiKey == "" {
26+
log.Fatal("API Key not set")
27+
}
28+
29+
// 初始化 OpenAI 客户端
30+
client := openai.NewClient(apiKey)
31+
32+
// 调用 OpenAI API
33+
resp, err := client.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{
34+
Model: openai.GPT3Dot5Turbo, // 或者其他模型
35+
Messages: []openai.ChatCompletionMessage{
36+
{
37+
Role: openai.ChatMessageRoleUser,
38+
Content: req.Prompt,
39+
},
40+
},
41+
})
42+
43+
if err != nil {
44+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to communicate with ChatGPT"})
45+
return
46+
}
47+
48+
// 返回 ChatGPT 的回复
49+
c.JSON(http.StatusOK, gin.H{"response": resp.Choices[0].Message.Content})
50+
}

hkr0101/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# 简单的代码说明
2+
实现了账户的注册、登录、登出,其中在储存密码时运用了简单的哈希函数。给予了admin
3+
账号足够的权限。
4+
实现了在登录情况下添加、删除、修改、查看自己的问题,以
5+
及在所有的情况下查看所有/特定问题。在登录情况下添加、删除、修改、查看自
6+
己的答案,以及在所有的情况下查看某一个问题的答案
7+
一个小翻页,默认在显示一系列答案或者问题时每页20条内容
8+
在github上找到了一个关于调用chatgpt的项目用于生成ai答案,但是由于
9+
我没有国外的手机号,无法获得chatgpt的key,这个内容仅仅停留在未测试可行性
10+
* main.go是主程序
11+
* routes中的是操作中涉及的函数
12+
* mymodels中是三个实体Question、User、Answer
13+
* myauth中是登录与登出的操作
14+
* db中的是连接数据库以及在数据库中自动生成实体
15+
* AI_answer中便是前文中提到的尚未完成的ai生成答案部分
16+
api文档:https://apifox.com/apidoc/shared-86117e10-c314-4e57-a13f-494295b93689

hkr0101/db/database.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package db
2+
3+
import (
4+
"Initial_Experience/myModels"
5+
"gorm.io/driver/mysql"
6+
"gorm.io/gorm"
7+
"log"
8+
)
9+
10+
var DB *gorm.DB
11+
12+
// 数据库的连接
13+
func Connect() {
14+
var err error
15+
dsn := "root:123456@tcp(localhost:3306)/initial_experience"
16+
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
17+
if err != nil {
18+
log.Fatal("Failed to connect to the database:", err)
19+
} else {
20+
log.Println("Successfully connected to the database")
21+
}
22+
}
23+
24+
// 自动迁移模型
25+
func Migrate() {
26+
err := DB.AutoMigrate(&mymodels.User{}, &mymodels.Question{}, &mymodels.Answer{})
27+
if err != nil {
28+
log.Fatal("Migration failed:", err)
29+
}
30+
}

hkr0101/go.mod

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
module Initial_Experience
2+
3+
go 1.23.1
4+
5+
require (
6+
filippo.io/edwards25519 v1.1.0 // indirect
7+
github.com/bytedance/sonic v1.12.3 // indirect
8+
github.com/bytedance/sonic/loader v0.2.0 // indirect
9+
github.com/cloudwego/base64x v0.1.4 // indirect
10+
github.com/cloudwego/iasm v0.2.0 // indirect
11+
github.com/gabriel-vasile/mimetype v1.4.5 // indirect
12+
github.com/gin-contrib/sse v0.1.0 // indirect
13+
github.com/gin-gonic/gin v1.10.0 // indirect
14+
github.com/go-playground/locales v0.14.1 // indirect
15+
github.com/go-playground/universal-translator v0.18.1 // indirect
16+
github.com/go-playground/validator/v10 v10.22.1 // indirect
17+
github.com/go-sql-driver/mysql v1.8.1 // indirect
18+
github.com/goccy/go-json v0.10.3 // indirect
19+
github.com/jinzhu/inflection v1.0.0 // indirect
20+
github.com/jinzhu/now v1.1.5 // indirect
21+
github.com/json-iterator/go v1.1.12 // indirect
22+
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
23+
github.com/leodido/go-urn v1.4.0 // indirect
24+
github.com/mattn/go-isatty v0.0.20 // indirect
25+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
26+
github.com/modern-go/reflect2 v1.0.2 // indirect
27+
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
28+
github.com/sashabaranov/go-openai v1.31.0 // indirect
29+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
30+
github.com/ugorji/go/codec v1.2.12 // indirect
31+
golang.org/x/arch v0.10.0 // indirect
32+
golang.org/x/crypto v0.27.0 // indirect
33+
golang.org/x/net v0.29.0 // indirect
34+
golang.org/x/sys v0.25.0 // indirect
35+
golang.org/x/text v0.18.0 // indirect
36+
google.golang.org/protobuf v1.34.2 // indirect
37+
gopkg.in/yaml.v3 v3.0.1 // indirect
38+
gorm.io/driver/mysql v1.5.7 // indirect
39+
gorm.io/gorm v1.25.12 // indirect
40+
)

hkr0101/go.sum

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
2+
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
3+
github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU=
4+
github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
5+
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
6+
github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
7+
github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
8+
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
9+
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
10+
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
11+
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
12+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
13+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14+
github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
15+
github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
16+
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
17+
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
18+
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
19+
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
20+
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
21+
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
22+
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
23+
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
24+
github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
25+
github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
26+
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
27+
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
28+
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
29+
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
30+
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
31+
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
32+
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
33+
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
34+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
35+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
36+
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
37+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
38+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
39+
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
40+
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
41+
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
42+
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
43+
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
44+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
45+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
46+
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
47+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
48+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
49+
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
50+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
51+
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
52+
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
53+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
54+
github.com/sashabaranov/go-openai v1.31.0 h1:rGe77x7zUeCjtS2IS7NCY6Tp4bQviXNMhkQM6hz/UC4=
55+
github.com/sashabaranov/go-openai v1.31.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
56+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
57+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
58+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
59+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
60+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
61+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
62+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
63+
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
64+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
65+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
66+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
67+
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
68+
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
69+
golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8=
70+
golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
71+
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
72+
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
73+
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
74+
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
75+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
76+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
77+
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
78+
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
79+
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
80+
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
81+
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
82+
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
83+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
84+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
85+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
86+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
87+
gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
88+
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
89+
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
90+
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
91+
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
92+
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
93+
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

hkr0101/main.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package main
2+
3+
import (
4+
"Initial_Experience/AI_answer"
5+
"Initial_Experience/db"
6+
"Initial_Experience/myauth"
7+
"Initial_Experience/routes"
8+
"github.com/gin-gonic/gin"
9+
)
10+
11+
func main() {
12+
r := gin.Default()
13+
db.Connect()
14+
db.Migrate()
15+
//用户注册
16+
r.POST("/register", myauth.RegisterHandler)
17+
// 用户登录
18+
r.POST("/login", myauth.LoginHandler)
19+
// 用户登出
20+
r.POST("/logout", myauth.LogoutHandler)
21+
// 问题管理
22+
23+
//查看所有问题
24+
r.GET("/questions", routes.GetQuestions)
25+
//查看某个问题
26+
r.GET("/questions/:question_id", routes.GetQuestionByID)
27+
//查看某个问题的所有答案
28+
r.GET("/questions/:question_id/answer", routes.GetAnswerListByQuestion)
29+
//查看某个问题的某个答案
30+
r.GET("/questions/answer/:answer_id", routes.GetAnswerByID)
31+
32+
auth := r.Group("/my")
33+
auth.Use(myauth.AuthMiddleware()) // 使用身份验证中间件
34+
{
35+
//创建问题
36+
auth.POST("/questions", routes.CreateQuestion)
37+
//创建答案
38+
auth.POST("/questions/:question_id/answer", routes.CreateAnswer)
39+
//删除问题
40+
auth.DELETE("/questions/:question_id", routes.DeleteQuestion)
41+
//删除答案
42+
auth.DELETE("/questions/answer/:answer_id", routes.DeleteAnswer)
43+
//更新问题
44+
auth.PUT("/questions/:question_id", routes.UpdateQuestion)
45+
//更新答案
46+
auth.PUT("/:answer_id", routes.UpdateAnswer)
47+
//给出当前用户的所有答案
48+
auth.GET("/answer", routes.GetAnswerListByUser)
49+
//给出当前用户的所有问题
50+
auth.GET("/questions", routes.GetQuestionByUser)
51+
//登出
52+
auth.POST("/logout", myauth.LogoutHandler)
53+
//调用ai,未完成
54+
auth.POST("/chat", aianswer.ChatGPTHandler)
55+
}
56+
r.Run(":8080")
57+
}

hkr0101/myModels/mymodels.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package mymodels
2+
3+
// Question 结构体
4+
type Question struct {
5+
QuestionID int `json:"question_id" gorm:"primaryKey;autoIncrement"`
6+
Content string `json:"content" binding:"required"`
7+
Status string `json:"status" binding:"required"`
8+
Name string `json:"name" binding:"required"`
9+
UserID int `json:"user_id"` // 外键,关联用户
10+
}
11+
12+
// User 结构体
13+
type User struct {
14+
UserID int `json:"user_id" gorm:"primaryKey;autoIncrement"`
15+
Username string `json:"username" binding:"required"`
16+
Password string `json:"password" binding:"required"`
17+
}
18+
19+
type Answer struct {
20+
AnswerID int `json:"answer_id" gorm:"primaryKey;autoIncrement"`
21+
Content string `json:"content" binding:"required"`
22+
QuestionID int `json:"question_id"` // 外键,关联问题
23+
UserID int `json:"user_id"` // 外键,关联用户
24+
}

0 commit comments

Comments
 (0)