movieDetail.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. query = "SELECT IF(COUNT(*) <= 0, 0, 1) AS `exists` FROM tb_movie_detail WHERE movie_cd = ?;"
  78. exists = false
  79. )
  80. err := conn.QueryRow(query, movieCd).Scan(&exists)
  81. if err != nil {
  82. db.SetErrorLog(err, query)
  83. return exists
  84. }
  85. db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select exists movie detail")
  86. return exists
  87. }
  88. func (this *MovieDetailModel) Update(row MovieDetail) error {
  89. var (
  90. db = service.DB_MOVIEW
  91. conn = db.SQLDB
  92. query = `
  93. UPDATE tb_movie_detail SET
  94. main_img = ?, thumb_img = ?, poster = ?, stillcut = ?,
  95. synopsis = ?, sale_acc = ?, audi_acc = ?, updated_at = NOW()
  96. WHERE movie_cd = ?;
  97. `
  98. data = this.DataFilter(row)
  99. )
  100. _, err := conn.Exec(query,
  101. data.MainImg, data.ThumbImg, data.Poster, data.StillCut,
  102. data.Synopsis, data.SaleAcc, data.AudiAcc, data.MovieCd)
  103. if err != nil {
  104. db.SetErrorLog(err, query)
  105. return err
  106. }
  107. db.SetGeneralLog(config.GL_ACTION_MODIFY, query, "update movie detail")
  108. return nil
  109. }
  110. func (this *MovieDetailModel) DataFilter(row MovieDetail) MovieDetailTable {
  111. var result MovieDetailTable
  112. result.MovieCd = row.MovieCd
  113. if row.MainImg != "" && row.MainImg != "#" {
  114. result.MainImg = &row.MainImg
  115. } else {
  116. result.MainImg = nil
  117. }
  118. if row.ThumbImg != "" && row.ThumbImg != "#" {
  119. result.ThumbImg = &row.ThumbImg
  120. } else {
  121. result.ThumbImg = nil
  122. }
  123. if len(row.Poster) > 0 {
  124. poster, _ := json.Marshal(row.Poster)
  125. s := string(poster)
  126. result.Poster = &s
  127. }
  128. if len(row.StillCut) > 0 {
  129. stillCut, _ := json.Marshal(row.StillCut)
  130. s := string(stillCut)
  131. result.StillCut = &s
  132. }
  133. if row.Synopsis != "" {
  134. result.Synopsis = &row.Synopsis
  135. } else {
  136. result.Synopsis = nil
  137. }
  138. if row.SaleAcc != 0 {
  139. result.SaleAcc = &row.SaleAcc
  140. }
  141. if row.AudiAcc != 0 {
  142. result.AudiAcc = &row.AudiAcc
  143. }
  144. return result
  145. }
  146. func (this *MovieDetailModel) Info(movieCd string) (MovieDetailTable, error) {
  147. var (
  148. db = service.DB_MOVIEW
  149. conn = db.SQLDB
  150. query = "SELECT * FROM tb_movie_detail WHERE movie_cd = ?"
  151. detail MovieDetailTable
  152. )
  153. err := conn.QueryRow(query, movieCd).Scan(
  154. &detail.DetailID, &detail.MovieCd, &detail.MainImg,
  155. &detail.ThumbImg, &detail.Poster, &detail.StillCut,
  156. &detail.Synopsis, &detail.SaleAcc, &detail.AudiAcc,
  157. &detail.UpdatedAt, &detail.CreatedAt,
  158. )
  159. if err != nil && err != sql.ErrNoRows {
  160. db.SetErrorLog(err, query)
  161. return detail, err
  162. }
  163. db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select movie detail")
  164. return detail, nil
  165. }