From 06140b9a766aac22f844319cf367e533f564f4c3 Mon Sep 17 00:00:00 2001 From: lijikun Date: Wed, 4 Dec 2024 15:40:11 +0800 Subject: [PATCH] =?UTF-8?q?12.4=E6=97=A5=E8=B7=A8=E5=9F=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E5=86=B3,=E8=BF=94=E5=9B=9E=E5=88=B0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E7=9A=84=E6=A0=BC=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 3 +- go.sum | 37 +------ hack/config.yaml | 2 +- internal/cmd/cmd.go | 27 +++++- internal/controller/clubPage/clubPage.go | 26 ++++- internal/controller/mainPage/mainPage.go | 113 +++++++++++++++++++++- internal/model/dto/Result.go | 66 +++++++++++++ internal/model/entity/go_channel_subscriptions.go | 6 +- internal/model/entity/go_channels.go | 4 +- internal/model/entity/go_live_reservations.go | 6 +- internal/model/entity/go_lives.go | 12 +-- internal/model/entity/go_shows.go | 24 ++--- 12 files changed, 253 insertions(+), 73 deletions(-) create mode 100644 internal/model/dto/Result.go diff --git a/go.mod b/go.mod index 51588f9..d09c642 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,13 @@ module practice_Go go 1.18 require ( - github.com/gogf/gf v1.16.9 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.1 github.com/gogf/gf/v2 v2.8.1 + github.com/rs/cors v1.11.1 ) require ( github.com/BurntSushi/toml v1.4.0 // indirect - github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.17.0 // indirect diff --git a/go.sum b/go.sum index 2ec12ee..c284a80 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,12 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28 h1:LdXxtjzvZYhhUaonAaAKArG3pyC67kGL3YY+6hGG8G4= -github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= -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/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -20,31 +14,21 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/gogf/gf v1.16.9 h1:Q803UmmRo59+Ws08sMVFOcd8oNpkSWL9vS33hlo/Cyk= -github.com/gogf/gf v1.16.9/go.mod h1:8Q/kw05nlVRp+4vv7XASBsMe9L1tsVKiGoeP2AHnlkk= github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.1 h1:jbaPawkb8qmaYzrmBDbTa8Zkhzacq1RBOZw+qRJExI4= github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.1/go.mod h1:s2aI1fV9AvKi4NtMpv3pV0EHtazkvfUNVQmzapr7UJQ= github.com/gogf/gf/v2 v2.8.1 h1:1oVQg3G5OgCats4qWFTH3pHLe92nfUQeUDta05tUs1g= github.com/gogf/gf/v2 v2.8.1/go.mod h1:6iYuZZ+A0ZcH8+4MDS/P0SvTPCvKzRvyAsY1kbkJYJc= -github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= -github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78= github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4= github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -54,46 +38,29 @@ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/hack/config.yaml b/hack/config.yaml index 8269ec5..20c7a92 100644 --- a/hack/config.yaml +++ b/hack/config.yaml @@ -7,7 +7,7 @@ gfcli: - link: "mysql:root:80083@tcp(127.0.0.1:3306)/linktest?charset=utf8mb4&parseTime=True&loc=Local" table: "go_users, go_shows, go_lives, go_live_reservations, go_club, go_channels,go_channel_subscriptions" descriptionTag: true - jsonCase: "Snake" +# jsonCase: "Snake" docker: build: "-a amd64 -s linux -p temp -ew" diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index e0e1bef..7bb35b4 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -10,6 +10,23 @@ import ( "github.com/gogf/gf/v2/os/gcmd" ) +/*自定义的允许跨域请求中间件*/ +func MiddlewareCORS(r *ghttp.Request) { + /* 没有起到应起到的作用,还是所有的都可以访问 + //自定义授权跨域的Origin + corsOptions := r.Response.DefaultCORSOptions() + corsOptions.AllowDomain = []string{"localhost"} //数组中的为允许访问的 + if !r.Response.CORSAllowedOrigin(corsOptions) { + r.Response.WriteStatus(http.StatusForbidden) + return + } + r.Response.CORS(corsOptions) + r.Middleware.Next()*/ + //默认的跨域设置 + r.Response.CORSDefault() + r.Middleware.Next() +} + var ( Main = gcmd.Command{ Name: "main", @@ -18,10 +35,15 @@ var ( Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { s := g.Server() + s.BindHandler("/*any", func(r *ghttp.Request) { + r.Response.CORSDefault() + }) + // 定义一个路由组,路径为/mainpage s.Group("/mainpage", func(group *ghttp.RouterGroup) { // 添加中间件,用于处理响应 - group.Middleware(ghttp.MiddlewareHandlerResponse) + //group.Middleware(ghttp.MiddlewareHandlerResponse) + group.Middleware(MiddlewareCORS) // 绑定路由,将mainPage.NewMainPage()绑定到该路由组 group.Bind( mainPage.NewMainPage(), @@ -31,7 +53,8 @@ var ( // 定义一个路由组,路径为/clubpage s.Group("/clubpage", func(group *ghttp.RouterGroup) { // 添加中间件,用于处理响应 - group.Middleware(ghttp.MiddlewareHandlerResponse) + //group.Middleware(ghttp.MiddlewareHandlerResponse) + group.Middleware(MiddlewareCORS) // 绑定路由,将mainPage.NewMainPage()绑定到该路由组 group.Bind( clubPage.NewClubPage(), diff --git a/internal/controller/clubPage/clubPage.go b/internal/controller/clubPage/clubPage.go index 48f3d5d..a55230f 100644 --- a/internal/controller/clubPage/clubPage.go +++ b/internal/controller/clubPage/clubPage.go @@ -2,6 +2,7 @@ package clubPage import ( "github.com/gogf/gf/v2/net/ghttp" + "practice_Go/internal/model/dto" "practice_Go/internal/service" ) @@ -13,19 +14,36 @@ func NewClubPage() *ClubPage { // GetClub 获取俱乐部信息 func (c ClubPage) GetClub(req *ghttp.Request) { + club, err := service.GetClubs().GetClubs(req.Context()) if err == nil { - req.Response.WriteJson(club) + req.Response.WriteJson(dto.Result{ + Code: 200, + Message: "success", + Data: club, + }) } else { - req.Response.WriteJson(err) + req.Response.WriteJson(dto.Result{ + Code: 500, + Message: "error", + Data: err, + }) } } func (c ClubPage) GetClubShows(req *ghttp.Request) { shows, err := service.GetClubs().GetClubShows(req.Context()) if err == nil { - req.Response.WriteJson(shows) + req.Response.WriteJson(dto.Result{ + Code: 200, + Message: "success", + Data: shows, + }) } else { - req.Response.WriteJson(err) + req.Response.WriteJson(dto.Result{ + Code: 500, + Message: "error", + Data: err, + }) } } diff --git a/internal/controller/mainPage/mainPage.go b/internal/controller/mainPage/mainPage.go index 65b1e8b..7e3cd1d 100644 --- a/internal/controller/mainPage/mainPage.go +++ b/internal/controller/mainPage/mainPage.go @@ -1,8 +1,11 @@ package mainPage import ( + "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" + "practice_Go/internal/model/dto" "practice_Go/internal/service" + "time" ) // 定义一个MainPage结构体 @@ -17,9 +20,17 @@ func NewMainPage() *MainPage { func (c *MainPage) GetShows(req *ghttp.Request) { shows, err := service.GetShows().GetShows(req.Context()) if err == nil { - req.Response.WriteJson(shows) + req.Response.WriteJson(dto.Result{ + Code: 200, + Message: "success", + Data: shows, + }) } else { - req.Response.WriteJson(err) + req.Response.WriteJson(dto.Result{ + Code: 500, + Message: "error", + Data: err, + }) } } @@ -27,7 +38,103 @@ func (c *MainPage) GetShows(req *ghttp.Request) { func (c *MainPage) GetVideos(req *ghttp.Request) { shows, err := service.GetShows().GetVideos(req.Context()) if err == nil { - req.Response.WriteJson(shows) + req.Response.WriteJson(dto.Result{ + Code: 200, + Message: "success", + Data: shows, + }) + } else { + req.Response.WriteJson(dto.Result{ + Code: 500, + Message: "error", + Data: err, + }) + } +} + +// 新增数据 +func (c *MainPage) AddShow(req *ghttp.Request) { + + type Show struct { + Id int `json:"id"` + Name string `json:"name"` + Cover string `json:"cover"` + UserId int `json:"userId"` + ReleaseTime time.Time `json:"releaseTime"` + VideoDuration time.Duration `json:"videoDuration"` + ViewCount int `json:"viewCount"` + Comments int `json:"comments"` + Likes int `json:"likes"` + FlagType int `json:"flagType"` + ChannelId int `json:"channelId"` + } + + ////通过map + //data := g.Map{ + // "name": "视频1", + // "userId": 1, + // "likes": 6, + // "comments": 3, + // "viewCount": 10, + //} + // + ////通过结构体对象 + //data := Show{ + // Name: "视频1", + // UserId: 1, + // Likes: 6, + // Comments: 3, + // ReleaseTime: gtime.New("2024/10/23"), + //} + // + md := g.Model("show") + // + + //批量插入多条数据 + ////通过map + //data := g.List{ + // g.Map{ + // "name": "视频1", + // "userId": 1, + // "likes": 6, + // "comments": 3, + // "viewCount": 23, + // }, + // g.Map{ + // "name": "视频2", + // "userId": 2, + // "likes": 6, + // "comments": 3, + // "viewCount": 20, + // }, + // g.Map{ + // "name": "文章1", + // "userId": 3, + // "likes": 6, + // "comments": 3, + // "viewCount": 15, + // }, + //} + + //通过结构体对象 + data := g.Array{ + //里边是结构体集合 + } + + ////写法一 插入 + ////result, err := md.Data(data).Insert() + ////写法二 插入 主键冲突,报错 + ////result, err := md.Insert(data) //insert into ... + ////写法三 主键冲突,就新数据 替换 旧数据 + ////result, err := md.Replace(data) //replace into ... + ////写法四 主键冲突,就根据主键 更新 数据 + //result, err := md.Save(data) //insert into into ... on duplicate key update ... + + //插入并获取id + result, err := md.InsertAndGetId(data) + + if err == nil { + req.Response.WriteJson(result) } else { req.Response.WriteJson(err) } diff --git a/internal/model/dto/Result.go b/internal/model/dto/Result.go new file mode 100644 index 0000000..810c7ed --- /dev/null +++ b/internal/model/dto/Result.go @@ -0,0 +1,66 @@ +package dto + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// 定义响应结构 +type Result struct { + Code int `json:"code"` + Message string `json:"message"` + Data interface{} `json:"data"` // 修改为实体类型 +} + +/*成功,没有数据*/ +func Success() *Result { + return &Result{ + Code: 200, + Message: "success", + Data: g.Map{}, + } +} + +/*成功,有数据*/ +func SuccessWithData(data interface{}) *Result { + return &Result{ + Code: 200, + Message: "success", + Data: data, + } +} + +/*错误,只有错误信息,错误码0*/ +func Error(msg string) *Result { + return &Result{ + Code: 0, // 错误码 + Message: msg, // 错误信息 + Data: g.Map{}, + } +} + +/*错误,有错误信息,有错误码*/ +func ErrorWithCode(code int, msg string) *Result { + return &Result{ + Code: code, // 错误码 + Message: msg, // 错误信息 + Data: g.Map{}, + } +} + +/*未授权,有错误信息,错误码为401*/ +func Unauthorized(msg string) *Result { + return &Result{ + Code: 401, // 错误码 + Message: msg, // 错误信息 + Data: g.Map{}, + } +} + +/*未授权,有错误信息,允许自定义错误码*/ +func UnauthorizedWithCode(code int, msg string) *Result { + return &Result{ + Code: code, // 错误码 + Message: msg, // 错误信息 + Data: g.Map{}, + } +} diff --git a/internal/model/entity/go_channel_subscriptions.go b/internal/model/entity/go_channel_subscriptions.go index 6125ee4..96a876c 100644 --- a/internal/model/entity/go_channel_subscriptions.go +++ b/internal/model/entity/go_channel_subscriptions.go @@ -6,7 +6,7 @@ package entity // GoChannelSubscriptions is the golang structure for table go_channel_subscriptions. type GoChannelSubscriptions struct { - Id int `json:"id" orm:"id" description:"频道订阅关系唯一ID,自增"` // 频道订阅关系唯一ID,自增 - UserId int `json:"user_id" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 - ChannelId int `json:"channel_id" orm:"channel_id" description:"关联的频道ID,指向go_channels表的id,不能为空"` // 关联的频道ID,指向go_channels表的id,不能为空 + Id int `json:"id" orm:"id" description:"频道订阅关系唯一ID,自增"` // 频道订阅关系唯一ID,自增 + UserId int `json:"userId" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + ChannelId int `json:"channelId" orm:"channel_id" description:"关联的频道ID,指向go_channels表的id,不能为空"` // 关联的频道ID,指向go_channels表的id,不能为空 } diff --git a/internal/model/entity/go_channels.go b/internal/model/entity/go_channels.go index 145a286..b4f36b1 100644 --- a/internal/model/entity/go_channels.go +++ b/internal/model/entity/go_channels.go @@ -9,6 +9,6 @@ type GoChannels struct { Id int `json:"id" orm:"id" description:"频道唯一ID,自增"` // 频道唯一ID,自增 Image string `json:"image" orm:"image" description:"频道图片路径或相关标识,可为空"` // 频道图片路径或相关标识,可为空 Name string `json:"name" orm:"name" description:"频道名称,最大长度255字符,不能为空"` // 频道名称,最大长度255字符,不能为空 - SubscriptionCount int `json:"subscription_count" orm:"subscription_count" description:"频道订阅数量,初始值为0,可累加"` // 频道订阅数量,初始值为0,可累加 - BackgroundImage string `json:"background_image" orm:"background_image" description:"频道背景图路径或相关标识,可为空"` // 频道背景图路径或相关标识,可为空 + SubscriptionCount int `json:"subscriptionCount" orm:"subscription_count" description:"频道订阅数量,初始值为0,可累加"` // 频道订阅数量,初始值为0,可累加 + BackgroundImage string `json:"backgroundImage" orm:"background_image" description:"频道背景图路径或相关标识,可为空"` // 频道背景图路径或相关标识,可为空 } diff --git a/internal/model/entity/go_live_reservations.go b/internal/model/entity/go_live_reservations.go index eca03f1..1be3ec2 100644 --- a/internal/model/entity/go_live_reservations.go +++ b/internal/model/entity/go_live_reservations.go @@ -6,7 +6,7 @@ package entity // GoLiveReservations is the golang structure for table go_live_reservations. type GoLiveReservations struct { - Id int `json:"id" orm:"id" description:"直播预约关系唯一ID,自增"` // 直播预约关系唯一ID,自增 - UserId int `json:"user_id" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 - LiveId int `json:"live_id" orm:"live_id" description:"关联的直播ID,指向go_lives表的id,不能为空"` // 关联的直播ID,指向go_lives表的id,不能为空 + Id int `json:"id" orm:"id" description:"直播预约关系唯一ID,自增"` // 直播预约关系唯一ID,自增 + UserId int `json:"userId" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveId int `json:"liveId" orm:"live_id" description:"关联的直播ID,指向go_lives表的id,不能为空"` // 关联的直播ID,指向go_lives表的id,不能为空 } diff --git a/internal/model/entity/go_lives.go b/internal/model/entity/go_lives.go index deeea4c..9b91431 100644 --- a/internal/model/entity/go_lives.go +++ b/internal/model/entity/go_lives.go @@ -10,10 +10,10 @@ import ( // GoLives is the golang structure for table go_lives. type GoLives struct { - Id int `json:"id" orm:"id" description:"直播唯一ID,自增"` // 直播唯一ID,自增 - Cover string `json:"cover" orm:"cover" description:"直播封面路径或相关标识,可为空"` // 直播封面路径或相关标识,可为空 - UserId int `json:"user_id" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 - LiveName string `json:"live_name" orm:"live_name" description:"直播名称,最大长度255字符,不能为空"` // 直播名称,最大长度255字符,不能为空 - StartTime *gtime.Time `json:"start_time" orm:"start_time" description:"直播开始时间,不能为空"` // 直播开始时间,不能为空 - Status int `json:"status" orm:"status" description:"直播状态,0:未开播 1:已开播,不能为空"` // 直播状态,0:未开播 1:已开播,不能为空 + Id int `json:"id" orm:"id" description:"直播唯一ID,自增"` // 直播唯一ID,自增 + Cover string `json:"cover" orm:"cover" description:"直播封面路径或相关标识,可为空"` // 直播封面路径或相关标识,可为空 + UserId int `json:"userId" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveName string `json:"liveName" orm:"live_name" description:"直播名称,最大长度255字符,不能为空"` // 直播名称,最大长度255字符,不能为空 + StartTime *gtime.Time `json:"startTime" orm:"start_time" description:"直播开始时间,不能为空"` // 直播开始时间,不能为空 + Status int `json:"status" orm:"status" description:"直播状态,0:未开播 1:已开播,不能为空"` // 直播状态,0:未开播 1:已开播,不能为空 } diff --git a/internal/model/entity/go_shows.go b/internal/model/entity/go_shows.go index db31b56..518f387 100644 --- a/internal/model/entity/go_shows.go +++ b/internal/model/entity/go_shows.go @@ -10,18 +10,18 @@ import ( // GoShows is the golang structure for table go_shows. type GoShows struct { - Id int `json:"id" orm:"id" description:"展示内容唯一ID,自增"` // 展示内容唯一ID,自增 - Cover string `json:"cover" orm:"cover" description:"展示内容封面路径或相关标识,可为空"` // 展示内容封面路径或相关标识,可为空 - Name string `json:"name" orm:"name" description:"展示内容名称,最大长度255字符,不能为空"` // 展示内容名称,最大长度255字符,不能为空 - UserId int `json:"user_id" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 - ReleaseTime *gtime.Time `json:"release_time" orm:"release_time" description:"展示内容发布时间,可为空"` // 展示内容发布时间,可为空 - VideoDuration *gtime.Time `json:"video_duration" orm:"video_duration" description:"展示内容视频时长,格式根据实际情况定,可为空"` // 展示内容视频时长,格式根据实际情况定,可为空 - ViewCount int `json:"view_count" orm:"view_count" description:"展示内容观看数量,初始值为0,可累加"` // 展示内容观看数量,初始值为0,可累加 - Comments int `json:"comments" orm:"comments" description:"展示内容评论数量,初始值为0,可累加"` // 展示内容评论数量,初始值为0,可累加 - Likes int `json:"likes" orm:"likes" description:"展示内容点赞数量,初始值为0,可累加"` // 展示内容点赞数量,初始值为0,可累加 - FlagType int `json:"flag_type" orm:"flag_type" description:"展示内容标识类型,按业务规则确定,可为空"` // 展示内容标识类型,按业务规则确定,可为空 - ClubId int `json:"club_id" orm:"club_id" description:"关联的俱乐部ID,指向go_clubs表的id,可为空"` // 关联的俱乐部ID,指向go_clubs表的id,可为空 - ChannelId int `json:"channel_id" orm:"channel_id" description:"关联的频道ID,指向go_channels表的id,可为空"` // 关联的频道ID,指向go_channels表的id,可为空 + Id int `json:"id" orm:"id" description:"展示内容唯一ID,自增"` // 展示内容唯一ID,自增 + Cover string `json:"cover" orm:"cover" description:"展示内容封面路径或相关标识,可为空"` // 展示内容封面路径或相关标识,可为空 + Name string `json:"name" orm:"name" description:"展示内容名称,最大长度255字符,不能为空"` // 展示内容名称,最大长度255字符,不能为空 + UserId int `json:"userId" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + ReleaseTime *gtime.Time `json:"releaseTime" orm:"release_time" description:"展示内容发布时间,可为空"` // 展示内容发布时间,可为空 + VideoDuration *gtime.Time `json:"videoDuration" orm:"video_duration" description:"展示内容视频时长,格式根据实际情况定,可为空"` // 展示内容视频时长,格式根据实际情况定,可为空 + ViewCount int `json:"viewCount" orm:"view_count" description:"展示内容观看数量,初始值为0,可累加"` // 展示内容观看数量,初始值为0,可累加 + Comments int `json:"comments" orm:"comments" description:"展示内容评论数量,初始值为0,可累加"` // 展示内容评论数量,初始值为0,可累加 + Likes int `json:"likes" orm:"likes" description:"展示内容点赞数量,初始值为0,可累加"` // 展示内容点赞数量,初始值为0,可累加 + FlagType int `json:"flagType" orm:"flag_type" description:"展示内容标识类型,按业务规则确定,可为空"` // 展示内容标识类型,按业务规则确定,可为空 + ClubId int `json:"clubId" orm:"club_id" description:"关联的俱乐部ID,指向go_clubs表的id,可为空"` // 关联的俱乐部ID,指向go_clubs表的id,可为空 + ChannelId int `json:"channelId" orm:"channel_id" description:"关联的频道ID,指向go_channels表的id,可为空"` // 关联的频道ID,指向go_channels表的id,可为空 User *GoUsers `json:"user" orm:"with:id=user_id"` Club *GoClubs `json:"club" orm:"with:id=club_id"`