Skip to content

Commit fc82d2f

Browse files
committed
修改user获取作品数量的实现,并添加cache
1 parent 654de15 commit fc82d2f

File tree

5 files changed

+74
-31
lines changed

5 files changed

+74
-31
lines changed

server/gateway-center/controller/videoController.go

+13-9
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func PublishList(c *gin.Context) {
120120
}
121121
videoList := baseResponse.VideoArray{}
122122
for _, video := range videos {
123-
info, err2 := grpcClient.GetUserById(context.Background(), uint(video.Author.Id))
123+
info, err2 := grpcClient.GetUserById(context.Background(), uint(video.Author.Id), uint(video.Author.Id), params.Token)
124124
if err2 != nil {
125125
util.LogrusObj.Errorf("gRPC getUserInfo Error userId:%d", video.Author.Id)
126126
continue
@@ -183,17 +183,21 @@ func Feed(c *gin.Context) {
183183
}
184184
VideoList := baseResponse.VideoArray{}
185185
for _, video := range videos {
186-
info, err := grpcClient.GetUserById(context.Background(), uint(video.Author.Id))
187-
if err != nil {
188-
util.LogrusObj.Errorf("获取User失败 UserId:%d UserToken:%d", video.Author.Id, &params.Token)
189-
continue
190-
}
186+
var info *pb.DouyinUserResponse
191187
if isLogin {
192-
follow, err := grpcClient.IsFollow(context.Background(), uint(video.Author.Id), uint(userId))
188+
info, err = grpcClient.GetUserById(context.Background(), uint(video.Author.Id), uint(userId), params.Token)
189+
if err != nil {
190+
util.LogrusObj.Errorf("获取User失败 UserId:%d UserToken:%d", video.Author.Id, &params.Token)
191+
continue
192+
}
193+
isFollow = info.User.IsFollow
194+
} else {
195+
info, err = grpcClient.GetUserById(context.Background(), uint(video.Author.Id), 0, "")
193196
if err != nil {
194-
isFollow = false
197+
util.LogrusObj.Errorf("获取User失败 UserId:%d UserToken:%d", video.Author.Id, &params.Token)
198+
continue
195199
}
196-
isFollow = follow.IsFollow
200+
isFollow = false
197201
}
198202
user := baseResponse.Vuser{
199203
Id: info.User.Id,

server/gateway-center/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ require (
66
github.com/OrionLi/douyin-backend v1.0.15
77
github.com/dgrijalva/jwt-go v3.2.0+incompatible
88
github.com/gin-gonic/gin v1.9.1
9+
github.com/go-redis/redis/v8 v8.11.5
910
github.com/nacos-group/nacos-sdk-go/v2 v2.2.3
1011
github.com/sirupsen/logrus v1.9.3
1112
github.com/spf13/viper v1.16.0
@@ -26,7 +27,6 @@ require (
2627
github.com/go-playground/locales v0.14.1 // indirect
2728
github.com/go-playground/universal-translator v0.18.1 // indirect
2829
github.com/go-playground/validator/v10 v10.14.0 // indirect
29-
github.com/go-redis/redis/v8 v8.11.5 // indirect
3030
github.com/goccy/go-json v0.10.2 // indirect
3131
github.com/golang/mock v1.6.0 // indirect
3232
github.com/golang/protobuf v1.5.3 // indirect

server/gateway-center/go.sum

+6-18
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
3939
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
4040
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
4141
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
42-
github.com/OrionLi/douyin-backend v1.0.7 h1:QNakalozwUGaKcc+OZWeOcVxZ4tEpNlgzWP0RoQN93s=
43-
github.com/OrionLi/douyin-backend v1.0.7/go.mod h1:4ATeodTy47KXveKpBOWLRpFxJethsER1nLgzcmAcEy8=
44-
github.com/OrionLi/douyin-backend v1.0.10 h1:fXHkqZT0hPpG2oErCRY1n3lyASCYPDYraCXgIZQJhzw=
45-
github.com/OrionLi/douyin-backend v1.0.10/go.mod h1:4ATeodTy47KXveKpBOWLRpFxJethsER1nLgzcmAcEy8=
46-
github.com/OrionLi/douyin-backend v1.0.12 h1:vlWWyQddlEqe3ld9OYL5LgU8Fht1jmgHMTMoT5rTUdY=
47-
github.com/OrionLi/douyin-backend v1.0.12/go.mod h1:4ATeodTy47KXveKpBOWLRpFxJethsER1nLgzcmAcEy8=
42+
github.com/OrionLi/douyin-backend v1.0.15 h1:vUACFIbAN1EGGqylD9i8mLMwQviH3rpM1DNq/ZQH7/k=
4843
github.com/OrionLi/douyin-backend v1.0.15/go.mod h1:4ATeodTy47KXveKpBOWLRpFxJethsER1nLgzcmAcEy8=
4944
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
5045
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
@@ -240,6 +235,9 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
240235
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
241236
github.com/nacos-group/nacos-sdk-go/v2 v2.2.3 h1:sUQx4f1bXDeeOOEQZjGAitzxYApbYY9fVDbxVCaBW+I=
242237
github.com/nacos-group/nacos-sdk-go/v2 v2.2.3/go.mod h1:UL4U89WYdnyajgKJUMpuT1Rr6iNmbjrxOO40JRgtA00=
238+
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
239+
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
240+
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
243241
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
244242
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
245243
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -341,8 +339,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
341339
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
342340
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
343341
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
344-
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
345-
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
342+
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
346343
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
347344
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
348345
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -414,8 +411,6 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
414411
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
415412
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
416413
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
417-
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
418-
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
419414
golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
420415
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
421416
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -491,8 +486,6 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc
491486
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
492487
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
493488
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
494-
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
495-
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
496489
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
497490
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
498491
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -504,8 +497,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
504497
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
505498
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
506499
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
507-
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
508-
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
509500
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
510501
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
511502
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -628,8 +619,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D
628619
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
629620
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
630621
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
631-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM=
632-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
633622
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4=
634623
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M=
635624
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
@@ -662,8 +651,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
662651
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
663652
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
664653
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
665-
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
666-
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
667654
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
668655
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
669656
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
@@ -677,6 +664,7 @@ gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
677664
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
678665
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
679666
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
667+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
680668
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
681669
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
682670
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package cache
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"github.com/go-redis/redis/v8"
7+
"time"
8+
)
9+
10+
func RedisSetKey(ctx context.Context, key string, value interface{}) error {
11+
if _, err := NewRedisClient(ctx).Get(ctx, key).Result(); err != redis.Nil {
12+
fmt.Printf("Key is existed %s\n", key)
13+
}
14+
err := NewRedisClient(ctx).Set(ctx, key, value, 3*time.Minute).Err()
15+
if err != nil {
16+
panic(err)
17+
}
18+
19+
fmt.Printf("Redis client set successfully...%s\n", key)
20+
return nil
21+
}
22+
23+
func RedisGetKey(ctx context.Context, key string) (string, error) {
24+
value, err := NewRedisClient(ctx).Get(ctx, key).Result()
25+
26+
if err == redis.Nil {
27+
return value, err
28+
}
29+
30+
if err != nil {
31+
panic(err)
32+
}
33+
34+
fmt.Printf("Redis client get successfully... %s\n", key)
35+
return value, nil
36+
}

server/user-center/server/userServer.go

+18-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ package server
22

33
import (
44
"context"
5+
"fmt"
56
"github.com/OrionLi/douyin-backend/pkg/pb"
7+
"user-center/cache"
68
"user-center/grpc"
79
"user-center/pkg/e"
10+
"user-center/pkg/util"
811
"user-center/service"
912
)
1013

@@ -19,6 +22,7 @@ func NewUserRPCServer() *UserRPCServer {
1922
// GetUserById 通过id获取用户基本信息
2023
func (s *UserRPCServer) GetUserById(ctx context.Context, req *pb.DouyinUserRequest) (*pb.DouyinUserResponse, error) {
2124
// 用户基本信息请求体
25+
videoCountKey := fmt.Sprintf("publishlist:%d", req.UserId)
2226
userReq := service.GetUserByIdService{Id: uint(req.GetFollowId())}
2327
user, err := userReq.GetUserById(ctx)
2428
if err != nil {
@@ -41,9 +45,20 @@ func (s *UserRPCServer) GetUserById(ctx context.Context, req *pb.DouyinUserReque
4145
if favCount.StatusCode != 0 {
4246
return nil, e.NewError(e.Error)
4347
}
48+
49+
//用户作品数量缓存添加缓存
50+
key, err := cache.RedisGetKey(ctx, videoCountKey)
51+
var vidCount int64
52+
if err != nil {
53+
vids, err := grpc.GetPublishList(ctx, uint(req.GetFollowId()), req.GetToken())
54+
if err != nil {
55+
return nil, e.NewError(e.Error)
56+
}
57+
vidCount := len(vids.VideoList)
58+
err = cache.RedisSetKey(ctx, videoCountKey, vidCount)
59+
}
60+
vidCount = util.StrToInt64(key)
4461
// 获取用户发布视频列表
45-
vids, err := grpc.GetPublishList(ctx, uint(req.GetFollowId()), req.GetToken())
46-
vidCount := len(vids.VideoList)
4762
userInfo := user.GetUser()
4863
return &pb.DouyinUserResponse{User: &pb.User{
4964
Id: req.FollowId,
@@ -52,7 +67,7 @@ func (s *UserRPCServer) GetUserById(ctx context.Context, req *pb.DouyinUserReque
5267
FollowerCount: userInfo.FollowerCount,
5368
IsFollow: isFollow.GetIsFollow(),
5469
FavCount: int64(favCount.GetFavCount()),
55-
WorkCount: int64(vidCount),
70+
WorkCount: vidCount,
5671
TotalFavorited: favCount.GetFavCount_,
5772
BackgroundImage: "https://ts2.cn.mm.bing.net/th?id=OIP-C.HfZqICAPqMQslH0cMrIDFQHaKe&w=210&h=297&c=8&rs=1&qlt=90&o=6&dpr=1.1&pid=3.1&rm=2",
5873
Signature: "测试用户",

0 commit comments

Comments
 (0)