123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package dao
- import (
- "context"
- "fmt"
- "encoding/json"
- "go-common/app/admin/openplatform/sug/model"
- "go-common/library/database/sql"
- "go-common/library/log"
- "time"
- )
- const (
- _getItem = "SELECT `items_id`,`name`,`brief`,`img` FROM `items` WHERE `items_id` = ? AND `is_lastest_version` = 1"
- _insertMatch = "INSERT INTO `sug_filter` (`season_id`,`items_id`,`type`,`sort`,`season_name`,`items_name`,`head_pic`,`sug_pic`) VALUE (?,?,?,?,?,?,?,?)"
- _updateMatch = "UPDATE `sug_filter` SET `type` = ?,`season_name`=?,`items_name`=?,`sort`=?,`sug_pic`=? WHERE `season_id` = ? AND `items_id` = ?"
- _matchExist = "SELECT `type` FROM `sug_filter` WHERE `season_id` = ? AND `items_id` = ?"
- )
- var _selectMatch = "SELECT `season_id`,`items_id`,`sort`,`season_name`,`items_name`,`head_pic`,`sug_pic` FROM `sug_filter` where type = 1"
- // GetItem get mall items from db.
- func (d *Dao) GetItem(c context.Context, itemsID int64) (item model.Item, err error) {
- row := d.dbMall.QueryRow(c, _getItem, itemsID)
- if err = row.Scan(&item.ItemsID, &item.Name, &item.Brief, &item.Img); err != nil {
- log.Error("Get item %d error,err(%v)", itemsID, err)
- return
- }
- if item.Brief == "" {
- item.Brief = item.Name
- item.Name = ""
- }
- var imgListArr []string
- if err = json.Unmarshal([]byte(item.Img), &imgListArr); err != nil {
- log.Error("get first img err[%s] (%v)", item.Img, err)
- return
- }
- item.Img = imgListArr[0]
- return
- }
- // UpdateMatch update match.
- func (d *Dao) UpdateMatch(c context.Context, season model.Season, item model.Item, typeInt int8, sugPic string) (affect int64, err error) {
- res, err := d.dbTicket.Exec(c, _updateMatch, typeInt, season.Title, item.Name, time.Now().Unix(), sugPic, season.ID, item.ItemsID)
- if err != nil {
- log.Error("row.exec error(%v)", err)
- return
- }
- affect, err = res.RowsAffected()
- return
- }
- // InsertMatch insert match.
- func (d *Dao) InsertMatch(c context.Context, season model.Season, item model.Item, typeInt int8, sort int64, location string) (affect int64, err error) {
- res, err := d.dbTicket.Exec(c, _insertMatch, season.ID, item.ItemsID, typeInt, sort, season.Title, item.Name, item.Img, location)
- if err != nil {
- log.Error("row.exec error(%v)", err)
- return
- }
- affect, err = res.RowsAffected()
- return
- }
- // GetMatchType get match type.
- func (d *Dao) GetMatchType(c context.Context, seasonID, itemsID int64) (matchType int8, err error) {
- row := d.dbTicket.QueryRow(c, _matchExist, seasonID, itemsID)
- if err = row.Scan(&matchType); err != nil {
- if err == sql.ErrNoRows {
- return -1, nil
- }
- return
- }
- return
- }
- // SearchV2 search match from db
- func (d *Dao) SearchV2(c context.Context, params *model.Search) (list []model.SugList, err error) {
- var rows *sql.Rows
- sqlStr := _selectMatch
- if params.ItemsID > 0 {
- sqlStr += fmt.Sprintf(" and items_id = %d", params.ItemsID)
- }
- if params.SeasonID > 0 {
- sqlStr += fmt.Sprintf(" and season_id = %d", params.SeasonID)
- }
- if rows, err = d.dbTicket.Query(c, sqlStr); err != nil {
- log.Error("d._selectMatchSQL.Query error(%v)", err)
- return
- }
- for rows.Next() {
- sug := new(model.SugList)
- if err = rows.Scan(&sug.SeasonId, &sug.ItemsID, &sug.Score, &sug.SeasonName, &sug.ItemsName, &sug.PicURL, &sug.SugURL); err != nil {
- log.Error("row.Scan() error(%v)", err)
- continue
- }
- list = append(list, *sug)
- }
- return
- }
|