movieDetail.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package model
  2. import (
  3. "crawler/config"
  4. "crawler/service"
  5. "database/sql"
  6. "encoding/json"
  7. )
  8. type MovieDetailModel struct {
  9. MovieDetail
  10. Poster
  11. StillCut
  12. MovieDetailTable
  13. }
  14. type MovieDetail struct {
  15. MovieCd string
  16. MainImg string
  17. ThumbImg string
  18. Poster []Poster
  19. StillCut []StillCut
  20. Synopsis string
  21. SaleAcc int
  22. AudiAcc int
  23. }
  24. type Poster struct {
  25. Thumb string
  26. Origin string
  27. }
  28. type StillCut struct {
  29. Thumb string
  30. Origin string
  31. }
  32. type MovieDetailTable struct {
  33. DetailID int
  34. MovieCd string
  35. MainImg *string
  36. ThumbImg *string
  37. Poster *string
  38. StillCut *string
  39. Synopsis *string
  40. SaleAcc *int
  41. AudiAcc *int
  42. UpdatedAt *string
  43. CreatedAt string
  44. }
  45. func (this *MovieDetailModel) Insert(row MovieDetail) error {
  46. var (
  47. db = service.DB_MOVIEW
  48. conn = db.SQLDB
  49. query = `
  50. INSERT INTO tb_movie_detail (
  51. movie_cd, main_img, thumb_img, poster, stillcut,
  52. synopsis, sale_acc, audi_acc, updated_at, created_at
  53. )
  54. VALUES
  55. (?, ?, ?, ?, ?, ?, ?, ?, NULL, NOW())
  56. ON DUPLICATE KEY UPDATE
  57. main_img = VALUES(main_img), thumb_img = VALUES(thumb_img),
  58. poster = VALUES(poster), stillcut = VALUES(stillcut),
  59. synopsis = VALUES(synopsis), sale_acc = VALUES(sale_acc),
  60. audi_acc = VALUES(audi_acc), updated_at = NOW();
  61. `
  62. data = this.DataFilter(row)
  63. )
  64. _, err := conn.Exec(query, data.MovieCd, data.MainImg, data.ThumbImg, data.Poster, data.StillCut, data.Synopsis, data.SaleAcc, data.AudiAcc)
  65. if err != nil {
  66. db.SetErrorLog(err, query)
  67. return err
  68. }
  69. db.SetGeneralLog(config.GL_ACTION_WRITE, query, "insert movie detail")
  70. return nil
  71. }
  72. func (this *MovieDetailModel) IsExists(movieCd string) bool {
  73. var (
  74. db = service.DB_MOVIEW
  75. conn = db.SQLDB
  76. query = "SELECT IF(COUNT(*) <= 0, 0, 1) AS `exists` FROM tb_movie_detail WHERE movie_cd = ? AND thumb_img IS NOT NULL;"
  77. exists = false
  78. )
  79. err := conn.QueryRow(query, movieCd).Scan(&exists)
  80. if err != nil {
  81. db.SetErrorLog(err, query)
  82. return exists
  83. }
  84. db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select exists movie detail")
  85. return exists
  86. }
  87. func (this *MovieDetailModel) Update(row MovieDetail) error {
  88. var (
  89. db = service.DB_MOVIEW
  90. conn = db.SQLDB
  91. query = `
  92. UPDATE tb_movie_detail SET
  93. main_img = ?, thumb_img = ?, poster = ?, stillcut = ?,
  94. synopsis = ?, sale_acc = ?, audi_acc = ?, updated_at = NOW()
  95. WHERE movie_cd = ?;
  96. `
  97. data = this.DataFilter(row)
  98. )
  99. _, err := conn.Exec(query,
  100. data.MainImg, data.ThumbImg, data.Poster, data.StillCut,
  101. data.Synopsis, data.SaleAcc, data.AudiAcc, data.MovieCd)
  102. if err != nil {
  103. db.SetErrorLog(err, query)
  104. return err
  105. }
  106. db.SetGeneralLog(config.GL_ACTION_MODIFY, query, "update movie detail")
  107. return nil
  108. }
  109. func (this *MovieDetailModel) DataFilter(row MovieDetail) MovieDetailTable {
  110. var result MovieDetailTable
  111. result.MovieCd = row.MovieCd
  112. if row.MainImg != "" && row.MainImg != "#" {
  113. result.MainImg = &row.MainImg
  114. } else {
  115. result.MainImg = nil
  116. }
  117. if row.ThumbImg != "" && row.ThumbImg != "#" {
  118. result.ThumbImg = &row.ThumbImg
  119. } else {
  120. result.ThumbImg = nil
  121. }
  122. if len(row.Poster) > 0 {
  123. poster, _ := json.Marshal(row.Poster)
  124. s := string(poster)
  125. result.Poster = &s
  126. }
  127. if len(row.StillCut) > 0 {
  128. stillCut, _ := json.Marshal(row.StillCut)
  129. s := string(stillCut)
  130. result.StillCut = &s
  131. }
  132. if row.Synopsis != "" {
  133. result.Synopsis = &row.Synopsis
  134. } else {
  135. result.Synopsis = nil
  136. }
  137. if row.SaleAcc != 0 {
  138. result.SaleAcc = &row.SaleAcc
  139. }
  140. if row.AudiAcc != 0 {
  141. result.AudiAcc = &row.AudiAcc
  142. }
  143. return result
  144. }
  145. func (this *MovieDetailModel) Info(movieCd string) (MovieDetailTable, error) {
  146. var (
  147. db = service.DB_MOVIEW
  148. conn = db.SQLDB
  149. query = "SELECT * FROM tb_movie_detail WHERE movie_cd = ?"
  150. detail MovieDetailTable
  151. )
  152. err := conn.QueryRow(query, movieCd).Scan(
  153. &detail.DetailID, &detail.MovieCd, &detail.MainImg,
  154. &detail.ThumbImg, &detail.Poster, &detail.StillCut,
  155. &detail.Synopsis, &detail.SaleAcc, &detail.AudiAcc,
  156. &detail.UpdatedAt, &detail.CreatedAt,
  157. )
  158. if err != nil && err != sql.ErrNoRows {
  159. db.SetErrorLog(err, query)
  160. return detail, err
  161. }
  162. db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select movie detail")
  163. return detail, nil
  164. }