diff --git a/api/live/live.go b/api/live/live.go new file mode 100644 index 0000000..5003154 --- /dev/null +++ b/api/live/live.go @@ -0,0 +1,15 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package live + +import ( + "context" + + "practice_Go/api/live/v1" +) + +type ILiveV1 interface { + GetLive(ctx context.Context, req *v1.GetLiveReq) (res *v1.GetLiveRes, err error) +} diff --git a/api/live/v1/live.go b/api/live/v1/live.go new file mode 100644 index 0000000..d3e7263 --- /dev/null +++ b/api/live/v1/live.go @@ -0,0 +1,22 @@ +package v1 + +import ( + "practice_Go/internal/model/entity" + + "github.com/gogf/gf/v2/frame/g" +) + +type Live struct { + entity.GoLives + status int + yuyue int +} + +type GetLiveReq struct { + g.Meta `path:"/live" method:"get" tags:"Live" summary:"获取直播列表"` + UserId int `v:"required|min:90000000|max:99999999#用户ID不能为空|用户ID不能小于90000000|用户ID不能大于99999999" dc:"用户ID"` +} + +type GetLiveRes struct { + List []*Live `json:"liveList" dc:"直播列表"` +} \ No newline at end of file diff --git a/go.mod b/go.mod index f025646..2b3f164 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,8 @@ go 1.18 require github.com/gogf/gf/v2 v2.8.1 +require github.com/go-sql-driver/mysql v1.7.1 // indirect + require ( github.com/BurntSushi/toml v1.4.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect @@ -12,6 +14,7 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.1 github.com/gorilla/websocket v1.5.3 // indirect github.com/grokify/html-strip-tags-go v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect diff --git a/go.sum b/go.sum index c153e8d..3640d20 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,10 @@ 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.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +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/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 5ad82cc..14d8fb3 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -2,12 +2,11 @@ package cmd import ( "context" + "practice_Go/internal/controller/live" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gcmd" - - ) var ( @@ -20,7 +19,7 @@ var ( s.Group("/", func(group *ghttp.RouterGroup) { group.Middleware(ghttp.MiddlewareHandlerResponse) group.Bind( - + live.NewV1(), ) }) s.SetServerRoot("resource/public") diff --git a/internal/controller/live/live.go b/internal/controller/live/live.go new file mode 100644 index 0000000..2c30a0f --- /dev/null +++ b/internal/controller/live/live.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package live diff --git a/internal/controller/live/live_new.go b/internal/controller/live/live_new.go new file mode 100644 index 0000000..503621d --- /dev/null +++ b/internal/controller/live/live_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package live + +import ( + "practice_Go/api/live" +) + +type ControllerV1 struct{} + +func NewV1() live.ILiveV1 { + return &ControllerV1{} +} diff --git a/internal/controller/live/live_v1_get_live.go b/internal/controller/live/live_v1_get_live.go new file mode 100644 index 0000000..b2e9c5b --- /dev/null +++ b/internal/controller/live/live_v1_get_live.go @@ -0,0 +1,15 @@ +package live + +import ( + "context" + + "practice_Go/api/live/v1" + "practice_Go/internal/dao" + "practice_Go/internal/model/entity" +) + +func (c *ControllerV1) GetLive(ctx context.Context, req *v1.GetLiveReq) (res *v1.GetLiveRes, err error) { + res = &v1.GetLiveRes{} + err = dao.GoLives.Ctx(ctx).With(entity.GoUsers{}).OrderAsc("start_time").Scan(&res.List) + return +} diff --git a/internal/dao/go_live_reservations.go b/internal/dao/go_live_reservations.go new file mode 100644 index 0000000..caed41a --- /dev/null +++ b/internal/dao/go_live_reservations.go @@ -0,0 +1,27 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package dao + +import ( + "practice_Go/internal/dao/internal" +) + +// internalGoLiveReservationsDao is internal type for wrapping internal DAO implements. +type internalGoLiveReservationsDao = *internal.GoLiveReservationsDao + +// goLiveReservationsDao is the data access object for table go_live_reservations. +// You can define custom methods on it to extend its functionality as you wish. +type goLiveReservationsDao struct { + internalGoLiveReservationsDao +} + +var ( + // GoLiveReservations is globally public accessible object for table go_live_reservations operations. + GoLiveReservations = goLiveReservationsDao{ + internal.NewGoLiveReservationsDao(), + } +) + +// Fill with you ideas below. diff --git a/internal/dao/go_lives.go b/internal/dao/go_lives.go new file mode 100644 index 0000000..eac5f45 --- /dev/null +++ b/internal/dao/go_lives.go @@ -0,0 +1,27 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package dao + +import ( + "practice_Go/internal/dao/internal" +) + +// internalGoLivesDao is internal type for wrapping internal DAO implements. +type internalGoLivesDao = *internal.GoLivesDao + +// goLivesDao is the data access object for table go_lives. +// You can define custom methods on it to extend its functionality as you wish. +type goLivesDao struct { + internalGoLivesDao +} + +var ( + // GoLives is globally public accessible object for table go_lives operations. + GoLives = goLivesDao{ + internal.NewGoLivesDao(), + } +) + +// Fill with you ideas below. diff --git a/internal/dao/go_users.go b/internal/dao/go_users.go new file mode 100644 index 0000000..ca97b1c --- /dev/null +++ b/internal/dao/go_users.go @@ -0,0 +1,27 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package dao + +import ( + "practice_Go/internal/dao/internal" +) + +// internalGoUsersDao is internal type for wrapping internal DAO implements. +type internalGoUsersDao = *internal.GoUsersDao + +// goUsersDao is the data access object for table go_users. +// You can define custom methods on it to extend its functionality as you wish. +type goUsersDao struct { + internalGoUsersDao +} + +var ( + // GoUsers is globally public accessible object for table go_users operations. + GoUsers = goUsersDao{ + internal.NewGoUsersDao(), + } +) + +// Fill with you ideas below. diff --git a/internal/dao/internal/go_live_reservations.go b/internal/dao/internal/go_live_reservations.go new file mode 100644 index 0000000..12929c7 --- /dev/null +++ b/internal/dao/internal/go_live_reservations.go @@ -0,0 +1,77 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// GoLiveReservationsDao is the data access object for table go_live_reservations. +type GoLiveReservationsDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of current DAO. + columns GoLiveReservationsColumns // columns contains all the column names of Table for convenient usage. +} + +// GoLiveReservationsColumns defines and stores column names for table go_live_reservations. +type GoLiveReservationsColumns struct { + Id string // 直播预约关系唯一ID,自增 + UserId string // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveId string // 关联的直播ID,指向go_lives表的id,不能为空 +} + +// goLiveReservationsColumns holds the columns for table go_live_reservations. +var goLiveReservationsColumns = GoLiveReservationsColumns{ + Id: "id", + UserId: "user_id", + LiveId: "live_id", +} + +// NewGoLiveReservationsDao creates and returns a new DAO object for table data access. +func NewGoLiveReservationsDao() *GoLiveReservationsDao { + return &GoLiveReservationsDao{ + group: "default", + table: "go_live_reservations", + columns: goLiveReservationsColumns, + } +} + +// DB retrieves and returns the underlying raw database management object of current DAO. +func (dao *GoLiveReservationsDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of current dao. +func (dao *GoLiveReservationsDao) Table() string { + return dao.table +} + +// Columns returns all column names of current dao. +func (dao *GoLiveReservationsDao) Columns() GoLiveReservationsColumns { + return dao.columns +} + +// Group returns the configuration group name of database of current dao. +func (dao *GoLiveReservationsDao) Group() string { + return dao.group +} + +// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation. +func (dao *GoLiveReservationsDao) Ctx(ctx context.Context) *gdb.Model { + return dao.DB().Model(dao.table).Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rollbacks the transaction and returns the error from function f if it returns non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note that, you should not Commit or Rollback the transaction in function f +// as it is automatically handled by this function. +func (dao *GoLiveReservationsDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/internal/dao/internal/go_lives.go b/internal/dao/internal/go_lives.go new file mode 100644 index 0000000..73fc2f3 --- /dev/null +++ b/internal/dao/internal/go_lives.go @@ -0,0 +1,81 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// GoLivesDao is the data access object for table go_lives. +type GoLivesDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of current DAO. + columns GoLivesColumns // columns contains all the column names of Table for convenient usage. +} + +// GoLivesColumns defines and stores column names for table go_lives. +type GoLivesColumns struct { + Id string // 直播唯一ID,自增 + Cover string // 直播封面路径或相关标识,可为空 + UserId string // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveName string // 直播名称,最大长度255字符,不能为空 + StartTime string // 直播开始时间,不能为空 +} + +// goLivesColumns holds the columns for table go_lives. +var goLivesColumns = GoLivesColumns{ + Id: "id", + Cover: "cover", + UserId: "user_id", + LiveName: "live_name", + StartTime: "start_time", +} + +// NewGoLivesDao creates and returns a new DAO object for table data access. +func NewGoLivesDao() *GoLivesDao { + return &GoLivesDao{ + group: "default", + table: "go_lives", + columns: goLivesColumns, + } +} + +// DB retrieves and returns the underlying raw database management object of current DAO. +func (dao *GoLivesDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of current dao. +func (dao *GoLivesDao) Table() string { + return dao.table +} + +// Columns returns all column names of current dao. +func (dao *GoLivesDao) Columns() GoLivesColumns { + return dao.columns +} + +// Group returns the configuration group name of database of current dao. +func (dao *GoLivesDao) Group() string { + return dao.group +} + +// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation. +func (dao *GoLivesDao) Ctx(ctx context.Context) *gdb.Model { + return dao.DB().Model(dao.table).Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rollbacks the transaction and returns the error from function f if it returns non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note that, you should not Commit or Rollback the transaction in function f +// as it is automatically handled by this function. +func (dao *GoLivesDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/internal/dao/internal/go_users.go b/internal/dao/internal/go_users.go new file mode 100644 index 0000000..370e69a --- /dev/null +++ b/internal/dao/internal/go_users.go @@ -0,0 +1,79 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// GoUsersDao is the data access object for table go_users. +type GoUsersDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of current DAO. + columns GoUsersColumns // columns contains all the column names of Table for convenient usage. +} + +// GoUsersColumns defines and stores column names for table go_users. +type GoUsersColumns struct { + Id string // 用户唯一ID,自增,长度为8位整数 + Username string // 用户名,最大长度255字符,不能为空 + Avatar string // 用户头像路径或相关标识,可为空 + Password string // 用户登录密码,最大长度255字符,不能为空 +} + +// goUsersColumns holds the columns for table go_users. +var goUsersColumns = GoUsersColumns{ + Id: "id", + Username: "username", + Avatar: "avatar", + Password: "password", +} + +// NewGoUsersDao creates and returns a new DAO object for table data access. +func NewGoUsersDao() *GoUsersDao { + return &GoUsersDao{ + group: "default", + table: "go_users", + columns: goUsersColumns, + } +} + +// DB retrieves and returns the underlying raw database management object of current DAO. +func (dao *GoUsersDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of current dao. +func (dao *GoUsersDao) Table() string { + return dao.table +} + +// Columns returns all column names of current dao. +func (dao *GoUsersDao) Columns() GoUsersColumns { + return dao.columns +} + +// Group returns the configuration group name of database of current dao. +func (dao *GoUsersDao) Group() string { + return dao.group +} + +// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation. +func (dao *GoUsersDao) Ctx(ctx context.Context) *gdb.Model { + return dao.DB().Model(dao.table).Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rollbacks the transaction and returns the error from function f if it returns non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note that, you should not Commit or Rollback the transaction in function f +// as it is automatically handled by this function. +func (dao *GoUsersDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/internal/model/do/go_live_reservations.go b/internal/model/do/go_live_reservations.go new file mode 100644 index 0000000..6bd61f6 --- /dev/null +++ b/internal/model/do/go_live_reservations.go @@ -0,0 +1,17 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package do + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// GoLiveReservations is the golang structure of table go_live_reservations for DAO operations like Where/Data. +type GoLiveReservations struct { + g.Meta `orm:"table:go_live_reservations, do:true"` + Id interface{} // 直播预约关系唯一ID,自增 + UserId interface{} // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveId interface{} // 关联的直播ID,指向go_lives表的id,不能为空 +} diff --git a/internal/model/do/go_lives.go b/internal/model/do/go_lives.go new file mode 100644 index 0000000..74bf56c --- /dev/null +++ b/internal/model/do/go_lives.go @@ -0,0 +1,20 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package do + +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" +) + +// GoLives is the golang structure of table go_lives for DAO operations like Where/Data. +type GoLives struct { + g.Meta `orm:"table:go_lives, do:true"` + Id interface{} // 直播唯一ID,自增 + Cover interface{} // 直播封面路径或相关标识,可为空 + UserId interface{} // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + LiveName interface{} // 直播名称,最大长度255字符,不能为空 + StartTime *gtime.Time // 直播开始时间,不能为空 +} diff --git a/internal/model/do/go_users.go b/internal/model/do/go_users.go new file mode 100644 index 0000000..1355588 --- /dev/null +++ b/internal/model/do/go_users.go @@ -0,0 +1,18 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package do + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// GoUsers is the golang structure of table go_users for DAO operations like Where/Data. +type GoUsers struct { + g.Meta `orm:"table:go_users, do:true"` + Id interface{} // 用户唯一ID,自增,长度为8位整数 + Username interface{} // 用户名,最大长度255字符,不能为空 + Avatar interface{} // 用户头像路径或相关标识,可为空 + Password interface{} // 用户登录密码,最大长度255字符,不能为空 +} diff --git a/internal/model/entity/go_live_reservations.go b/internal/model/entity/go_live_reservations.go new file mode 100644 index 0000000..cff0d41 --- /dev/null +++ b/internal/model/entity/go_live_reservations.go @@ -0,0 +1,12 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +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:"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 new file mode 100644 index 0000000..c7740a6 --- /dev/null +++ b/internal/model/entity/go_lives.go @@ -0,0 +1,19 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package entity + +import ( + "github.com/gogf/gf/v2/os/gtime" +) + +// 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:"userId" orm:"user_id" description:"关联的用户ID,指向go_users表的id,长度为8位整数,不能为空"` // 关联的用户ID,指向go_users表的id,长度为8位整数,不能为空 + User *GoUsers `json:"user" orm:"with:id=user_id" description:"关联的用户信息"` // 关联的用户信息 + LiveName string `json:"liveName" orm:"live_name" description:"直播名称,最大长度255字符,不能为空"` // 直播名称,最大长度255字符,不能为空 + StartTime *gtime.Time `json:"startTime" orm:"start_time" description:"直播开始时间,不能为空"` // 直播开始时间,不能为空 +} diff --git a/internal/model/entity/go_users.go b/internal/model/entity/go_users.go new file mode 100644 index 0000000..fb324db --- /dev/null +++ b/internal/model/entity/go_users.go @@ -0,0 +1,13 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package entity + +// GoUsers is the golang structure for table go_users. +type GoUsers struct { + Id int `json:"id" orm:"id" description:"用户唯一ID,自增,长度为8位整数"` // 用户唯一ID,自增,长度为8位整数 + Username string `json:"username" orm:"username" description:"用户名,最大长度255字符,不能为空"` // 用户名,最大长度255字符,不能为空 + Avatar string `json:"avatar" orm:"avatar" description:"用户头像路径或相关标识,可为空"` // 用户头像路径或相关标识,可为空 + Password string `json:"password" orm:"password" description:"用户登录密码,最大长度255字符,不能为空"` // 用户登录密码,最大长度255字符,不能为空 +} diff --git a/main.go b/main.go index cff9434..8dd2208 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,8 @@ package main import ( _ "practice_Go/internal/packed" + _ "github.com/gogf/gf/contrib/drivers/mysql/v2" + "github.com/gogf/gf/v2/os/gctx" "practice_Go/internal/cmd"