From 630e74872fde8f5f49cfe0ab3a25304be8bdb483 Mon Sep 17 00:00:00 2001 From: MingWangSong <1397472492@qq.com> Date: Thu, 28 Jul 2022 22:13:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/query_page_info.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/query_page_info.go b/service/query_page_info.go index 5e31214..3173645 100644 --- a/service/query_page_info.go +++ b/service/query_page_info.go @@ -93,9 +93,9 @@ func (f *QueryPageInfoFlow) prepareInfo() error { return postErr } //获取用户信息 - uids := []int64{f.topic.Id} + uids := []int64{f.topic.UserId} for _, post := range f.posts { - uids = append(uids, post.Id) + uids = append(uids, post.UserId) } userMap, err := repository.NewUserDaoInstance().MQueryUserById(uids) if err != nil { From bb63801f13abb3e29619c8a75e7fcdbfa6140240 Mon Sep 17 00:00:00 2001 From: Songmw <1397472492@qq.com> Date: Mon, 16 Jan 2023 20:59:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=9D=92=E8=AE=AD=E8=90=A5=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- repository/db_init.go | 3 ++- repository/topic.go | 2 ++ service/publish_post.go | 1 + service/query_page_info.go | 13 +++++++++---- sever.go | 13 +++++++------ 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/repository/db_init.go b/repository/db_init.go index 845798c..a7a9c8b 100644 --- a/repository/db_init.go +++ b/repository/db_init.go @@ -9,7 +9,8 @@ var db *gorm.DB func Init() error { var err error - dsn := "root:00000000@tcp(127.0.0.1:3306)/community?charset=utf8mb4&parseTime=True&loc=Local" + // user:password@tcp(127.0.0.1:3306) + dsn := "root:root@tcp(127.0.0.1:3306)/community?charset=utf8mb4&parseTime=True&loc=Local" db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) return err } diff --git a/repository/topic.go b/repository/topic.go index 4441814..ec92e07 100644 --- a/repository/topic.go +++ b/repository/topic.go @@ -24,7 +24,9 @@ type TopicDao struct { var topicDao *TopicDao var topicOnce sync.Once +// topicDao初始化 func NewTopicDaoInstance() *TopicDao { + // 只执行一次 topicOnce.Do( func() { topicDao = &TopicDao{} diff --git a/service/publish_post.go b/service/publish_post.go index 6056adb..a8e7d71 100644 --- a/service/publish_post.go +++ b/service/publish_post.go @@ -37,6 +37,7 @@ func (f *PublishPostFlow) Do() (int64, error) { return f.postId, nil } +// 参数验证,需增加业务逻辑验证(判断用户是否存在,对应topic是否存在) func (f *PublishPostFlow) checkParam() error { if f.userId <= 0 { return errors.New("userId id must be larger than 0") diff --git a/service/query_page_info.go b/service/query_page_info.go index 3173645..783c217 100644 --- a/service/query_page_info.go +++ b/service/query_page_info.go @@ -26,6 +26,7 @@ func QueryPageInfo(topicId int64) (*PageInfo, error) { return NewQueryPageInfoFlow(topicId).Do() } +// 新建QueryPageInfoFlow结构体 func NewQueryPageInfoFlow(topId int64) *QueryPageInfoFlow { return &QueryPageInfoFlow{ topicId: topId, @@ -35,19 +36,22 @@ func NewQueryPageInfoFlow(topId int64) *QueryPageInfoFlow { type QueryPageInfoFlow struct { topicId int64 pageInfo *PageInfo - + // 数据库对于DO topic *repository.Topic posts []*repository.Post userMap map[int64]*repository.User } func (f *QueryPageInfoFlow) Do() (*PageInfo, error) { + // 校验参数 if err := f.checkParam(); err != nil { return nil, err } + // 查询初始信息 if err := f.prepareInfo(); err != nil { return nil, err } + // 组合页面信息 if err := f.packPageInfo(); err != nil { return nil, err } @@ -62,7 +66,7 @@ func (f *QueryPageInfoFlow) checkParam() error { } func (f *QueryPageInfoFlow) prepareInfo() error { - //获取topic信息 + //根据topicId获取topic信息 var wg sync.WaitGroup wg.Add(2) var topicErr, postErr error @@ -75,7 +79,7 @@ func (f *QueryPageInfoFlow) prepareInfo() error { } f.topic = topic }() - //获取post列表 + //根据topicId获取post列表 go func() { defer wg.Done() posts, err := repository.NewPostDaoInstance().QueryPostByParentId(f.topicId) @@ -97,6 +101,7 @@ func (f *QueryPageInfoFlow) prepareInfo() error { for _, post := range f.posts { uids = append(uids, post.UserId) } + // 查询topic所有相关用户(topic用户和post用户) userMap, err := repository.NewUserDaoInstance().MQueryUserById(uids) if err != nil { return err @@ -112,7 +117,7 @@ func (f *QueryPageInfoFlow) packPageInfo() error { if !ok { return errors.New("has no topic user info") } - //post list + //post list (组建post信息和发post用户信息) postList := make([]*PostInfo, 0) for _, post := range f.posts { postUser, ok := userMap[post.UserId] diff --git a/sever.go b/sever.go index 0cacca2..c129692 100644 --- a/sever.go +++ b/sever.go @@ -9,25 +9,27 @@ import ( ) func main() { - if err := Init(); err != nil { + if Init() != nil { os.Exit(-1) } r := gin.Default() - - r.Use(gin.Logger()) - + // gin.Default()默认添加了日志中间件 + //r.Use(gin.Logger()) + // 测试接口 r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) + // page信息获取接口 r.GET("/community/page/get/:id", func(c *gin.Context) { topicId := c.Param("id") data := handler.QueryPageInfo(topicId) c.JSON(200, data) }) + // 新增post接口 r.POST("/community/post/do", func(c *gin.Context) { uid, _ := c.GetPostForm("uid") topicId, _ := c.GetPostForm("topic_id") @@ -35,8 +37,7 @@ func main() { data := handler.PublishPost(uid, topicId, content) c.JSON(200, data) }) - err := r.Run() - if err != nil { + if r.Run() != nil { return } }