From 170661eb6bb402160ddc980c02943c0a8920199b Mon Sep 17 00:00:00 2001 From: FantasyRL <1845983502@qq.com> Date: Tue, 23 Apr 2024 22:51:45 +0800 Subject: [PATCH] style:optimize the public structure and video_handler --- Makefile | 31 +- README.md | 78 - causal.md | 3 + cmd/api/biz/model/api/api.go | 332 +++- cmd/api/biz/model/base/base.go | 188 --- cmd/interaction/dal/db/comment.go | 10 +- cmd/interaction/service/comment_action.go | 10 +- cmd/interaction/service/service.go | 8 +- cmd/user/handler.go | 14 +- cmd/user/service/service.go | 10 +- cmd/video/dal/db/init.go | 3 +- cmd/video/handler.go | 94 +- cmd/video/rpc/user.go | 4 +- cmd/video/service/list_video.go | 55 +- cmd/video/service/search_video.go | 55 +- cmd/video/service/service.go | 11 +- idl/api.thrift | 37 +- idl/base.thrift | 33 + idl/interaction.thrift | 16 +- idl/user.thrift | 27 +- idl/video.thrift | 20 +- init.sh | 5 +- kitex_gen/base/base.go | 1713 +++++++++++++++++++++ kitex_gen/base/k-base.go | 1395 +++++++++++++++++ kitex_gen/interaction/interaction.go | 504 +----- kitex_gen/interaction/k-interaction.go | 382 +---- kitex_gen/user/k-user.go | 590 +------ kitex_gen/user/user.go | 845 ++-------- kitex_gen/user/userhandler/client.go | 6 +- kitex_gen/user/userhandler/userhandler.go | 32 +- kitex_gen/video/k-video.go | 573 +------ kitex_gen/video/video.go | 725 +-------- pkg/pack/build_api_resp.go | 22 +- start.sh | 8 +- 34 files changed, 3891 insertions(+), 3948 deletions(-) delete mode 100644 README.md create mode 100644 causal.md delete mode 100644 cmd/api/biz/model/base/base.go diff --git a/Makefile b/Makefile index de45c81a..75aff85f 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,10 @@ DIR = $(shell pwd)#pwd:获得当前路径 CONFIG_PATH = $(DIR)/config IDL_PATH = $(DIR)/idl -API_PATH = $(DIR)/cmd/api RPC = $(DIR)/cmd -OUTPUT_PATH = $(DIR)/output -API=api +API_PATH= $(DIR)/cmd/api SHELL=/bin/bash +MODULE= bibi .PHONY: init init: @@ -22,17 +21,29 @@ env-down: SERVICES := api user video interaction service = $(word 1, $@) - .PHONY: $(SERVICES) $(SERVICES): - @echo "$(PERFIX) Automatic run server" \ + go run $(RPC)/$(service) - @if [ $(service) != $(API) ];then \ - go run $(RPC)/$(service) ; fi - @if [ $(service) = $(API) ];then \ - go run $(API_PATH) ; fi .PHONY: build-all build-all: - sh start.sh \ No newline at end of file + sh start.sh + + +KSERVICES := user video interaction +.PHONY: kgen +kgen: + @for kservice in $(KSERVICES); do \ +# sh kitex_update.sh $$kservice; \ + kitex -module ${MODULE} idl/$$kservice.thrift; \ + cd ${RPC};cd $$kservice;kitex -module ${MODULE} -service $$kservice -use bibi/kitex_gen ../../idl/$$kservice.thrift; \ + done \ + echo "done" + +.PHONY: hzgen +hzgen: + cd ${API_PATH}; \ + hz update -idl ${IDL_PATH}/api.thrift; \ + diff --git a/README.md b/README.md deleted file mode 100644 index 7b1a2619..00000000 --- a/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# MyGOWork~~4~~ 5! - -**bibi-demo** is a small video website backend using hertz(hz-gen、jwt、websocket)+gorm(mysql)+redis+oss(aliyun) - -## deploy by host(net=host) - -(由于非常的不会shell,所以build-all很没道理,暂时不会用docker启动rpc) -`快速启动` -```bash -#oss与email的配置需自行填写 -make init -make env-up -make build-all -``` - -使用:将docs/swagger.* 丢到apifox/postman,然后就能用了(**Header:Authorization格式**:Bearer {token}) - -(commit 都是瞎写的不要在意...) - -## 完成情况: -重构=0 - - -## Recent: - -进行rpc重构 - - -目录树生成: -```bash -treer -e tree.txt -i "/.idea|.git|data/" -``` - -## Todo... - -~~在idl中添加optional以优化response(done)~~ - -~~es管理日志(done)~~ - -将会改进comment缓存的逻辑(todo) - -~~将会进行重构rpc以改进混沌的handler层(done)~~ - -将会更加贴合接口文档需求(doing) - -~~将会添加双token(done)~~ - -gormopentracing,Snowflake(todo) - -## 重构相关: -### 0324 -花了一整天学习rpc、kitex-demo、tiktok(west-2 online) - -### 0325 -优化了config(感谢强大的viper),添加了constants包 - -### 0326 -以Register为例: -1. [api/biz/handler/api/user_handler.go](api/biz/handler/api/user_handler.go)暴露api,接收请求,打包发送至中转 -2. [api/biz/rpc](api/biz/rpc)作为中转,向rpc服务器发送请求 -3. [rpc/user/handler.go](rpc/user/handler.go)接收请求,作为rpc服务器中的handler - -### 0330 -* 学了一下用shell自动运行命令(太好用了) - -* 实现了双token:创建了两个hertz_jwt中间件,一个负责access,一个负责refresh,并添加一个用于get access by refresh的接口 - -### 0416 - -* 在video服务接入es,并使用钩子自动上传([参考仓库链接](https://github.com/CocaineCong/eslogrus)) - -* 同时video服务展示了rpc架构下并发远程调用其他服务 - -### 0417 - -* workflow:golangci-lint+CodeQL - -* quick start \ No newline at end of file diff --git a/causal.md b/causal.md new file mode 100644 index 00000000..ef8e3868 --- /dev/null +++ b/causal.md @@ -0,0 +1,3 @@ +MySQL: +* MySQL的安全性: +`Session`, `WithContext`, `Debug` methods return a `*gorm.DB` instance marked as safe for reuse. They base a newly initialized `*gorm.Statement` on the current conditions. \ No newline at end of file diff --git a/cmd/api/biz/model/api/api.go b/cmd/api/biz/model/api/api.go index 8706215a..1fb6d8de 100644 --- a/cmd/api/biz/model/api/api.go +++ b/cmd/api/biz/model/api/api.go @@ -3,12 +3,190 @@ package api import ( - "bibi/cmd/api/biz/model/base" "context" "fmt" "github.com/apache/thrift/lib/go/thrift" ) +type BaseResp struct { + Code int64 `thrift:"code,1" form:"code" json:"code" query:"code"` + Msg string `thrift:"msg,2" form:"msg" json:"msg" query:"msg"` +} + +func NewBaseResp() *BaseResp { + return &BaseResp{} +} + +func (p *BaseResp) GetCode() (v int64) { + return p.Code +} + +func (p *BaseResp) GetMsg() (v string) { + return p.Msg +} + +var fieldIDToName_BaseResp = map[int16]string{ + 1: "code", + 2: "msg", +} + +func (p *BaseResp) Read(iprot thrift.TProtocol) (err error) { + + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.I64 { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_BaseResp[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *BaseResp) ReadField1(iprot thrift.TProtocol) error { + + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + p.Code = v + } + return nil +} +func (p *BaseResp) ReadField2(iprot thrift.TProtocol) error { + + if v, err := iprot.ReadString(); err != nil { + return err + } else { + p.Msg = v + } + return nil +} + +func (p *BaseResp) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("BaseResp"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *BaseResp) writeField1(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("code", thrift.I64, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteI64(p.Code); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} + +func (p *BaseResp) writeField2(oprot thrift.TProtocol) (err error) { + if err = oprot.WriteFieldBegin("msg", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(p.Msg); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *BaseResp) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("BaseResp(%+v)", *p) + +} + // user type User struct { ID int64 `thrift:"id,1" form:"id" json:"id" query:"id"` @@ -699,17 +877,17 @@ func (p *RegisterRequest) String() string { } type RegisterResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - UserID *int64 `thrift:"user_id,2,optional" form:"user_id" json:"user_id,omitempty" query:"user_id"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + UserID *int64 `thrift:"user_id,2,optional" form:"user_id" json:"user_id,omitempty" query:"user_id"` } func NewRegisterResponse() *RegisterResponse { return &RegisterResponse{} } -var RegisterResponse_Base_DEFAULT *base.BaseResp +var RegisterResponse_Base_DEFAULT *BaseResp -func (p *RegisterResponse) GetBase() (v *base.BaseResp) { +func (p *RegisterResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return RegisterResponse_Base_DEFAULT } @@ -803,7 +981,7 @@ ReadStructEndError: } func (p *RegisterResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -1101,16 +1279,16 @@ func (p *Switch2FARequest) String() string { } type Switch2FAResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` } func NewSwitch2FAResponse() *Switch2FAResponse { return &Switch2FAResponse{} } -var Switch2FAResponse_Base_DEFAULT *base.BaseResp +var Switch2FAResponse_Base_DEFAULT *BaseResp -func (p *Switch2FAResponse) GetBase() (v *base.BaseResp) { +func (p *Switch2FAResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return Switch2FAResponse_Base_DEFAULT } @@ -1182,7 +1360,7 @@ ReadStructEndError: } func (p *Switch2FAResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -1492,19 +1670,19 @@ func (p *LoginRequest) String() string { } type LoginResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` - AccessToken *string `thrift:"access_token,3,optional" form:"access_token" json:"access_token,omitempty" query:"access_token"` - RefreshToken *string `thrift:"refresh_token,4,optional" form:"refresh_token" json:"refresh_token,omitempty" query:"refresh_token"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` + AccessToken *string `thrift:"access_token,3,optional" form:"access_token" json:"access_token,omitempty" query:"access_token"` + RefreshToken *string `thrift:"refresh_token,4,optional" form:"refresh_token" json:"refresh_token,omitempty" query:"refresh_token"` } func NewLoginResponse() *LoginResponse { return &LoginResponse{} } -var LoginResponse_Base_DEFAULT *base.BaseResp +var LoginResponse_Base_DEFAULT *BaseResp -func (p *LoginResponse) GetBase() (v *base.BaseResp) { +func (p *LoginResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return LoginResponse_Base_DEFAULT } @@ -1642,7 +1820,7 @@ ReadStructEndError: } func (p *LoginResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -2020,17 +2198,17 @@ func (p *GetAccessTokenRequest) String() string { } type GetAccessTokenResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - AccessToken *string `thrift:"access_token,2,optional" form:"access_token" json:"access_token,omitempty" query:"access_token"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + AccessToken *string `thrift:"access_token,2,optional" form:"access_token" json:"access_token,omitempty" query:"access_token"` } func NewGetAccessTokenResponse() *GetAccessTokenResponse { return &GetAccessTokenResponse{} } -var GetAccessTokenResponse_Base_DEFAULT *base.BaseResp +var GetAccessTokenResponse_Base_DEFAULT *BaseResp -func (p *GetAccessTokenResponse) GetBase() (v *base.BaseResp) { +func (p *GetAccessTokenResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return GetAccessTokenResponse_Base_DEFAULT } @@ -2124,7 +2302,7 @@ ReadStructEndError: } func (p *GetAccessTokenResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -2217,17 +2395,17 @@ func (p *GetAccessTokenResponse) String() string { } type InfoResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` } func NewInfoResponse() *InfoResponse { return &InfoResponse{} } -var InfoResponse_Base_DEFAULT *base.BaseResp +var InfoResponse_Base_DEFAULT *BaseResp -func (p *InfoResponse) GetBase() (v *base.BaseResp) { +func (p *InfoResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return InfoResponse_Base_DEFAULT } @@ -2321,7 +2499,7 @@ ReadStructEndError: } func (p *InfoResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -2555,17 +2733,17 @@ func (p *AvatarRequest) String() string { } type AvatarResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + User *User `thrift:"user,2,optional" form:"user" json:"user,omitempty" query:"user"` } func NewAvatarResponse() *AvatarResponse { return &AvatarResponse{} } -var AvatarResponse_Base_DEFAULT *base.BaseResp +var AvatarResponse_Base_DEFAULT *BaseResp -func (p *AvatarResponse) GetBase() (v *base.BaseResp) { +func (p *AvatarResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return AvatarResponse_Base_DEFAULT } @@ -2659,7 +2837,7 @@ ReadStructEndError: } func (p *AvatarResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -3534,16 +3712,16 @@ func (p *PutVideoRequest) String() string { } type PutVideoResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` } func NewPutVideoResponse() *PutVideoResponse { return &PutVideoResponse{} } -var PutVideoResponse_Base_DEFAULT *base.BaseResp +var PutVideoResponse_Base_DEFAULT *BaseResp -func (p *PutVideoResponse) GetBase() (v *base.BaseResp) { +func (p *PutVideoResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return PutVideoResponse_Base_DEFAULT } @@ -3615,7 +3793,7 @@ ReadStructEndError: } func (p *PutVideoResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -3819,18 +3997,18 @@ func (p *ListUserVideoRequest) String() string { } type ListUserVideoResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - Count *int64 `thrift:"count,2,optional" form:"count" json:"count,omitempty" query:"count"` - VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Count *int64 `thrift:"count,2,optional" form:"count" json:"count,omitempty" query:"count"` + VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` } func NewListUserVideoResponse() *ListUserVideoResponse { return &ListUserVideoResponse{} } -var ListUserVideoResponse_Base_DEFAULT *base.BaseResp +var ListUserVideoResponse_Base_DEFAULT *BaseResp -func (p *ListUserVideoResponse) GetBase() (v *base.BaseResp) { +func (p *ListUserVideoResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return ListUserVideoResponse_Base_DEFAULT } @@ -3946,7 +4124,7 @@ ReadStructEndError: } func (p *ListUserVideoResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -4283,18 +4461,18 @@ func (p *SearchVideoRequest) String() string { } type SearchVideoResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - Count *int64 `thrift:"count,2,optional" form:"count" json:"count,omitempty" query:"count"` - VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Count *int64 `thrift:"count,2,optional" form:"count" json:"count,omitempty" query:"count"` + VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` } func NewSearchVideoResponse() *SearchVideoResponse { return &SearchVideoResponse{} } -var SearchVideoResponse_Base_DEFAULT *base.BaseResp +var SearchVideoResponse_Base_DEFAULT *BaseResp -func (p *SearchVideoResponse) GetBase() (v *base.BaseResp) { +func (p *SearchVideoResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return SearchVideoResponse_Base_DEFAULT } @@ -4410,7 +4588,7 @@ ReadStructEndError: } func (p *SearchVideoResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -4633,17 +4811,17 @@ func (p *HotVideoRequest) String() string { } type HotVideoResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - VideoList []*Video `thrift:"video_list,2,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + VideoList []*Video `thrift:"video_list,2,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` } func NewHotVideoResponse() *HotVideoResponse { return &HotVideoResponse{} } -var HotVideoResponse_Base_DEFAULT *base.BaseResp +var HotVideoResponse_Base_DEFAULT *BaseResp -func (p *HotVideoResponse) GetBase() (v *base.BaseResp) { +func (p *HotVideoResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return HotVideoResponse_Base_DEFAULT } @@ -4737,7 +4915,7 @@ ReadStructEndError: } func (p *HotVideoResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -5475,16 +5653,16 @@ func (p *LikeActionRequest) String() string { } type LikeActionResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` } func NewLikeActionResponse() *LikeActionResponse { return &LikeActionResponse{} } -var LikeActionResponse_Base_DEFAULT *base.BaseResp +var LikeActionResponse_Base_DEFAULT *BaseResp -func (p *LikeActionResponse) GetBase() (v *base.BaseResp) { +func (p *LikeActionResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return LikeActionResponse_Base_DEFAULT } @@ -5556,7 +5734,7 @@ ReadStructEndError: } func (p *LikeActionResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -5760,18 +5938,18 @@ func (p *LikeListRequest) String() string { } type LikeListResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - VideoCount *int64 `thrift:"video_count,2,optional" form:"video_count" json:"video_count,omitempty" query:"video_count"` - VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + VideoCount *int64 `thrift:"video_count,2,optional" form:"video_count" json:"video_count,omitempty" query:"video_count"` + VideoList []*Video `thrift:"video_list,3,optional" form:"video_list" json:"video_list,omitempty" query:"video_list"` } func NewLikeListResponse() *LikeListResponse { return &LikeListResponse{} } -var LikeListResponse_Base_DEFAULT *base.BaseResp +var LikeListResponse_Base_DEFAULT *BaseResp -func (p *LikeListResponse) GetBase() (v *base.BaseResp) { +func (p *LikeListResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return LikeListResponse_Base_DEFAULT } @@ -5887,7 +6065,7 @@ ReadStructEndError: } func (p *LikeListResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -6279,16 +6457,16 @@ func (p *CommentCreateRequest) String() string { } type CommentCreateResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` } func NewCommentCreateResponse() *CommentCreateResponse { return &CommentCreateResponse{} } -var CommentCreateResponse_Base_DEFAULT *base.BaseResp +var CommentCreateResponse_Base_DEFAULT *BaseResp -func (p *CommentCreateResponse) GetBase() (v *base.BaseResp) { +func (p *CommentCreateResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return CommentCreateResponse_Base_DEFAULT } @@ -6360,7 +6538,7 @@ ReadStructEndError: } func (p *CommentCreateResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -6615,16 +6793,16 @@ func (p *CommentDeleteRequest) String() string { } type CommentDeleteResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` } func NewCommentDeleteResponse() *CommentDeleteResponse { return &CommentDeleteResponse{} } -var CommentDeleteResponse_Base_DEFAULT *base.BaseResp +var CommentDeleteResponse_Base_DEFAULT *BaseResp -func (p *CommentDeleteResponse) GetBase() (v *base.BaseResp) { +func (p *CommentDeleteResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return CommentDeleteResponse_Base_DEFAULT } @@ -6696,7 +6874,7 @@ ReadStructEndError: } func (p *CommentDeleteResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } @@ -6951,18 +7129,18 @@ func (p *CommentListRequest) String() string { } type CommentListResponse struct { - Base *base.BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` - CommentCount *int64 `thrift:"comment_count,2,optional" form:"comment_count" json:"comment_count,omitempty" query:"comment_count"` - CommentList []*Comment `thrift:"comment_list,3,optional" form:"comment_list" json:"comment_list,omitempty" query:"comment_list"` + Base *BaseResp `thrift:"base,1" form:"base" json:"base" query:"base"` + CommentCount *int64 `thrift:"comment_count,2,optional" form:"comment_count" json:"comment_count,omitempty" query:"comment_count"` + CommentList []*Comment `thrift:"comment_list,3,optional" form:"comment_list" json:"comment_list,omitempty" query:"comment_list"` } func NewCommentListResponse() *CommentListResponse { return &CommentListResponse{} } -var CommentListResponse_Base_DEFAULT *base.BaseResp +var CommentListResponse_Base_DEFAULT *BaseResp -func (p *CommentListResponse) GetBase() (v *base.BaseResp) { +func (p *CommentListResponse) GetBase() (v *BaseResp) { if !p.IsSetBase() { return CommentListResponse_Base_DEFAULT } @@ -7078,7 +7256,7 @@ ReadStructEndError: } func (p *CommentListResponse) ReadField1(iprot thrift.TProtocol) error { - p.Base = base.NewBaseResp() + p.Base = NewBaseResp() if err := p.Base.Read(iprot); err != nil { return err } diff --git a/cmd/api/biz/model/base/base.go b/cmd/api/biz/model/base/base.go deleted file mode 100644 index 4a5693b6..00000000 --- a/cmd/api/biz/model/base/base.go +++ /dev/null @@ -1,188 +0,0 @@ -// Code generated by thriftgo (0.3.6). DO NOT EDIT. - -package base - -import ( - "fmt" - "github.com/apache/thrift/lib/go/thrift" -) - -// 公共数据结构 -type BaseResp struct { - Code int64 `thrift:"code,1" form:"code" json:"code" query:"code"` - Msg string `thrift:"msg,2" form:"msg" json:"msg" query:"msg"` -} - -func NewBaseResp() *BaseResp { - return &BaseResp{} -} - -func (p *BaseResp) GetCode() (v int64) { - return p.Code -} - -func (p *BaseResp) GetMsg() (v string) { - return p.Msg -} - -var fieldIDToName_BaseResp = map[int16]string{ - 1: "code", - 2: "msg", -} - -func (p *BaseResp) Read(iprot thrift.TProtocol) (err error) { - - var fieldTypeId thrift.TType - var fieldId int16 - - if _, err = iprot.ReadStructBegin(); err != nil { - goto ReadStructBeginError - } - - for { - _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() - if err != nil { - goto ReadFieldBeginError - } - if fieldTypeId == thrift.STOP { - break - } - - switch fieldId { - case 1: - if fieldTypeId == thrift.I64 { - if err = p.ReadField1(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - case 2: - if fieldTypeId == thrift.STRING { - if err = p.ReadField2(iprot); err != nil { - goto ReadFieldError - } - } else if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - default: - if err = iprot.Skip(fieldTypeId); err != nil { - goto SkipFieldError - } - } - if err = iprot.ReadFieldEnd(); err != nil { - goto ReadFieldEndError - } - } - if err = iprot.ReadStructEnd(); err != nil { - goto ReadStructEndError - } - - return nil -ReadStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) -ReadFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) -ReadFieldError: - return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_BaseResp[fieldId]), err) -SkipFieldError: - return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) - -ReadFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) -ReadStructEndError: - return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) -} - -func (p *BaseResp) ReadField1(iprot thrift.TProtocol) error { - - if v, err := iprot.ReadI64(); err != nil { - return err - } else { - p.Code = v - } - return nil -} -func (p *BaseResp) ReadField2(iprot thrift.TProtocol) error { - - if v, err := iprot.ReadString(); err != nil { - return err - } else { - p.Msg = v - } - return nil -} - -func (p *BaseResp) Write(oprot thrift.TProtocol) (err error) { - var fieldId int16 - if err = oprot.WriteStructBegin("BaseResp"); err != nil { - goto WriteStructBeginError - } - if p != nil { - if err = p.writeField1(oprot); err != nil { - fieldId = 1 - goto WriteFieldError - } - if err = p.writeField2(oprot); err != nil { - fieldId = 2 - goto WriteFieldError - } - } - if err = oprot.WriteFieldStop(); err != nil { - goto WriteFieldStopError - } - if err = oprot.WriteStructEnd(); err != nil { - goto WriteStructEndError - } - return nil -WriteStructBeginError: - return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) -WriteFieldError: - return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) -WriteFieldStopError: - return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) -WriteStructEndError: - return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) -} - -func (p *BaseResp) writeField1(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("code", thrift.I64, 1); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteI64(p.Code); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) -} - -func (p *BaseResp) writeField2(oprot thrift.TProtocol) (err error) { - if err = oprot.WriteFieldBegin("msg", thrift.STRING, 2); err != nil { - goto WriteFieldBeginError - } - if err := oprot.WriteString(p.Msg); err != nil { - return err - } - if err = oprot.WriteFieldEnd(); err != nil { - goto WriteFieldEndError - } - return nil -WriteFieldBeginError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) -WriteFieldEndError: - return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) -} - -func (p *BaseResp) String() string { - if p == nil { - return "" - } - return fmt.Sprintf("BaseResp(%+v)", *p) - -} diff --git a/cmd/interaction/dal/db/comment.go b/cmd/interaction/dal/db/comment.go index 0b398cd6..58671b88 100644 --- a/cmd/interaction/dal/db/comment.go +++ b/cmd/interaction/dal/db/comment.go @@ -1,7 +1,7 @@ package db import ( - "bibi/kitex_gen/interaction" + "bibi/kitex_gen/base" "context" "errors" "gorm.io/gorm" @@ -20,7 +20,7 @@ type Comment struct { DeletedAt gorm.DeletedAt `sql:"index" msg:"-"` //ignore } -func IsParentExist(ctx context.Context, commentModel *interaction.Comment) (bool, error) { +func IsParentExist(ctx context.Context, commentModel *base.Comment) (bool, error) { var comment = &Comment{ ID: *commentModel.ParentId, VideoID: commentModel.VideoId, @@ -32,7 +32,7 @@ func IsParentExist(ctx context.Context, commentModel *interaction.Comment) (bool return true, err } -func IsCommentExist(ctx context.Context, commentModel *interaction.Comment) (bool, error) { +func IsCommentExist(ctx context.Context, commentModel *base.Comment) (bool, error) { var comment = &Comment{ ID: commentModel.Id, VideoID: commentModel.VideoId, @@ -45,7 +45,7 @@ func IsCommentExist(ctx context.Context, commentModel *interaction.Comment) (boo return true, err } -func CreateComment(ctx context.Context, commentModel *interaction.Comment) (*Comment, error) { +func CreateComment(ctx context.Context, commentModel *base.Comment) (*Comment, error) { var comment = &Comment{ VideoID: commentModel.VideoId, Uid: commentModel.User.Id, @@ -61,7 +61,7 @@ func CreateComment(ctx context.Context, commentModel *interaction.Comment) (*Com return comment, nil } -func DeleteComment(ctx context.Context, commentModel *interaction.Comment) (*Comment, error) { +func DeleteComment(ctx context.Context, commentModel *base.Comment) (*Comment, error) { var comment = &Comment{ ID: commentModel.Id, VideoID: commentModel.VideoId, diff --git a/cmd/interaction/service/comment_action.go b/cmd/interaction/service/comment_action.go index c471f3f1..6edeaf5a 100644 --- a/cmd/interaction/service/comment_action.go +++ b/cmd/interaction/service/comment_action.go @@ -3,8 +3,8 @@ package service import ( "bibi/cmd/interaction/dal/cache" "bibi/cmd/interaction/dal/db" + "bibi/kitex_gen/base" "bibi/kitex_gen/interaction" - "bibi/kitex_gen/user" "bibi/pkg/errno" "golang.org/x/sync/errgroup" ) @@ -14,11 +14,11 @@ func (s *InteractionService) CommentCreate(req *interaction.CommentCreateRequest var err error var exist = false comment := new(db.Comment) - commentModel := &interaction.Comment{ + commentModel := &base.Comment{ VideoId: req.VideoId, ParentId: req.ParentId, Content: req.Content, - User: &user.User{ + User: &base.User{ Id: uid, }, } @@ -68,10 +68,10 @@ func (s *InteractionService) CommentCreate(req *interaction.CommentCreateRequest func (s *InteractionService) CommentDelete(req *interaction.CommentDeleteRequest, uid int64) error { var eg errgroup.Group - var commentModel = &interaction.Comment{ + var commentModel = &base.Comment{ Id: req.CommentId, VideoId: req.VideoId, - User: &user.User{ + User: &base.User{ Id: uid, }, } diff --git a/cmd/interaction/service/service.go b/cmd/interaction/service/service.go index d6b82254..0f489f9d 100644 --- a/cmd/interaction/service/service.go +++ b/cmd/interaction/service/service.go @@ -2,7 +2,7 @@ package service import ( "bibi/cmd/interaction/dal/db" - "bibi/kitex_gen/interaction" + "bibi/kitex_gen/base" "context" ) @@ -14,8 +14,8 @@ func NewInteractionService(ctx context.Context) *InteractionService { return &InteractionService{ctx: ctx} } -func BuildCommentResp(comment *db.Comment) *interaction.Comment { - return &interaction.Comment{ +func BuildCommentResp(comment *db.Comment) *base.Comment { + return &base.Comment{ Id: comment.ID, VideoId: comment.VideoID, ParentId: &comment.ParentID, @@ -25,7 +25,7 @@ func BuildCommentResp(comment *db.Comment) *interaction.Comment { } } -func BuildCommentsResp(comments []db.Comment) (commentsResp []*interaction.Comment) { +func BuildCommentsResp(comments []db.Comment) (commentsResp []*base.Comment) { for _, comment := range comments { commentsResp = append(commentsResp, BuildCommentResp(&comment)) } diff --git a/cmd/user/handler.go b/cmd/user/handler.go index ebe14461..894397fb 100644 --- a/cmd/user/handler.go +++ b/cmd/user/handler.go @@ -118,10 +118,16 @@ func (s *UserHandlerImpl) Switch2FA(ctx context.Context, req *user.Switch2FARequ } // GetAuthor implements the UserHandlerImpl interface. -func (s *UserHandlerImpl) GetAuthor(ctx context.Context, req *user.GetAuthorRequest) (resp *user.GetAuthorResponse, err error) { - resp = new(user.GetAuthorResponse) +func (s *UserHandlerImpl) GetAuthor(ctx context.Context, req *user.GetUsersRequest) (resp *user.GetUsersResponse, err error) { + resp = new(user.GetUsersResponse) - userResp, _ := service.NewUserService(ctx).GetUserByIdList(req.AuthorIdList) - resp.AuthorList = service.BuildUsersResp(userResp) + userResp, _ := service.NewUserService(ctx).GetUserByIdList(req.UserIdList) + resp.UserList = service.BuildUsersResp(userResp) return resp, nil } + +// GetUserList implements the UserHandlerImpl interface. +func (s *UserHandlerImpl) GetUserList(ctx context.Context, req *user.GetUsersRequest) (resp *user.GetUsersResponse, err error) { + // TODO: Your code here... + return +} diff --git a/cmd/user/service/service.go b/cmd/user/service/service.go index 2ae95a64..628dbd71 100644 --- a/cmd/user/service/service.go +++ b/cmd/user/service/service.go @@ -2,7 +2,7 @@ package service import ( "bibi/cmd/user/dal/db" - "bibi/kitex_gen/user" + "bibi/kitex_gen/base" aliyunoss "bibi/pkg/utils/oss" "context" "github.com/aliyun/aliyun-oss-go-sdk/oss" @@ -30,8 +30,8 @@ func NewAvatarService(ctx context.Context) *AvatarService { return &AvatarService{ctx: ctx, bucket: bucket} } -func BuildUserResp(dbUser *db.User) *user.User { - return &user.User{ +func BuildUserResp(dbUser *db.User) *base.User { + return &base.User{ Id: dbUser.ID, Name: dbUser.UserName, Email: dbUser.Email, @@ -39,8 +39,8 @@ func BuildUserResp(dbUser *db.User) *user.User { } } -func BuildUsersResp(dbUsers *[]db.User) []*user.User { - usersResp := make([]*user.User, len(*dbUsers)) +func BuildUsersResp(dbUsers *[]db.User) []*base.User { + usersResp := make([]*base.User, len(*dbUsers)) for i, v := range *dbUsers { usersResp[i] = BuildUserResp(&v) } diff --git a/cmd/video/dal/db/init.go b/cmd/video/dal/db/init.go index c4e4fae5..f3c758ee 100644 --- a/cmd/video/dal/db/init.go +++ b/cmd/video/dal/db/init.go @@ -3,6 +3,7 @@ package db import ( "bibi/pkg/constants" "bibi/pkg/utils" + "context" "github.com/cloudwego/kitex/pkg/klog" "gorm.io/driver/mysql" @@ -32,5 +33,5 @@ func Init() { sqlDB.SetMaxIdleConns(constants.MaxIdleConns) sqlDB.SetMaxOpenConns(constants.MaxConnections) sqlDB.SetConnMaxLifetime(constants.ConnMaxLifetime) - DB = DB.Table(constants.VideoTableName) + DB = DB.Table(constants.VideoTableName).WithContext(context.Background()) } diff --git a/cmd/video/handler.go b/cmd/video/handler.go index 169665cc..6c85f74b 100644 --- a/cmd/video/handler.go +++ b/cmd/video/handler.go @@ -2,11 +2,8 @@ package main import ( "bibi/cmd/video/dal/db" - "bibi/cmd/video/rpc" "bibi/cmd/video/service" "bibi/config" - "bibi/kitex_gen/interaction" - "bibi/kitex_gen/user" video "bibi/kitex_gen/video" "bibi/pkg/errno" "bibi/pkg/pack" @@ -73,53 +70,13 @@ func (s *VideoHandlerImpl) PutVideo(ctx context.Context, req *video.PutVideoRequ // ListVideo implements the VideoHandlerImpl interface. func (s *VideoHandlerImpl) ListVideo(ctx context.Context, req *video.ListUserVideoRequest) (resp *video.ListUserVideoResponse, err error) { resp = new(video.ListUserVideoResponse) - videoResp, count, err := service.NewVideoService(ctx).ListVideo(req) + videoResp, count, authorList, likeCountList, isLikeList, err := service.NewVideoService(ctx).ListVideo(req) resp.Base = pack.BuildBaseResp(err) if err != nil { return resp, nil } - videoIdList := make([]int64, len(*videoResp)) - authorIdList := make([]int64, len(*videoResp)) - //likeCountList := make([]int64, len(*videoResp)) - //authorList := make([]*user.User, len(*videoResp)) - var likeCountList []int64 - var authorList []*user.User - for i, v := range *videoResp { - videoIdList[i] = v.ID - authorIdList[i] = v.Uid - } - var eg errgroup.Group - eg.Go(func() error { - rpcResp, err := rpc.GetLikeCountByIdList(ctx, &interaction.GetLikesCountByVideoIdListRequest{ - VideoId: videoIdList, - }) - if err != nil { - return err - } - likeCountList = rpcResp.LikeCountList - return nil - }) - eg.Go(func() error { - rpcResp, err := rpc.UserGetAuthor(ctx, &user.GetAuthorRequest{ - AuthorIdList: authorIdList, - }) - if err != nil { - return err - } - authorList = rpcResp.AuthorList - return nil - }) - //eg.Go(func() error { - // rpcResp,err:=rpc.GetIsLikeByIdList(ctx,&interaction.GetIsLikeByVideoIdListRequest{ - // VideoId: videoIdList, - // UserId: - // }) - //}) - if err := eg.Wait(); err != nil { - resp.Base = pack.BuildBaseResp(err) - return resp, nil - } - resp.VideoList = service.BuildVideoListResp(videoResp, authorList, likeCountList, nil) + + resp.VideoList = service.BuildVideoListResp(videoResp, authorList, likeCountList, isLikeList) resp.Count = &count return resp, nil } @@ -127,54 +84,13 @@ func (s *VideoHandlerImpl) ListVideo(ctx context.Context, req *video.ListUserVid // SearchVideo implements the VideoHandlerImpl interface. func (s *VideoHandlerImpl) SearchVideo(ctx context.Context, req *video.SearchVideoRequest) (resp *video.SearchVideoResponse, err error) { resp = new(video.SearchVideoResponse) - videoResp, count, err := service.NewVideoService(ctx).SearchVideo(req) + videoResp, count, authorList, likeCountList, isLikeList, err := service.NewVideoService(ctx).SearchVideo(req) resp.Base = pack.BuildBaseResp(err) if err != nil { return resp, nil } - videoIdList := make([]int64, len(*videoResp)) - authorIdList := make([]int64, len(*videoResp)) - //likeCountList := make([]int64, len(*videoResp)) - //authorList := make([]*user.User, len(*videoResp)) - var likeCountList []int64 - var authorList []*user.User - for i, v := range *videoResp { - videoIdList[i] = v.ID - authorIdList[i] = v.Uid - } - var eg errgroup.Group - eg.Go(func() error { - rpcResp, err := rpc.GetLikeCountByIdList(ctx, &interaction.GetLikesCountByVideoIdListRequest{ - VideoId: videoIdList, - }) - if err != nil { - return err - } - likeCountList = rpcResp.LikeCountList - return nil - }) - eg.Go(func() error { - rpcResp, err := rpc.UserGetAuthor(ctx, &user.GetAuthorRequest{ - AuthorIdList: authorIdList, - }) - if err != nil { - return err - } - authorList = rpcResp.AuthorList - return nil - }) - //eg.Go(func() error { - // rpcResp,err:=rpc.GetIsLikeByIdList(ctx,&interaction.GetIsLikeByVideoIdListRequest{ - // VideoId: videoIdList, - // UserId: - // }) - //}) - if err := eg.Wait(); err != nil { - resp.Base = pack.BuildBaseResp(err) - return resp, nil - } - resp.VideoList = service.BuildVideoListResp(videoResp, authorList, likeCountList, nil) + resp.VideoList = service.BuildVideoListResp(videoResp, authorList, likeCountList, isLikeList) resp.Count = &count return resp, nil } diff --git a/cmd/video/rpc/user.go b/cmd/video/rpc/user.go index 3f810a58..0d41edf4 100644 --- a/cmd/video/rpc/user.go +++ b/cmd/video/rpc/user.go @@ -38,8 +38,8 @@ func InitUserRPC() { userClient = c } -func UserGetAuthor(ctx context.Context, req *user.GetAuthorRequest) (*user.GetAuthorResponse, error) { - resp, err := userClient.GetAuthor(ctx, req) +func UserGetUserList(ctx context.Context, req *user.GetUsersRequest) (*user.GetUsersResponse, error) { + resp, err := userClient.GetUserList(ctx, req) if err != nil { return nil, err } diff --git a/cmd/video/service/list_video.go b/cmd/video/service/list_video.go index aa1e9076..221f7c46 100644 --- a/cmd/video/service/list_video.go +++ b/cmd/video/service/list_video.go @@ -2,9 +2,60 @@ package service import ( "bibi/cmd/video/dal/db" + "bibi/cmd/video/rpc" + "bibi/kitex_gen/base" + "bibi/kitex_gen/interaction" + "bibi/kitex_gen/user" "bibi/kitex_gen/video" + "golang.org/x/sync/errgroup" ) -func (s *VideoService) ListVideo(req *video.ListUserVideoRequest) (*[]db.Video, int64, error) { - return db.ListVideosByID(s.ctx, int(req.PageNum), req.UserId) +func (s *VideoService) ListVideo(req *video.ListUserVideoRequest) (*[]db.Video, int64, []*base.User, []int64, []int64, error) { + videoList, count, err := db.ListVideosByID(s.ctx, int(req.PageNum), req.UserId) + if err != nil { + return nil, 0, nil, nil, nil, err + } + + videoIdList := make([]int64, len(*videoList)) + authorIdList := make([]int64, len(*videoList)) + //likeCountList := make([]int64, len(*videoResp)) + //authorList := make([]*user.User, len(*videoResp)) + var likeCountList []int64 + var authorList []*base.User + for i, v := range *videoList { + videoIdList[i] = v.ID + authorIdList[i] = v.Uid + } + var eg errgroup.Group + eg.Go(func() error { + rpcResp, err := rpc.GetLikeCountByIdList(s.ctx, &interaction.GetLikesCountByVideoIdListRequest{ + VideoId: videoIdList, + }) + if err != nil { + return err + } + likeCountList = rpcResp.LikeCountList + return nil + }) + eg.Go(func() error { + rpcResp, err := rpc.UserGetUserList(s.ctx, &user.GetUsersRequest{ + UserIdList: authorIdList, + }) + if err != nil { + return err + } + authorList = rpcResp.UserList + return nil + }) + //eg.Go(func() error { + // rpcResp,err:=rpc.GetIsLikeByIdList(ctx,&interaction.GetIsLikeByVideoIdListRequest{ + // VideoId: videoIdList, + // UserId:, + // }) + //}) + if err := eg.Wait(); err != nil { + return nil, 0, nil, nil, nil, err + } + + return videoList, count, authorList, likeCountList, nil, nil } diff --git a/cmd/video/service/search_video.go b/cmd/video/service/search_video.go index 84d2076d..2b197b7c 100644 --- a/cmd/video/service/search_video.go +++ b/cmd/video/service/search_video.go @@ -2,9 +2,60 @@ package service import ( "bibi/cmd/video/dal/db" + "bibi/cmd/video/rpc" + "bibi/kitex_gen/base" + "bibi/kitex_gen/interaction" + "bibi/kitex_gen/user" "bibi/kitex_gen/video" + "golang.org/x/sync/errgroup" ) -func (s *VideoService) SearchVideo(req *video.SearchVideoRequest) (*[]db.Video, int64, error) { - return db.SearchVideo(s.ctx, int(req.PageNum), req.Param) +func (s *VideoService) SearchVideo(req *video.SearchVideoRequest) (*[]db.Video, int64, []*base.User, []int64, []int64, error) { + videoList, count, err := db.SearchVideo(s.ctx, int(req.PageNum), req.Param) + if err != nil { + return nil, 0, nil, nil, nil, err + } + + videoIdList := make([]int64, len(*videoList)) + authorIdList := make([]int64, len(*videoList)) + //likeCountList := make([]int64, len(*videoResp)) + //authorList := make([]*user.User, len(*videoResp)) + var likeCountList []int64 + var authorList []*base.User + for i, v := range *videoList { + videoIdList[i] = v.ID + authorIdList[i] = v.Uid + } + var eg errgroup.Group + eg.Go(func() error { + rpcResp, err := rpc.GetLikeCountByIdList(s.ctx, &interaction.GetLikesCountByVideoIdListRequest{ + VideoId: videoIdList, + }) + if err != nil { + return err + } + likeCountList = rpcResp.LikeCountList + return nil + }) + eg.Go(func() error { + rpcResp, err := rpc.UserGetUserList(s.ctx, &user.GetUsersRequest{ + UserIdList: authorIdList, + }) + if err != nil { + return err + } + authorList = rpcResp.UserList + return nil + }) + //eg.Go(func() error { + // rpcResp,err:=rpc.GetIsLikeByIdList(ctx,&interaction.GetIsLikeByVideoIdListRequest{ + // VideoId: videoIdList, + // UserId:, + // }) + //}) + if err := eg.Wait(); err != nil { + return nil, 0, nil, nil, nil, err + } + + return videoList, count, authorList, likeCountList, nil, nil } diff --git a/cmd/video/service/service.go b/cmd/video/service/service.go index 18fe99ba..7db6d528 100644 --- a/cmd/video/service/service.go +++ b/cmd/video/service/service.go @@ -3,8 +3,7 @@ package service import ( "bibi/cmd/video/dal/db" "bibi/config" - "bibi/kitex_gen/user" - "bibi/kitex_gen/video" + "bibi/kitex_gen/base" aliyunoss "bibi/pkg/utils/oss" "context" "github.com/aliyun/aliyun-oss-go-sdk/oss" @@ -27,8 +26,8 @@ func NewVideoService(ctx context.Context) *VideoService { return &VideoService{ctx: ctx, bucket: bucket} } -func BuildVideoResp(v *db.Video, author *user.User, likeCount int64) *video.Video { - return &video.Video{ +func BuildVideoResp(v *db.Video, author *base.User, likeCount int64) *base.Video { + return &base.Video{ Id: v.ID, Uid: v.Uid, Author: author, @@ -40,8 +39,8 @@ func BuildVideoResp(v *db.Video, author *user.User, likeCount int64) *video.Vide } } -func BuildVideoListResp(videos *[]db.Video, authorList []*user.User, videoLikeCountList []int64, isLikeList []int64) []*video.Video { - videoListResp := make([]*video.Video, len(*videos)) +func BuildVideoListResp(videos *[]db.Video, authorList []*base.User, videoLikeCountList []int64, isLikeList []int64) []*base.Video { + videoListResp := make([]*base.Video, len(*videos)) for i, v := range *videos { videoListResp[i] = BuildVideoResp(&v, authorList[i], videoLikeCountList[i]) } diff --git a/idl/api.thrift b/idl/api.thrift index 41cff3ab..37f70e52 100644 --- a/idl/api.thrift +++ b/idl/api.thrift @@ -1,5 +1,10 @@ namespace go api -include"base.thrift" + +struct BaseResp { + 1: i64 code + 2: string msg +} + //user struct User { @@ -20,7 +25,7 @@ struct RegisterRequest { } struct RegisterResponse { - 1: base.BaseResp base, + 1: BaseResp base, 2: optional i64 user_id, } @@ -38,7 +43,7 @@ struct Switch2FARequest{ } struct Switch2FAResponse{ - 1:base.BaseResp base, + 1:BaseResp base, } struct LoginRequest { @@ -48,7 +53,7 @@ struct LoginRequest { } struct LoginResponse { - 1: base.BaseResp base, + 1: BaseResp base, 2: optional User user, 3: optional string access_token, 4: optional string refresh_token, @@ -63,13 +68,13 @@ struct GetAccessTokenRequest{ } struct GetAccessTokenResponse{ - 1:base.BaseResp base, + 1:BaseResp base, 2:optional string access_token, } struct InfoResponse { - 1: base.BaseResp base, + 1: BaseResp base, 2: optional User user, } @@ -77,7 +82,7 @@ struct AvatarRequest{ 1:required binary avatar_file, } struct AvatarResponse{ - 1: base.BaseResp base, + 1: BaseResp base, 2: optional User user, } service UserHandler { @@ -111,7 +116,7 @@ struct PutVideoRequest{ } struct PutVideoResponse{ - 1:base.BaseResp base, + 1:BaseResp base, } struct ListUserVideoRequest{ @@ -119,7 +124,7 @@ struct ListUserVideoRequest{ } struct ListUserVideoResponse{ - 1:base.BaseResp base, + 1:BaseResp base, 2:optional i64 count, 3:optional list