123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package dao
- import (
- "fmt"
- "github.com/RaymondCode/simple-demo/api"
- "github.com/RaymondCode/simple-demo/config"
- "github.com/RaymondCode/simple-demo/entities"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- "log"
- "os"
- "strconv"
- "time"
- )
- var Db *gorm.DB
- /*func init() {
- var (
- err error
- )
- Db, err = gorm.Open(mysql.Open("root:97782078@tcp(127.0.0.1:3306)/douyin?charset=utf8&parseTime=True&loc=Local"), &gorm.Config{})
- if err != nil {
- panic(err)
- }
- }*/
- func InitDb() {
- username := config.CONFIG.MySQLConfig.Username // 账号
- password := config.CONFIG.MySQLConfig.Password // 密码
- host := config.CONFIG.MySQLConfig.Host // 数据库地址,可以是Ip或者域名
- port := config.CONFIG.MySQLConfig.Port // 数据库端口
- dbName := config.CONFIG.MySQLConfig.DBname // 数据库名
- // dsn := "用户名:密码@tcp(地址:端口)/数据库名"
- dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?parseTime=True&loc=Local", username, password, host, port, dbName)
- // 配置Gorm连接到MySQL
- mysqlConfig := mysql.Config{
- DSN: dsn, // DSN
- DefaultStringSize: 256, // string 类型字段的默认长度
- SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
- }
- newLogger := logger.New(
- log.New(os.Stdout, "\r\n", log.LstdFlags),
- logger.Config{
- SlowThreshold: time.Millisecond * 0, // 慢 SQL 阈值
- LogLevel: logger.Info, // 日志级别
- IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound(记录未找到)错误
- Colorful: false, // 禁用彩色打印
- },
- )
- if db, err := gorm.Open(mysql.New(mysqlConfig), &gorm.Config{
- Logger: newLogger,
- }); err == nil {
- sqlDB, _ := db.DB()
- sqlDB.SetMaxOpenConns(config.CONFIG.MySQLConfig.MaxOpenConns) // 设置数据库最大连接数
- sqlDB.SetMaxIdleConns(config.CONFIG.MySQLConfig.MaxIdleConns) // 设置上数据库最大闲置连接数
- Db = db
- } else {
- panic("connect server failed")
- }
- }
- func GetList() []api.Video {
- //node := entities.Tbs{Val: 1}
- var lists []entities.Video
- Db.Table("video").Where("id > ?", 0).Order("id desc").Limit(30).Debug().Find(&lists)
- var resLists []api.Video
- var userIdList []int64
- for i := 0; i < len(lists); i++ {
- userIdList = append(userIdList, lists[i].AuthorId)
- }
- for i := 0; i < len(userIdList); i++ {
- fmt.Println(strconv.Itoa(i) + " " + strconv.FormatInt(userIdList[i], 10))
- }
- var temp []entities.User
- tempmap := map[int64]entities.User{}
- Db.Table("user").Where("id In ?", userIdList).Debug().Find(&temp)
- for i := 0; i < len(temp); i++ {
- fmt.Println("", temp[i])
- tempmap[temp[i].Id] = temp[i]
- }
- for key, val := range tempmap {
- fmt.Println(key, val)
- }
- for i := 0; i < len(lists); i++ {
- var userNode entities.User
- value, ok := tempmap[lists[i].AuthorId]
- if ok {
- userNode = value
- } else {
- fmt.Println("去数据库中查找")
- Db.Table("user").Where("id = ?", lists[i].AuthorId).Debug().Find(&userNode)
- }
- resuserNode := api.User{
- Id: userNode.Id,
- Name: userNode.Name,
- FollowCount: userNode.FollowCount,
- FollowerCount: userNode.FollowerCount,
- IsFollow: userNode.IsFollow,
- }
- resLists = append(resLists, api.Video{
- Id: lists[i].Id,
- Author: resuserNode,
- PlayUrl: lists[i].PlayUrl,
- CoverUrl: lists[i].CoverUrl,
- FavoriteCount: lists[i].FavoriteCount,
- CommentCount: lists[i].CommentCount,
- IsFavorite: lists[i].IsFavorite,
- })
- }
- for i := 0; i < len(resLists); i++ {
- fmt.Print("%v+\n", resLists[i])
- }
- return resLists
- }
- func GetListById(id int64) []api.Video {
- fmt.Println("runninggetlistById")
- //node := entities.Tbs{Val: 1}
- var lists []entities.Video
- Db.Table("video").Where("author_id = ?", id).Order("id desc").Limit(30).Debug().Find(&lists)
- var resLists []api.Video
- var userNode entities.User
- Db.Table("user").Where("id = ?", id).Debug().Find(&userNode)
- for i := 0; i < len(lists); i++ {
- resuserNode := api.User{
- Id: userNode.Id,
- Name: userNode.Name,
- FollowCount: userNode.FollowCount,
- FollowerCount: userNode.FollowerCount,
- IsFollow: userNode.IsFollow,
- }
- resLists = append(resLists, api.Video{
- Id: lists[i].Id,
- Author: resuserNode,
- PlayUrl: lists[i].PlayUrl,
- CoverUrl: lists[i].CoverUrl,
- FavoriteCount: lists[i].FavoriteCount,
- CommentCount: lists[i].CommentCount,
- IsFavorite: lists[i].IsFavorite,
- })
- }
- for i := 0; i < len(resLists); i++ {
- fmt.Print("%v+\n", resLists[i])
- }
- return resLists
- }
- type OSSKey struct {
- Key string `form:"key"`
- Secret string `form:"secret"`
- }
- func GetOSSKEy() []string {
- var res OSSKey
- Db.Table("osskey").Debug().First(&res)
- return []string{res.Key, res.Secret}
- }
|