diff --git a/.gitignore b/.gitignore index 50618b3..9986942 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ test/logs #upload file static/img/* +web/static/file/* diff --git a/README.md b/README.md index a20d324..03045cc 100644 --- a/README.md +++ b/README.md @@ -65,13 +65,13 @@ https://github.com/kone-net/go-chat-web ### 截图 * 语音,文字,图片,视频消息 -![go-chat-panel](/static/screenshot/go-chat-panel.jpeg) +![go-chat-panel](/assets/screenshot/go-chat-panel.jpeg) * 视频通话 -![video-chat](/static/screenshot/video-chat.png) +![video-chat](/assets/screenshot/video-chat.png) * 屏幕共享 -![screen-share](/static/screenshot/screen-share.png) +![screen-share](/assets/screenshot/screen-share.png) ## 消息协议 ### protocol buffer协议 diff --git a/api/v1/file_controller.go b/api/v1/file_controller.go index 93e6296..1e0562b 100644 --- a/api/v1/file_controller.go +++ b/api/v1/file_controller.go @@ -5,9 +5,10 @@ import ( "net/http" "strings" - "chat-room/global/log" - "chat-room/common/response" - "chat-room/service" + "chat-room/config" + "chat-room/internal/service" + "chat-room/pkg/common/response" + "chat-room/pkg/global/log" "github.com/gin-gonic/gin" "github.com/google/uuid" @@ -17,7 +18,7 @@ import ( func GetFile(c *gin.Context) { fileName := c.Param("fileName") log.Info(fileName) - data, _ := ioutil.ReadFile("static/img/" + fileName) + data, _ := ioutil.ReadFile(config.GetConfig().StaticPath.FilePath + fileName) c.Writer.Write(data) } @@ -34,10 +35,10 @@ func SaveFile(c *gin.Context) { newFileName := namePreffix + suffix - log.Info("file", log.Any("file name", "static/img/"+newFileName)) + log.Info("file", log.Any("file name", config.GetConfig().StaticPath.FilePath + newFileName)) log.Info("userUuid", log.Any("userUuid name", userUuid)) - c.SaveUploadedFile(file, "static/img/"+newFileName) + c.SaveUploadedFile(file, config.GetConfig().StaticPath.FilePath + newFileName) err := service.UserService.ModifyUserAvatar(newFileName, userUuid) if err != nil { c.JSON(http.StatusOK, response.FailMsg(err.Error())) diff --git a/api/v1/group_controller.go b/api/v1/group_controller.go index 3d7cf2d..a2cc801 100644 --- a/api/v1/group_controller.go +++ b/api/v1/group_controller.go @@ -1,9 +1,9 @@ package v1 import ( - "chat-room/model" - "chat-room/common/response" - "chat-room/service" + "chat-room/internal/model" + "chat-room/pkg/common/response" + "chat-room/internal/service" "net/http" "github.com/gin-gonic/gin" diff --git a/api/v1/message_controller.go b/api/v1/message_controller.go index b87fe51..417dbb6 100644 --- a/api/v1/message_controller.go +++ b/api/v1/message_controller.go @@ -3,10 +3,10 @@ package v1 import ( "net/http" - "chat-room/global/log" - "chat-room/common/request" - "chat-room/common/response" - "chat-room/service" + "chat-room/pkg/global/log" + "chat-room/pkg/common/request" + "chat-room/pkg/common/response" + "chat-room/internal/service" "github.com/gin-gonic/gin" ) diff --git a/api/v1/user_controller.go b/api/v1/user_controller.go index 773bd92..9f346fc 100644 --- a/api/v1/user_controller.go +++ b/api/v1/user_controller.go @@ -3,11 +3,11 @@ package v1 import ( "net/http" - "chat-room/global/log" - "chat-room/model" - "chat-room/common/request" - "chat-room/common/response" - "chat-room/service" + "chat-room/pkg/global/log" + "chat-room/internal/model" + "chat-room/pkg/common/request" + "chat-room/pkg/common/response" + "chat-room/internal/service" "github.com/gin-gonic/gin" ) diff --git a/static/screenshot/go-chat-panel.jpeg b/assets/screenshot/go-chat-panel.jpeg similarity index 100% rename from static/screenshot/go-chat-panel.jpeg rename to assets/screenshot/go-chat-panel.jpeg diff --git a/static/screenshot/screen-share.png b/assets/screenshot/screen-share.png similarity index 100% rename from static/screenshot/screen-share.png rename to assets/screenshot/screen-share.png diff --git a/static/screenshot/video-chat.png b/assets/screenshot/video-chat.png similarity index 100% rename from static/screenshot/video-chat.png rename to assets/screenshot/video-chat.png diff --git a/cmd/main.go b/cmd/main.go index 9da09f6..2318111 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -2,9 +2,9 @@ package main import ( "chat-room/config" - "chat-room/global/log" - "chat-room/router" - "chat-room/server" + "chat-room/pkg/global/log" + "chat-room/internal/router" + "chat-room/internal/server" "go.uber.org/zap" "net/http" "time" diff --git a/config.toml b/config.toml index 3f6cb0c..0a8fa07 100644 --- a/config.toml +++ b/config.toml @@ -1,13 +1,16 @@ -app_name = "chat_room" +appName = "chat_room" [mysql] host = "127.0.0.1" name = "chat" password = "root1234" port = 3306 -table_prefix = "" +tablePrefix = "" user = "root" [log] level = "debug" path = "logs/chat.log" + +[staticPath] +filePath = "web/static/file/" diff --git a/config/toml_config.go b/config/toml_config.go index c948a91..ecf9edf 100644 --- a/config/toml_config.go +++ b/config/toml_config.go @@ -7,9 +7,10 @@ import ( ) type TomlConfig struct { - AppName string - MySQL MySQLConfig - Log LogConfig + AppName string + MySQL MySQLConfig + Log LogConfig + StaticPath PathConfig } type MySQLConfig struct { @@ -26,6 +27,10 @@ type LogConfig struct { Level string } +type PathConfig struct { + FilePath string +} + var c TomlConfig func init() { diff --git a/go.mod b/go.mod index 37442fc..a065d4e 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module chat-room go 1.16 require ( + github.com/Shopify/sarama v1.30.0 github.com/gin-gonic/gin v1.7.4 github.com/go-playground/validator/v10 v10.9.0 // indirect github.com/gogo/protobuf v1.3.2 @@ -18,7 +19,6 @@ require ( go.uber.org/zap v1.19.1 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect golang.org/x/sys v0.0.0-20211106132015-ebca88c72f68 // indirect - golang.org/x/text v0.3.7 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gorm.io/driver/mysql v1.1.3 gorm.io/gorm v1.22.2 diff --git a/go.sum b/go.sum index b4c5b86..5030267 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,10 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.30.0 h1:TOZL6r37xJBDEMLx4yjB77jxbZYXPaDow08TSK6vIL0= +github.com/Shopify/sarama v1.30.0/go.mod h1:zujlQQx1kzHsh4jfV1USnptCQrHAEZ2Hk8fTKCulPVs= +github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae h1:ePgznFqEG1v3AjMklnK8H7BSc++FDSo7xfK9K7Af+0Y= +github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -66,10 +70,17 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= +github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -80,6 +91,10 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -138,6 +153,8 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -179,6 +196,9 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -196,6 +216,8 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -206,6 +228,18 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA= +github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= @@ -219,6 +253,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -267,6 +303,8 @@ github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6Yf github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= +github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -276,14 +314,19 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= @@ -311,8 +354,12 @@ github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/wxnacy/wgo v1.0.4 h1:UEkzjlW3pMAXcTUCgMekrCvFYLKKwc0p5GAQrMIphs8= github.com/wxnacy/wgo v1.0.4/go.mod h1:8hqUwCgvMGgAIr4MLIeFur2YXS/Ns3vbyx5abx0e8iM= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -346,8 +393,10 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -422,6 +471,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210917221730-978cfadd31cf h1:R150MpwJIv1MpS0N/pc+NhTM8ajzvlmxlY5OYsrevXQ= +golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -714,6 +765,7 @@ gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/dao/pool/mysql_tool.go b/internal/dao/pool/mysql_tool.go similarity index 100% rename from dao/pool/mysql_tool.go rename to internal/dao/pool/mysql_tool.go diff --git a/model/group.go b/internal/model/group.go similarity index 100% rename from model/group.go rename to internal/model/group.go diff --git a/model/group_member.go b/internal/model/group_member.go similarity index 100% rename from model/group_member.go rename to internal/model/group_member.go diff --git a/model/message.go b/internal/model/message.go similarity index 100% rename from model/message.go rename to internal/model/message.go diff --git a/model/user.go b/internal/model/user.go similarity index 100% rename from model/user.go rename to internal/model/user.go diff --git a/model/user_friend.go b/internal/model/user_friend.go similarity index 100% rename from model/user_friend.go rename to internal/model/user_friend.go diff --git a/router/router.go b/internal/router/router.go similarity index 97% rename from router/router.go rename to internal/router/router.go index 6b1ce52..76506ec 100644 --- a/router/router.go +++ b/internal/router/router.go @@ -2,8 +2,8 @@ package router import ( "chat-room/api/v1" - "chat-room/global/log" - "chat-room/common/response" + "chat-room/pkg/global/log" + "chat-room/pkg/common/response" "net/http" "github.com/gin-gonic/gin" diff --git a/router/socket.go b/internal/router/socket.go similarity index 91% rename from router/socket.go rename to internal/router/socket.go index 6955732..ebe1862 100644 --- a/router/socket.go +++ b/internal/router/socket.go @@ -1,8 +1,8 @@ package router import ( - "chat-room/global/log" - "chat-room/server" + "chat-room/pkg/global/log" + "chat-room/internal/server" "net/http" "github.com/gin-gonic/gin" diff --git a/server/client.go b/internal/server/client.go similarity index 92% rename from server/client.go rename to internal/server/client.go index 9131508..f4e8267 100644 --- a/server/client.go +++ b/internal/server/client.go @@ -1,9 +1,9 @@ package server import ( - "chat-room/common/constant" - "chat-room/global/log" - "chat-room/protocol" + "chat-room/pkg/common/constant" + "chat-room/pkg/global/log" + "chat-room/pkg/protocol" "github.com/gogo/protobuf/proto" "github.com/gorilla/websocket" diff --git a/server/server.go b/internal/server/server.go similarity index 93% rename from server/server.go rename to internal/server/server.go index b0eea6f..0977cbe 100644 --- a/server/server.go +++ b/internal/server/server.go @@ -1,11 +1,12 @@ package server import ( - "chat-room/common/constant" - "chat-room/common/util" - "chat-room/global/log" - "chat-room/protocol" - "chat-room/service" + "chat-room/config" + "chat-room/pkg/common/constant" + "chat-room/pkg/common/util" + "chat-room/pkg/global/log" + "chat-room/pkg/protocol" + "chat-room/internal/service" "encoding/base64" "io/ioutil" "strings" @@ -153,7 +154,7 @@ func saveMessage(message *protocol.Message) { log.Error("transfer base64 to file error", log.String("transfer base64 to file error", dataErr.Error())) return } - err := ioutil.WriteFile("static/img/"+url, dataBuffer, 0666) + err := ioutil.WriteFile(config.GetConfig().StaticPath.FilePath + url, dataBuffer, 0666) if err != nil { log.Error("write file error", log.String("write file error", err.Error())) return @@ -169,7 +170,7 @@ func saveMessage(message *protocol.Message) { } contentType := util.GetContentTypeBySuffix(fileSuffix) url := uuid.New().String() + "." + fileSuffix - err := ioutil.WriteFile("static/img/"+url, message.File, 0666) + err := ioutil.WriteFile(config.GetConfig().StaticPath.FilePath + url, message.File, 0666) if err != nil { log.Error("write file error", log.String("write file error", err.Error())) return diff --git a/service/group_service.go b/internal/service/group_service.go similarity index 95% rename from service/group_service.go rename to internal/service/group_service.go index 2163e82..14183bd 100644 --- a/service/group_service.go +++ b/internal/service/group_service.go @@ -1,11 +1,11 @@ package service import ( - "chat-room/dao/pool" - "chat-room/errors" - "chat-room/common/response" + "chat-room/internal/dao/pool" + "chat-room/pkg/errors" + "chat-room/pkg/common/response" - "chat-room/model" + "chat-room/internal/model" "github.com/google/uuid" ) diff --git a/service/message_service.go b/internal/service/message_service.go similarity index 92% rename from service/message_service.go rename to internal/service/message_service.go index d11adfd..0db44db 100644 --- a/service/message_service.go +++ b/internal/service/message_service.go @@ -1,15 +1,15 @@ package service import ( - "chat-room/common/constant" - "chat-room/dao/pool" - "chat-room/errors" - "chat-room/global/log" - "chat-room/common/response" - "chat-room/protocol" - - "chat-room/model" - "chat-room/common/request" + "chat-room/pkg/common/constant" + "chat-room/internal/dao/pool" + "chat-room/pkg/errors" + "chat-room/pkg/global/log" + "chat-room/pkg/common/response" + "chat-room/pkg/protocol" + + "chat-room/internal/model" + "chat-room/pkg/common/request" "gorm.io/gorm" ) diff --git a/service/user_service.go b/internal/service/user_service.go similarity index 95% rename from service/user_service.go rename to internal/service/user_service.go index c449d5e..087df76 100644 --- a/service/user_service.go +++ b/internal/service/user_service.go @@ -3,12 +3,12 @@ package service import ( "time" - "chat-room/common/request" - "chat-room/common/response" - "chat-room/dao/pool" - "chat-room/errors" - "chat-room/global/log" - "chat-room/model" + "chat-room/pkg/common/request" + "chat-room/pkg/common/response" + "chat-room/internal/dao/pool" + "chat-room/pkg/errors" + "chat-room/pkg/global/log" + "chat-room/internal/model" "github.com/google/uuid" ) diff --git a/common/constant/constant.go b/pkg/common/constant/constant.go similarity index 100% rename from common/constant/constant.go rename to pkg/common/constant/constant.go diff --git a/common/request/friend_request.go b/pkg/common/request/friend_request.go similarity index 100% rename from common/request/friend_request.go rename to pkg/common/request/friend_request.go diff --git a/common/request/message_request.go b/pkg/common/request/message_request.go similarity index 100% rename from common/request/message_request.go rename to pkg/common/request/message_request.go diff --git a/common/response/group_response.go b/pkg/common/response/group_response.go similarity index 100% rename from common/response/group_response.go rename to pkg/common/response/group_response.go diff --git a/common/response/message_response.go b/pkg/common/response/message_response.go similarity index 100% rename from common/response/message_response.go rename to pkg/common/response/message_response.go diff --git a/common/response/response_msg.go b/pkg/common/response/response_msg.go similarity index 100% rename from common/response/response_msg.go rename to pkg/common/response/response_msg.go diff --git a/common/response/search_response.go b/pkg/common/response/search_response.go similarity index 77% rename from common/response/search_response.go rename to pkg/common/response/search_response.go index 7c0c653..4a08bec 100644 --- a/common/response/search_response.go +++ b/pkg/common/response/search_response.go @@ -1,6 +1,6 @@ package response -import "chat-room/model" +import "chat-room/internal/model" type SearchResponse struct { User model.User `json:"user"` diff --git a/common/util/file_suffix.go b/pkg/common/util/file_suffix.go similarity index 99% rename from common/util/file_suffix.go rename to pkg/common/util/file_suffix.go index 58a7354..fdc9023 100644 --- a/common/util/file_suffix.go +++ b/pkg/common/util/file_suffix.go @@ -2,7 +2,7 @@ package util import ( "bytes" - "chat-room/common/constant" + "chat-room/pkg/common/constant" "encoding/hex" "strconv" "strings" diff --git a/errors/error.go b/pkg/errors/error.go similarity index 100% rename from errors/error.go rename to pkg/errors/error.go diff --git a/global/log/log.go b/pkg/global/log/log.go similarity index 100% rename from global/log/log.go rename to pkg/global/log/log.go diff --git a/protocol/message.pb.go b/pkg/protocol/message.pb.go similarity index 100% rename from protocol/message.pb.go rename to pkg/protocol/message.pb.go diff --git a/protocol/message.proto b/pkg/protocol/message.proto similarity index 100% rename from protocol/message.proto rename to pkg/protocol/message.proto diff --git a/test/proto_test.go b/test/proto_test.go index 56e5404..410daf1 100644 --- a/test/proto_test.go +++ b/test/proto_test.go @@ -1 +1,50 @@ package test + +import ( + "fmt" + "strings" + "testing" + + "github.com/Shopify/sarama" +) + +func TestKafka(t *testing.T) { + hosts := "127.0.0.1:9092" + config := sarama.NewConfig() + client, _ := sarama.NewClient(strings.Split(hosts, ","), config) + + producer, _ := sarama.NewAsyncProducerFromClient(client) + defer func() { + if producer != nil { + producer.Close() + } + if client != nil { + client.Close() + } + }() + + var str string = "test" + var data []byte = []byte(str) + be := sarama.ByteEncoder(data) + fmt.Println(be) + producer.Input() <- &sarama.ProducerMessage{Topic: "test", Key: nil, Value: be} + +} + +var consumer sarama.Consumer +type ConsumerCallBack func(data []byte) +func TestKafkaConsumer(t *testing.T) { + hosts := "127.0.0.1:9092" + config := sarama.NewConfig() + client, _ := sarama.NewClient(strings.Split(hosts, ","), config) + + consumer, _ = sarama.NewConsumerFromClient(client) + + partitionConsumer, _ := consumer.ConsumePartition("test", 0, sarama.OffsetNewest) + defer partitionConsumer.Close() + for { + msg := <-partitionConsumer.Messages() + fmt.Println(msg.Value) + fmt.Println(string(msg.Value)) + } +} \ No newline at end of file