| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- package model
- import (
- "crawler/config"
- "crawler/service"
- "database/sql"
- "encoding/json"
- )
- type MovieDetailModel struct {
- MovieDetail
- Poster
- StillCut
- MovieDetailTable
- }
- type MovieDetail struct {
- MovieCd string
- MainImg string
- ThumbImg string
- Poster []Poster
- StillCut []StillCut
- Synopsis string
- SaleAcc int
- AudiAcc int
- }
- type Poster struct {
- Thumb string
- Origin string
- }
- type StillCut struct {
- Thumb string
- Origin string
- }
- type MovieDetailTable struct {
- DetailID int
- MovieCd string
- MainImg *string
- ThumbImg *string
- Poster *string
- StillCut *string
- Synopsis *string
- SaleAcc *int
- AudiAcc *int
- UpdatedAt *string
- CreatedAt string
- }
- func (this *MovieDetailModel) Insert(row MovieDetail) error {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = `
- INSERT INTO tb_movie_detail (
- movie_cd, main_img, thumb_img, poster, stillcut,
- synopsis, sale_acc, audi_acc, updated_at, created_at
- )
- VALUES
- (?, ?, ?, ?, ?, ?, ?, ?, NULL, NOW())
- ON DUPLICATE KEY UPDATE
- main_img = VALUES(main_img), thumb_img = VALUES(thumb_img),
- poster = VALUES(poster), stillcut = VALUES(stillcut),
- synopsis = VALUES(synopsis), sale_acc = VALUES(sale_acc),
- audi_acc = VALUES(audi_acc), updated_at = NOW();
- `
- data = this.DataFilter(row)
- )
- _, err := conn.Exec(query, data.MovieCd, data.MainImg, data.ThumbImg, data.Poster, data.StillCut, data.Synopsis, data.SaleAcc, data.AudiAcc)
- if err != nil {
- db.SetErrorLog(err, query)
- return err
- }
- db.SetGeneralLog(config.GL_ACTION_WRITE, query, "insert movie detail")
- return nil
- }
- func (this *MovieDetailModel) IsExists(movieCd string) bool {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- // query = "SELECT IF(COUNT(*) <= 0, 0, 1) AS `exists` FROM tb_movie_detail WHERE movie_cd = ? AND thumb_img IS NOT NULL;"
- query = "SELECT IF(COUNT(*) <= 0, 0, 1) AS `exists` FROM tb_movie_detail WHERE movie_cd = ?;"
- exists = false
- )
- err := conn.QueryRow(query, movieCd).Scan(&exists)
- if err != nil {
- db.SetErrorLog(err, query)
- return exists
- }
- db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select exists movie detail")
- return exists
- }
- func (this *MovieDetailModel) Update(row MovieDetail) error {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = `
- UPDATE tb_movie_detail SET
- main_img = ?, thumb_img = ?, poster = ?, stillcut = ?,
- synopsis = ?, sale_acc = ?, audi_acc = ?, updated_at = NOW()
- WHERE movie_cd = ?;
- `
- data = this.DataFilter(row)
- )
- _, err := conn.Exec(query,
- data.MainImg, data.ThumbImg, data.Poster, data.StillCut,
- data.Synopsis, data.SaleAcc, data.AudiAcc, data.MovieCd)
- if err != nil {
- db.SetErrorLog(err, query)
- return err
- }
- db.SetGeneralLog(config.GL_ACTION_MODIFY, query, "update movie detail")
- return nil
- }
- func (this *MovieDetailModel) DataFilter(row MovieDetail) MovieDetailTable {
- var result MovieDetailTable
- result.MovieCd = row.MovieCd
- if row.MainImg != "" && row.MainImg != "#" {
- result.MainImg = &row.MainImg
- } else {
- result.MainImg = nil
- }
- if row.ThumbImg != "" && row.ThumbImg != "#" {
- result.ThumbImg = &row.ThumbImg
- } else {
- result.ThumbImg = nil
- }
- if len(row.Poster) > 0 {
- poster, _ := json.Marshal(row.Poster)
- s := string(poster)
- result.Poster = &s
- }
- if len(row.StillCut) > 0 {
- stillCut, _ := json.Marshal(row.StillCut)
- s := string(stillCut)
- result.StillCut = &s
- }
- if row.Synopsis != "" {
- result.Synopsis = &row.Synopsis
- } else {
- result.Synopsis = nil
- }
- if row.SaleAcc != 0 {
- result.SaleAcc = &row.SaleAcc
- }
- if row.AudiAcc != 0 {
- result.AudiAcc = &row.AudiAcc
- }
- return result
- }
- func (this *MovieDetailModel) Info(movieCd string) (MovieDetailTable, error) {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = "SELECT * FROM tb_movie_detail WHERE movie_cd = ?"
- detail MovieDetailTable
- )
- err := conn.QueryRow(query, movieCd).Scan(
- &detail.DetailID, &detail.MovieCd, &detail.MainImg,
- &detail.ThumbImg, &detail.Poster, &detail.StillCut,
- &detail.Synopsis, &detail.SaleAcc, &detail.AudiAcc,
- &detail.UpdatedAt, &detail.CreatedAt,
- )
- if err != nil && err != sql.ErrNoRows {
- db.SetErrorLog(err, query)
- return detail, err
- }
- db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select movie detail")
- return detail, nil
- }
|