MediaListModel.go 2.79 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
package Pull

import (
	"encoding/json"
	"fmt"
	"github.com/sirupsen/logrus"
	"src/Common/Request"
	"src/Config"
	"strings"
	"unsafe"
)

type Media struct {
	SiteId		string 	`json:"site_id"`
	Sps 		[]*Sp	`json:"sps"`
	JsonUrl 	string 	`json:"jsonUrl"`
	NewsId		string	`json:"newsId"`
	NewsName	string	`json:"newsName"`
	NodeId		string	`json:"nodeId"`
	NodeName	string	`json:"nodeName"`
	// Md5			string 	`json:"md5"`
	// PlayUrl		string	`json:"playUrl"`
}

type Sp struct {
	Spid 		string 	`json:"sp_id"`
	PushMode 	string 	`json:"push_mode"` //是否自动转推:0手动,1自动
}

type MediaList struct {
	CurrentPage int   `json:"currentPage"`
	PageNum     int   `json:"pageNum"`
	PageSize    int   `json:"pageSize"`
	Total       int   `json:"total"`
	List        []*Media `json:"list"`
}

type MediaListModel struct {
	Config *Config.Config
	Siteid string
}

func (this *MediaListModel) FetchList(date string, page int) *MediaList {
	wasu_api_incrementList := ""
	config,ok := this.Config.Sites.Get(this.Siteid)
	if ok {
		conf,ok:=config.(map[string]interface{})
		if ok {
			wasu_api_incrementList=conf["pull_api"].(string)
		}
	}

	if wasu_api_incrementList == "" {
		logrus.Error("PULL Site :",this.Siteid," 缺少配置项:pull_api")
	}

	mediaList := new(MediaList)
	if ok {
		url := fmt.Sprintf("%s?date=%s&page=%d", wasu_api_incrementList, date, page)

		data, err := Request.Get(url)
		if err == nil {
			json.Unmarshal([]byte(data), mediaList)
		}
	}
	return mediaList
}

func (this *MediaListModel) UpdateMediaList(mediaList *MediaList) bool {

	sps := []*Sp{}

	spids:=""
	config,ok := this.Config.Sites.Get(this.Siteid)
	if ok {
		conf,ok:=config.(map[string]interface{})
		if ok {
			spids=conf["spids"].(string)
		}
	}
	spids = ","+spids+","

	for _, tmp := range this.Config.Sps.Items() {
		sp := tmp.(map[string]interface{})
		spid := sp["id"].(string);

		idx := strings.Index(spids, ","+spid+",")
		if idx > -1 {
			sp1 := new(Sp)
			sp1.Spid = spid
			sp1.PushMode = sp["wasu_incrementList_push_mode"].(string);
			sps=append(sps,sp1)
		}
	}


	l := len(mediaList.List)
	nOk := 0
	for _, media := range mediaList.List {
		media.SiteId=this.Siteid
		media.Sps=sps
		if this.UpdateMedia(media) {
			nOk++
		}
	}
	b := false
	if nOk == l {
		b = true
	}
	logrus.Debugln("UpdateMediaList : ok/total :", nOk, "/", l)
	return b
}

func (this *MediaListModel) UpdateMedia(media *Media) bool {

	center_api_media_update, ok := this.Config.Sys.Get("center_api_media_update")
	b := false
	if ok {
		inData, _ := json.Marshal(media)
		//fmt.Printf("****** media_info : %v",media)
		data, err := Request.Post(center_api_media_update.(string), *(*string)(unsafe.Pointer(&inData)))
		//data, err := Request.Post(center_api_media_update.(string), string(inData))
		if err == nil {
			if data == "true" {
				b = true
			}
		}
	}

	return b
}