2019-04-22 02:59:20 +00:00

48 lines
1.3 KiB
Go

package show
import (
"context"
"encoding/json"
"time"
"go-common/app/service/main/resource/model"
"go-common/library/log"
)
const (
_relateSQL = "SELECT `id`,`param`,`title`,`rec_reason`,`position`,`plat_ver`,`stime`,`etime`,`pgc_ids` FROM app_rcmd_pos WHERE `state`=1 AND `goto`='special' AND `pgc_relation`=1 AND `stime`<? AND `etime`>?"
)
// Relate get all relate rec.
func (d *Dao) Relate(c context.Context, now time.Time) (relates []*model.Relate, err error) {
rows, err := d.db.Query(c, _relateSQL, now, now)
if err != nil {
log.Error("d.Relate.Query error(%v)", err)
return
}
defer rows.Close()
for rows.Next() {
r := &model.Relate{}
var verStr string
if err = rows.Scan(&r.ID, &r.Param, &r.Title, &r.RecReason, &r.Position, &verStr, &r.STime, &r.ETime, &r.PgcIDs); err != nil {
log.Error("d.Relate.rows.Scan error(%v)", err)
return
}
if verStr != "" {
var verStruct []*model.Version
if err = json.Unmarshal([]byte(verStr), &verStruct); err != nil {
log.Error("json.Unmarshal(%s) error(%v)", verStr, err)
return
}
vm := make(map[int8][]*model.Version, len(verStruct))
for _, v := range verStruct {
vm[v.Plat] = append(vm[v.Plat], v)
}
r.Versions = vm
}
relates = append(relates, r)
}
err = rows.Err()
return
}