Commit 5408ad92 authored by wangjiangze's avatar wangjiangze

Merge branch 'develop' of http://code.dev.soooner.com:18000/wuxiande/SooonerHotel into develop

parents 761ab6ff 6150ed0c
媒资实时下线接口
请求:
GET http://api.hotel.wasu.tv/api/center/media_offline?spid=1&mid=33431345
输入:
spid : 合作方标识(我们提供,每个合作方标识不一样)
mid : 媒资标识代码(经纬cms中的媒资id)
输出:
样例 : {"code":0,"msg":"ok"}
code : 0-成功,1001-传入的媒资参数有问题,1002,2001-下线失败
msg : 结果说明
\ No newline at end of file
媒资实时下线接口
请求:
GET http://api.hotel.wasu.tv/api/center/media_offline?spid=1&mid=33431345&sw_time=1523345555&sw_sign=xxxxx
输入:
spid : 合作方标识(我们提供,每个合作方标识不一样)
mid : 媒资标识代码(经纬cms中的媒资id)
sw_time : 请求时间戳(秒)
sw_sign : 请求签名 md5(spid&mid&sw_time&key)
如:
md5(1&33431345&1523345555&key)
key : 我们提供(每个spid对应不同的key)
输出:
样例 : {"code":0,"msg":"ok"}
code : 0-成功
101-请求过期
102-签名验证失败
1001-传入的媒资参数有问题
1002-sp info err
2001-下线失败
msg : 结果说明
小帅参数:
spid=1
key=4396a121f631e4fa777b70b7
\ No newline at end of file
......@@ -44,4 +44,3 @@ func (this *WasuChecker) check() {
}
}
......@@ -28,13 +28,15 @@ import (
**/
type Media struct {
Spid string `json:"spid"`
PushMode string `json:"push_mode"` //是否自动转推:0手动,1自动
JsonUrl string `json:"jsonUrl"`
//Md5 string `json:"md5"`
//NewsId string `json:"newsId"`
//NewsName string `json:"newsName"`
//PlayUrl string `json:"playUrl"`
Spid string `json:"spid"`
PushMode string `json:"push_mode"` //是否自动转推:0手动,1自动
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 MediaList struct {
......@@ -116,7 +118,9 @@ func (this *MediaListModel) UpdateMedia(media *Media) bool {
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
......
......@@ -39,7 +39,7 @@ func (this *SpModel) pull() {
mediaModel.Config = this.Config
mediaModel.Spid = this.Spid
date := DateTime.Format("YYYYMMDD", time.Now())
//date:="20190627"
//date:="20190901"
mediaList := mediaModel.FetchList(date, 1)
ok := mediaModel.UpdateMediaList(mediaList)
if !ok {
......@@ -58,4 +58,6 @@ func (this *SpModel) pull() {
}
}
}
}
\ No newline at end of file
}
......@@ -5,3 +5,7 @@ log_path = ./
log_filename = center_service.log
[release]
api_conf_sys = http://api.hotel.wasu.tv/api/center/conf_sys #系统配置接口
api_conf_sps = http://api.hotel.wasu.tv/api/center/conf_sps #合作方配置接口
log_path = ./
log_filename = center_service.log
\ No newline at end of file
......@@ -9,6 +9,21 @@
*/
class CenterAction extends Action
{
function valid($sw_time,$sw_sign,$my_sign)
{
$result["code"]=0;
$ts = time() - $sw_time;
if ($ts<=-600||$ts>=600){
$result["code"]=101;
$result["msg"]="timeout!";
}else{
if ($sw_sign!=$my_sign){
$result["code"]=102;
$result["msg"]="sign err!";
}
}
return $result;
}
/**
* 系统配置接口
*/
......@@ -18,7 +33,7 @@ class CenterAction extends Action
foreach ($arr as $item){
$result[$item["k"]]=$item["v"];
}
header('Content-type: application/json'); //json
echo json_encode($result);
exit;
}
......@@ -39,7 +54,30 @@ class CenterAction extends Action
$result[$item["id"]]["push_offset"]=$item["push_offset"];
$result[$item["id"]][$item["k"]]=$item["v"];
}
header('Content-type: application/json'); //json
echo json_encode($result);
exit;
}
/**
* 站点配置接口
*
*/
public function conf_sites(){
$sql = "SELECT site.id,site.name,site.pull_api,site.offline_key,site.check_seconds,sp.spids FROM sh_site site"
." JOIN (SELECT site_id,GROUP_CONCAT(id) spids"
." FROM sh_sp WHERE status=0 GROUP BY site_id) sp ON sp.site_id=site.id"
." WHERE site.status=0;";
$arr = M("")->query($sql);
foreach ($arr as $item){
$result[$item["id"]]["id"]=$item["id"];
$result[$item["id"]]["name"]=$item["name"];
$result[$item["id"]]["pull_api"]=$item["pull_api"];
$result[$item["id"]]["offline_key"]=$item["offline_key"];
$result[$item["id"]]["check_seconds"]=$item["check_seconds"];
$result[$item["id"]]["spids"]=$item["spids"];
}
header('Content-type: application/json'); //json
echo json_encode($result);
exit;
}
......@@ -48,20 +86,106 @@ class CenterAction extends Action
}
/*
* 媒资实时下线接口(华数经纬cms调用,下线媒资,同时需要下线所有酒店片库中相应媒资)
* GET /api/center/media_offline?spid=1&mid=33431345&sw_time=1523345555&sw_sign=xxxxxx
* 参数说明:
* spid : 合作方标识(我们提供,每个合作方标识不一样)
* mid : 媒资标识代码(经纬cms中的媒资id)
* sw_time : 请求时间戳
* sw_sign : 请求签名 md5(spid&mid&sw_time&key)
* 返回说明:
* {"code":0,"msg":"ok"}
* code : 0-成功,101,1001-传入的媒资参数有问题,2001-下线失败
* 注意:
* 站点改造:spid传入siteid
* key从站点表获取 offline_key
* 下线云端片库,下线关联站点的所以合作方酒店片库
*/
public function media_offline(){
$siteid = $_GET["spid"];
$mid = $_GET["mid"];
$sw_time = $_GET["sw_time"];
$sw_sign =$_GET["sw_sign"];
$status = 2;
$modelSite=D("Site");
$whereSite["id"]=$siteid;
$spConf=$modelSite->field("offline_key")->where($whereSite)->find();
$key = $spConf["offline_key"];
if ($key) {
$pre_sign = "$siteid&$mid&$sw_time&$key";
// echo "pre:".$pre_sign;
$my_sign = md5($pre_sign);
$result = $this->valid($sw_time,$sw_sign,$my_sign);
if ($result["code"]==0) {//valid ok
$model = D("Media");
$where["code"] = $mid;
$where["site_id"] = $siteid;
$tmp = $model->field("id")->where($where)->find();
$id = $tmp["id"];
if ($id) {
//下线云端片库
$data["id"] = $id;
$data["status"] = $status;
$data["updatetime"] = date('Y-m-d H:i:s');
$r = $model->save($data);
//下线该站点下所有关联合作方的酒店片库
$sql = "select id from sh_sp where site_id=$siteid";
$sps = M("")->query($sql);
$total = count($sps);
$nok = 0;
foreach ($sps as $sp){
$spid = $sp["id"];
$tb = "sh_hotel_media_map_$spid";
$sql = "update $tb set status=$status,updatetime='" . $data["updatetime"] . "' where media_id=$id";
$r = M("")->execute($sql);
if ($r)
$nok ++;
}
if ($total==$nok) {
$result["code"] = 0;
$result["msg"] = "ok";
} else {
$result["code"] = 2001;
$result["msg"] = "offline failture!";
}
} else {
$result["code"] = 1001;
$result["msg"] = "media info unexpect!";
}
}
}else{
$result["code"]=1002;
$result["msg"]="sp info unexpect";
}
echo json_encode($result);
exit;
}
/**
* 修改云端片库媒资信息
* 参数:
* spid
* push_mode : 是否转推:0不转推,1转推(写入酒店片库)
* url : 华数媒资详情url
* site_id
* sps : [{"sp_id":"1","push_mode":"1"},{"sp_id":"2","push_mode":"0"}]
* $json["jsonUrl"]
* $json["newsId"]
* $json["newsName"]
* $json["nodeId"]
* $json["nodeName"]
*
*/
public function media_update(){
$rawData = @file_get_contents("php://input");
//echo $rawData."\n";
$json = json_decode($rawData,true);
$spid=$json["spid"];
$pushMode = $json["push_mode"]; //
$url = $json["jsonUrl"];
$inputJson = json_decode($rawData,true);
$site_id=$inputJson["site_id"];
$url = $inputJson["jsonUrl"];
$content = file_get_contents($url);
$json = json_decode($content,true);
......@@ -84,14 +208,23 @@ class CenterAction extends Action
$data["_updatetime"]=$this->null2str($json["updateTime"]);
$data["programType"]=$json["programType"];
$data["nodeId"]=intval($json["nodeId"]);
$data["sp_id"]=intval($spid);
$data["site_id"]=intval($site_id);
$data["nodeName"]=$this->null2str($json["nodeName"]);
//圆动和互动新增字段()
$data['newsImage_1'] = $this->null2str($json["newsImage_1"]);
$data['newsImage_2'] = $this->null2str($json["newsImage_2"]);
$data['newsImage_3'] = $this->null2str($json["newsImage_3"]);
$data['englishTitle'] = $this->null2str($json["englishTitle"]);
//end
$model = D("Media");
$where["code"]=$data["code"];
$where["sp_id"]=$data["sp_id"];
$where["site_id"]=$data["site_id"];
$tmp = $model->field("id")->where($where)->find();
$id= $tmp["id"];
// var_dump($tmp);exit;
$code=0;
if($id){
$data['id'] = $id;
$data["updatetime"]=date('Y-m-d H:i:s');
......@@ -101,22 +234,39 @@ class CenterAction extends Action
echo 'true';
}else{
echo 'false';
$code=1001;
}
}else{
$id = $model->add($data);
$data["id"]=$id;
if($id){
echo 'true';
$b=true;
}else{
echo 'false';
$code=1002;
}
}
if ($pushMode=="1") {
$this->media_auto_push($data);
//修改酒店片库
$this->media_auto_push($data,$inputJson);
if ($code){ //更新媒资失败: 记录拉取失败日志
$this->log_pull_failture($code,$inputJson);
}
exit;
}
function log_pull_failture($code,&$json){
$data["site_id"]=intval($json["site_id"]);
$data["jsonUrl"]=$json["jsonUrl"];
$data["newsId"]=$json["newsId"];
$data["newsName"]=$json["newsName"];
$data["nodeId"]=$json["nodeId"];
$data["nodeName"]=$json["nodeName"];
$data["code"]=$code;
D("PullLog")->add($data);
}
function null2str($str){
if (is_null($str)){
$str="";
......@@ -128,34 +278,43 @@ class CenterAction extends Action
* 批量修改媒资状态
* 批量推送添加
*/
function media_auto_push(&$data){
$sp_id=$data["sp_id"];
$media_id = $data["id"];
$status = $data["status"];
$updateSQL="UPDATE sh_hotel_media_map_$sp_id SET status=$status WHERE media_id=$media_id;";
M('')->execute($updateSQL);
$sql ="SELECT h.id,hm.media_id FROM sh_hotel h"
." LEFT JOIN (SELECT media_id,hotel_id FROM sh_hotel_media_map_$sp_id WHERE media_id=$media_id) hm ON h.id=hm.hotel_id"
." WHERE h.sp_id=$sp_id AND media_id IS NULL;";
$arr = M("")->query($sql);
// var_dump($arr);
function media_auto_push(&$data,&$json){
$sps = $json["sps"];
foreach ($sps as $sp) {
$push_mode = $sp["push_mode"];
if ($push_mode==1) {
$sp_id = $sp["sp_id"];
$media_id = $data["id"];
$status = $data["status"];
$updateSQL = "UPDATE sh_hotel_media_map_$sp_id SET status=$status WHERE media_id=$media_id;";
M('')->execute($updateSQL);
$sql = "SELECT h.id,hm.media_id FROM sh_hotel h"
. " LEFT JOIN (SELECT media_id,hotel_id FROM sh_hotel_media_map_$sp_id WHERE media_id=$media_id) hm ON h.id=hm.hotel_id"
. " WHERE h.sp_id=$sp_id AND media_id IS NULL;";
$arr = M("")->query($sql);
foreach ($arr as $item) {
$dataList[] = array("media_id" => $media_id, "hotel_id" => $item["id"], "status" => $status, "status_inject" => 0);
}
foreach ($arr as $item){
$dataList[]=array("media_id"=>$media_id,"hotel_id"=>$item["id"],"status"=>$status,"status_inject"=>0);
if (!empty($dataList)) {
M("$sp_id", "sh_hotel_media_map_")->addAll($dataList);
}
}
}
if (!empty($dataList)){
M("$sp_id","sh_hotel_media_map_")->addAll($dataList);
}
}
public function test_auto_push(){
$data["sp_id"]=1;
$json["site_id"]=1;
//sps : [{"sp_id":"1","push_mode":"1"},{"sp_id":"2","push_mode":"0"}]
$json["sps"]=array(array("sp_id"=>1,"push_mode"=>1),array("sp_id"=>2,"push_mode"=>0));
$data["site_id"]=1;
$data["id"]=300;
$data["status"]=2;
$this->media_auto_push($data);
$this->media_auto_push($data,$json);
}
/**
......@@ -166,16 +325,25 @@ class CenterAction extends Action
* start : 开始时间
* end : 结束时间
* page : 请求页
* page_size : 每页记录数
*/
public function incrementList(){
$page_size = 10;
// $page_size = 10;
$page_size = $_GET["page_size"];
if (empty($page_size)){
$page_size = 10;
}
$whereHotelid = "1=1";
$hid = $_GET["hid"];
if (!empty($hid)){
$whereHotelid = "hotel_id=$hid";
}
$spid = $_GET["spid"];
$start = date('Y-m-d H:i:s',strtotime($_GET["start"]));//date('Y-m-d H:i:s', strtotime($date))
$end = date('Y-m-d H:i:s',strtotime($_GET["end"]));
$page=$_GET["page"];
$sqlTotal = "SELECT count(1) total FROM sh_hotel_media_map_$spid WHERE updatetime BETWEEN '$start' AND '$end';";
$sqlTotal = "SELECT count(1) total FROM sh_hotel_media_map_$spid WHERE $whereHotelid AND hm.status_inject=1 AND updatetime BETWEEN '$start' AND '$end';";
$totalArr = M("")->query($sqlTotal);
$total = 0;
if (count($totalArr)>0){
......@@ -183,20 +351,16 @@ class CenterAction extends Action
}
$page_num = ceil($total/$page_size);
$limit_from = ($page-1)*$page_size;
// $sql="SELECT mw.code id,mw.title,mw.description,mw.url_play playUrl,mw.url_pic picUrl"
// .",mw.year,mw.type,mw.score,mw.region,mw.actor,mw.director"
// .",h.code hotelId,hm.status,hm.status_inject statusInject"
// ." FROM (SELECT media_id,hotel_id,status,status_inject FROM sh_hotel_media_map_$spid"
// ." WHERE updatetime BETWEEN'$start' AND '$end' ORDER BY updatetime,media_id ASC LIMIT $limit_from,$page_size) hm"
// ." JOIN sh_media_wasu mw ON mw.id=hm.media_id"
// ." JOIN sh_hotel h ON h.id=hm.hotel_id";
$sql = "SELECT mw.code id,mw.title,mw.description,mw.programType,mw.url_pic picUrl"
$fields = "mw.code id,mw.title,mw.description,mw.programType,mw.url_pic picUrl"
. ",mw.year,mw.type,mw.score,mw.region,mw.actor,mw.director"
. ",h.code hotelId,hm.status,hm.status_inject statusInject"
. " FROM (SELECT media_id,hotel_id,status,status_inject FROM sh_hotel_media_map_$spid"
. " WHERE updatetime BETWEEN'$start' AND '$end' ORDER BY updatetime,media_id ASC LIMIT $limit_from,$page_size) hm"
. " JOIN sh_media_wasu mw ON mw.id=hm.media_id"
. " JOIN sh_hotel h ON h.id=hm.hotel_id";
. ",hm.code hotelId,hm.status,hm.status_inject statusInject"
. ",mw.type,mw.nodeId,mw.nodeName"
. ",mw.newsImage_1,mw.newsImage_2,mw.newsImage_3,mw.englishTitle";
$sql = "SELECT $fields"
. " FROM (SELECT hm.media_id,h.code,hm.status,hm.status_inject FROM sh_hotel_media_map_$spid hm,sh_hotel h"
. " WHERE $whereHotelid AND hm.status_inject=1 AND hm.updatetime BETWEEN '$start' AND '$end' AND h.id=hm.hotel_id ORDER BY hm.updatetime,hm.media_id ASC LIMIT $limit_from,$page_size) hm"
. " JOIN sh_media_wasu mw ON mw.id=hm.media_id";
// echo $sql;exit;
$list = M("")->query($sql);
......@@ -206,6 +370,7 @@ class CenterAction extends Action
$result["page_num"]=(int)$page_num;
$result["list"] = $list;
header('Content-type: application/json'); //json
echo json_encode($result);
exit;
}
......@@ -235,7 +400,7 @@ class CenterAction extends Action
$end = date('Y-m-d H:i:s', strtotime($_GET["end"]));
}
$sqlTotal = "SELECT count(1) total FROM sh_hotel_media_map_$spid WHERE updatetime BETWEEN '$start' AND '$end';";
$sqlTotal = "SELECT count(1) total FROM sh_hotel_media_map_$spid WHERE status_inject=1 AND updatetime BETWEEN '$start' AND '$end';";
$totalArr = M("")->query($sqlTotal);
$total = 0;
if (count($totalArr)>0){
......@@ -285,13 +450,17 @@ class CenterAction extends Action
if($url!=""&&$key!="") {
$limit_from = ($page - 1) * $page_size;
$sql = "SELECT mw.code id,mw.title,mw.description,mw.programType,mw.url_pic picUrl"
$fields = "mw.code id,mw.title,mw.description,mw.programType,mw.url_pic picUrl"
. ",mw.year,mw.type,mw.score,mw.region,mw.actor,mw.director"
. ",h.code hotelId,hm.status,hm.status_inject statusInject"
. " FROM (SELECT media_id,hotel_id,status,status_inject FROM sh_hotel_media_map_$spid"
. " WHERE updatetime BETWEEN'$start' AND '$end' ORDER BY updatetime,media_id ASC LIMIT $limit_from,$page_size) hm"
. " JOIN sh_media_wasu mw ON mw.id=hm.media_id"
. " JOIN sh_hotel h ON h.id=hm.hotel_id";
. ",hm.code hotelId,hm.status,hm.status_inject statusInject"
. ",mw.type,mw.nodeId,mw.nodeName"
. ",mw.newsImage_1,mw.newsImage_2,mw.newsImage_3,mw.englishTitle";
$sql = "SELECT $fields"
. " FROM (SELECT hm.media_id,h.code,hm.status,hm.status_inject FROM sh_hotel_media_map_$spid hm,sh_hotel h"
. " WHERE hm.updatetime AND hm.status_inject=1 BETWEEN '$start' AND '$end' AND h.id=hm.hotel_id ORDER BY hm.updatetime,hm.media_id ASC LIMIT $limit_from,$page_size) hm"
. " JOIN sh_media_wasu mw ON mw.id=hm.media_id";
// echo $sql;exit;
$list = M("")->query($sql);//获取增量媒资列表
......@@ -338,7 +507,7 @@ class CenterAction extends Action
$log["req_json"]=$rawData;
$log["resp_json"]=$data;
$log["code"]=$result["code"];
D("LogPush")->add($log);
D("PushLog")->add($log);
}
echo json_encode($result);
exit;
......
......@@ -87,9 +87,13 @@ class HotelAction extends CommonAction{
$where["type_code"]="wasu_incrementList_push_mode";
$push_mode = D("Conf")->field("v")->where($where)->find();
if ($push_mode["v"]==1) {
$sql = "INSERT INTO sh_hotel_media_map_$spid (media_id,hotel_id,status,status_inject)"
. " SELECT id,$id,status,0 FROM sh_media_wasu WHERE sp_id=$spid;";
$model->execute($sql);
$spinfo = D("Sp")->field("site_id")->where(array("id"=>$spid))->find();
$siteid = $spinfo["site_id"];
if ($siteid){
$sql = "INSERT INTO sh_hotel_media_map_$spid (media_id,hotel_id,status,status_inject)"
. " SELECT id,$id,status,0 FROM sh_media_wasu WHERE site_id=$siteid;";
$model->execute($sql);
}
}
echo 'true';
......
<?php
class PullLogModel extends RelationModel{
protected $tableName = 'sh_log_pull'; //重新定义表名
}
\ No newline at end of file
<?php
class SiteModel extends RelationModel{
protected $tableName = 'sh_site'; //重新定义表名
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment