You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
3.0 KiB

  1. package mainPage
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. "practice_Go/internal/model/dto"
  6. "practice_Go/internal/service"
  7. "time"
  8. )
  9. // 定义一个MainPage结构体
  10. type MainPage struct{}
  11. // 创建一个新的MainPage实例 初始化
  12. func NewMainPage() *MainPage {
  13. return &MainPage{}
  14. }
  15. // 获取文章,视频
  16. func (c *MainPage) GetShows(req *ghttp.Request) {
  17. shows, err := service.GetShows().GetShows(req.Context())
  18. if err == nil {
  19. req.Response.WriteJson(dto.Result{
  20. Code: 200,
  21. Message: "success",
  22. Data: shows,
  23. })
  24. } else {
  25. req.Response.WriteJson(dto.Result{
  26. Code: 500,
  27. Message: "error",
  28. Data: err,
  29. })
  30. }
  31. }
  32. // 获取视频
  33. func (c *MainPage) GetVideos(req *ghttp.Request) {
  34. shows, err := service.GetShows().GetVideos(req.Context())
  35. if err == nil {
  36. req.Response.WriteJson(dto.Result{
  37. Code: 200,
  38. Message: "success",
  39. Data: shows,
  40. })
  41. } else {
  42. req.Response.WriteJson(dto.Result{
  43. Code: 500,
  44. Message: "error",
  45. Data: err,
  46. })
  47. }
  48. }
  49. // 新增数据
  50. func (c *MainPage) AddShow(req *ghttp.Request) {
  51. type Show struct {
  52. Id int `json:"id"`
  53. Name string `json:"name"`
  54. Cover string `json:"cover"`
  55. UserId int `json:"userId"`
  56. ReleaseTime time.Time `json:"releaseTime"`
  57. VideoDuration time.Duration `json:"videoDuration"`
  58. ViewCount int `json:"viewCount"`
  59. Comments int `json:"comments"`
  60. Likes int `json:"likes"`
  61. FlagType int `json:"flagType"`
  62. ChannelId int `json:"channelId"`
  63. }
  64. ////通过map
  65. //data := g.Map{
  66. // "name": "视频1",
  67. // "userId": 1,
  68. // "likes": 6,
  69. // "comments": 3,
  70. // "viewCount": 10,
  71. //}
  72. //
  73. ////通过结构体对象
  74. //data := Show{
  75. // Name: "视频1",
  76. // UserId: 1,
  77. // Likes: 6,
  78. // Comments: 3,
  79. // ReleaseTime: gtime.New("2024/10/23"),
  80. //}
  81. //
  82. md := g.Model("show")
  83. //
  84. //批量插入多条数据
  85. ////通过map
  86. //data := g.List{
  87. // g.Map{
  88. // "name": "视频1",
  89. // "userId": 1,
  90. // "likes": 6,
  91. // "comments": 3,
  92. // "viewCount": 23,
  93. // },
  94. // g.Map{
  95. // "name": "视频2",
  96. // "userId": 2,
  97. // "likes": 6,
  98. // "comments": 3,
  99. // "viewCount": 20,
  100. // },
  101. // g.Map{
  102. // "name": "文章1",
  103. // "userId": 3,
  104. // "likes": 6,
  105. // "comments": 3,
  106. // "viewCount": 15,
  107. // },
  108. //}
  109. //通过结构体对象
  110. data := g.Array{
  111. //里边是结构体集合
  112. }
  113. ////写法一 插入
  114. ////result, err := md.Data(data).Insert()
  115. ////写法二 插入 主键冲突,报错
  116. ////result, err := md.Insert(data) //insert into ...
  117. ////写法三 主键冲突,就新数据 替换 旧数据
  118. ////result, err := md.Replace(data) //replace into ...
  119. ////写法四 主键冲突,就根据主键 更新 数据
  120. //result, err := md.Save(data) //insert into into ... on duplicate key update ...
  121. //插入并获取id
  122. result, err := md.InsertAndGetId(data)
  123. if err == nil {
  124. req.Response.WriteJson(result)
  125. } else {
  126. req.Response.WriteJson(err)
  127. }
  128. }