| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- package model
- import (
- "crawler/config"
- "crawler/service"
- "database/sql"
- "encoding/json"
- "fmt"
- "strconv"
- )
- type MovieInfoModel struct {
- SearchMovieInfoParams
- SearchMovieInfo
- MovieInfo
- Nations
- Genres
- Directors
- Actors
- ShowTypes
- Companys
- Audits
- Staffs
- }
- // 일별 박스오피스 검색 변수
- type SearchMovieInfoParams struct {
- Key string `form:"key" url:"key" binding:"required"`
- MovieCd string `form:"movieCd" url:"movieCd" binding:"required"`
- }
- type SearchMovieInfo struct {
- MovieInfoResult struct {
- Source string `json:"source"`
- MovieInfo MovieInfo `json:"movieInfo"`
- } `json:"movieInfoResult"`
- }
- type MovieInfo struct {
- MovieCd string `json:"movieCd"`
- MovieNm string `json:"movieNm"`
- MovieNmEn string `json:"movieNmEn"`
- MovieNmOg string `json:"movieNmOg"`
- ShowTm string `json:"showTm"`
- PrdtYear string `json:"prdtYear"`
- OpenDt string `json:"openDt"`
- PrdtStatNm string `json:"prdtStatNm"`
- TypeNm string `json:"typeNm"`
- Nations []Nations `json:"nations"`
- Genres []Genres `json:"genres"`
- Directors []Directors `json:"directors"`
- Actors []Actors `json:"actors"`
- ShowTypes []ShowTypes `json:"showTypes"`
- Companys []Companys `json:"companys"`
- Audits []Audits `json:"audits"`
- Staffs []Staffs `json:"staffs"`
- }
- type Nations struct {
- NationNm string `json:"nationNm"`
- }
- type Genres struct {
- GenreNm string `json:"genreNm"`
- }
- type Directors struct {
- PeopleNm string `json:"peopleNm"`
- PeopleNmEn string `json:"peopleNmEn"`
- }
- type Actors struct {
- PeopleNm string `json:"peopleNm"`
- PeopleNmEn string `json:"peopleNmEn"`
- Cast string `json:"cast"`
- CastEn string `json:"castEn"`
- }
- type ShowTypes struct {
- ShowTypeGroupNm string `json:"showTypeGroupNm"`
- ShowTypeNm string `json:"showTypeNm"`
- }
- type Companys struct {
- CompanyCd string `json:"companyCd"`
- CompanyNm string `json:"companyNm"`
- CompanyNmEn string `json:"companyNmEn"`
- CompanyPartNm string `json:"companyPartNm"`
- }
- type Audits struct {
- AuditNo string `json:"auditNo"`
- WatchGradeNm string `json:"watchGradeNm"`
- }
- type Staffs struct {
- PeopleNm string `json:"peopleNm"`
- PeopleNmEn string `json:"peopleNmEn"`
- StaffRoleNm string `json:"staffRoleNm"`
- }
- type MovieInfoTable struct {
- InfoID int
- MovieCd string
- MovieNm *string
- MovieNmEn *string
- MovieNmOg *string
- PrdtYear *int
- ShowTm *int
- OpenDt *int
- PrdtStatNm *string
- TypeNm *string
- Nations *string
- Genres *string
- Directors *string
- Actors *string
- ShowTypes *string
- Companys *string
- Audits *string
- Staffs *string
- UpdatedAt *string
- CreatedAt string
- }
- func (this *MovieInfoModel) Insert(row MovieInfo) error {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = `
- INSERT INTO tb_movie_info (
- movie_cd, movie_nm, movie_nm_en, movie_nm_og, prdt_year,
- show_tm, open_dt, prdt_stat_nm, type_nm, nations,
- genres, directors, actors, show_types, companys,
- audits, staffs, updated_at, created_at
- )
- VALUES
- (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, NOW())
- ON DUPLICATE KEY UPDATE
- movie_nm = VALUES(movie_nm), movie_nm_en = VALUES(movie_nm_en), movie_nm_og = VALUES(movie_nm_og),
- prdt_year = VALUES(prdt_year), show_tm = VALUES(show_tm), open_dt = VALUES(open_dt),
- prdt_stat_nm = VALUES(prdt_stat_nm), type_nm = VALUES(type_nm), nations = VALUES(nations),
- genres = VALUES(genres), directors = VALUES(directors), actors = VALUES(actors),
- show_types = VALUES(show_types), companys = VALUES(companys), audits = VALUES(audits),
- staffs = VALUES(staffs), updated_at = NOW();
- `
- data = this.DataFilter(row)
- )
- _, err := conn.Exec(query,
- data.MovieCd, data.MovieNm, data.MovieNmEn, data.MovieNmOg,
- data.PrdtYear, data.ShowTm, data.OpenDt, data.PrdtStatNm, data.TypeNm,
- data.Nations, data.Genres, data.Directors, data.Actors, data.ShowTypes, data.Companys,
- data.Audits, data.Staffs)
- if err != nil {
- db.SetErrorLog(err, query)
- fmt.Println(err)
- return err
- }
- db.SetGeneralLog(config.GL_ACTION_WRITE, query, "insert movie info")
- return nil
- }
- func (this *MovieInfoModel) IsExists(movieCd string) bool {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = "SELECT IF(COUNT(*) <= 0, 0, 1) AS `exists` FROM tb_movie_info 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 info")
- return exists
- }
- func (this *MovieInfoModel) Update(row MovieInfo) error {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = `
- UPDATE tb_movie_info SET
- movie_nm = ?, movie_nm_en = ?, movie_nm_og = ?, prdt_year = ?,
- show_tm = ?, open_dt = ?, prdt_stat_nm = ?, type_nm = ?, nations = ?,
- genres = ?, directors = ?, actors = ?, show_types = ?, companys = ?,
- audits = ?, staffs = ?, updated_at = NOW()
- WHERE movie_cd = ?;
- `
- data = this.DataFilter(row)
- )
- _, err := conn.Exec(query,
- data.MovieNm, data.MovieNmEn, data.MovieNmOg,
- data.PrdtYear, data.ShowTm, data.OpenDt, data.PrdtStatNm, data.TypeNm,
- data.Nations, data.Genres, data.Directors, data.Actors, data.ShowTypes, data.Companys,
- data.Audits, data.Staffs, data.MovieCd)
- if err != nil {
- db.SetErrorLog(err, query)
- return err
- }
- db.SetGeneralLog(config.GL_ACTION_MODIFY, query, "update movie info")
- return nil
- }
- func (this *MovieInfoModel) DataFilter(row MovieInfo) MovieInfoTable {
- var result MovieInfoTable
- result.MovieCd = row.MovieCd
- if row.MovieNm != "" {
- result.MovieNm = &row.MovieNm
- } else {
- result.MovieNm = nil
- }
- if row.MovieNmEn != "" {
- result.MovieNmEn = &row.MovieNmEn
- } else {
- result.MovieNmEn = nil
- }
- if row.MovieNmOg != "" {
- result.MovieNmOg = &row.MovieNmOg
- } else {
- result.MovieNmOg = nil
- }
- if row.PrdtYear != "" {
- prdtYear, _ := strconv.Atoi(row.PrdtYear)
- result.PrdtYear = &prdtYear
- } else {
- result.PrdtYear = nil
- }
- if row.ShowTm != "" {
- showTm, _ := strconv.Atoi(row.ShowTm)
- result.ShowTm = &showTm
- } else {
- result.ShowTm = nil
- }
- if row.OpenDt != "" {
- openDt, _ := strconv.Atoi(row.OpenDt)
- result.OpenDt = &openDt
- } else {
- result.OpenDt = nil
- }
- if row.PrdtStatNm != "" {
- result.PrdtStatNm = &row.PrdtStatNm
- } else {
- result.PrdtStatNm = nil
- }
- if row.TypeNm != "" {
- result.TypeNm = &row.TypeNm
- } else {
- result.TypeNm = nil
- }
- if len(row.Nations) > 0 {
- nations, _ := json.Marshal(row.Nations)
- s := string(nations)
- result.Nations = &s
- } else {
- result.Nations = nil
- }
- if len(row.Genres) > 0 {
- genres, _ := json.Marshal(row.Genres)
- s := string(genres)
- result.Genres = &s
- } else {
- result.Genres = nil
- }
- if len(row.Directors) > 0 {
- directors, _ := json.Marshal(row.Directors)
- s := string(directors)
- result.Directors = &s
- } else {
- result.Directors = nil
- }
- if len(row.Actors) > 0 {
- actors, _ := json.Marshal(row.Actors)
- s := string(actors)
- result.Actors = &s
- } else {
- result.Actors = nil
- }
- if len(row.ShowTypes) > 0 {
- showtypes, _ := json.Marshal(row.ShowTypes)
- s := string(showtypes)
- result.ShowTypes = &s
- } else {
- result.ShowTypes = nil
- }
- if len(row.Companys) > 0 {
- companys, _ := json.Marshal(row.Companys)
- s := string(companys)
- result.Companys = &s
- } else {
- result.Companys = nil
- }
- if len(row.Audits) > 0 {
- audits, _ := json.Marshal(row.Audits)
- s := string(audits)
- result.Audits = &s
- } else {
- result.Audits = nil
- }
- if len(row.Staffs) > 0 {
- staffs, _ := json.Marshal(row.Staffs)
- s := string(staffs)
- result.Staffs = &s
- } else {
- result.Staffs = nil
- }
- return result
- }
- func (this *MovieInfoModel) Info(movieCd string) (MovieInfoTable, error) {
- var (
- db = service.DB_MOVIEW
- conn = db.SQLDB
- query = "SELECT * FROM tb_movie_info WHERE movie_cd = ? LIMIT 1;"
- info MovieInfoTable
- )
- err := conn.QueryRow(query, movieCd).Scan(
- &info.InfoID, &info.MovieCd, &info.MovieNm,
- &info.MovieNmEn, &info.MovieNmOg, &info.PrdtYear,
- &info.ShowTm, &info.OpenDt, &info.PrdtStatNm,
- &info.TypeNm, &info.Nations, &info.Genres,
- &info.Directors, &info.Actors, &info.ShowTypes,
- &info.Companys, &info.Audits, &info.Staffs,
- &info.UpdatedAt, &info.CreatedAt,
- )
- if err != nil && err != sql.ErrNoRows {
- db.SetErrorLog(err, query)
- return info, err
- }
- db.SetGeneralLog(config.GL_ACTION_SELECT, query, "select movie info")
- return info, nil
- }
|