/* 微信接口的个股新闻 */ import $ from 'jquery' import axios from 'axios' import urlObj from "./urlObj.js" function JSNewsResource() { this.Domain = "https://cfebb09f.zealink.com"; //API域名 this.CacheDomain = "https://cfebb09fcache.zealink.com"; //缓存域名 } var g_JSNewsResource = new JSNewsResource(); //新闻类型 var NEWS_TYPE= { STOCK_NEWS: 1, //个股新闻 ANNOUNCEMENT_ANALYSE: 2, //公告解读 STOCK_INTERACT: 3, //互动易 MARKET_SEARCH: 4, //调研 STOCK_NEGATIVE: 5, //负面新闻 STOCK_REPORT: 6, //公告 NEW_STOCK_NEGATIVE: 7, //新的负面新闻接口 NewsAllByES OFFICIAL_WEBSITE_NEWS: 8, //官网新闻 SENIOR_EXECUTIVE_NEWS: 9, //高管新闻 VIEWPOINTS_BY_VIP: 10, //大V观点新闻 TOP_MANAGERS_RISK_NEWS: 11, //高管风险新闻 FAILURE_REGROUP_NEWS: 12, //重组失败 TOP_MANAGERS_RISK_LIST: 13, //高管风险类型新闻 SEARCH_NOTICE: 14, //公告搜索(uts/服务/公告) } //调研 function MarketSearch(symbol) { this.newMethod = INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.Data = { Search: [], Aggregate: [] }; var date = new Date(); this.EndDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); //获取结束时间 this.StartDate = (date.getFullYear() - 1) * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); this.ApiUrl = g_JSNewsResource.Domain + '/API/InvestorRelationsList'; this.SearchKey = null; //获取第1页 this.GetFirstPage = function () { var self = this; //清空数据 this.Data = { Search: [], Aggregate: [] }; this.Count = 0; this.CacheCount = 0; if (typeof(this.Symbol) == "string") { var data = { "symbol": [this.Symbol], "filed": ["name", "symbol", "releasedate", "title", "id", "researchdate", "level", "type", "researcher"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "calccount": 1, "start": 0, "end": this.PageSize, "userid": "qiuyh" } } else { var data = { "symbol": this.Symbol, "filed": ["name", "symbol", "releasedate", "title", "id", "researchdate", "level", "type", "researcher"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, "start": 0, "end": this.PageSize, "userid": "qiuyh", "aggregate": this.Aggregate } } $.ajax({ url: this.ApiUrl, data: data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, fail: function (request) { self.RecvError(request); } }) } this.RecvData = function (recvData) { // console.log("调研", recvData) var data = recvData; if (this.Count <= 0) this.Count = data.count; var info = {}; info.Start = this.Data.length; info.End = this.Data.length; if (data.aggregate) { for (var i in data.aggregate) { this.Data.Aggregate.push({ Name: data.aggregate[i].value2, Symbol: data.aggregate[i].value, Count: data.aggregate[i].count }); } // this.Data.Aggregate = data.aggregate; } for (var i in data.list) { var item = data.list[i]; this.Data.Search.push({ ID: item.id, Name: item.name, Symbol: item.symbol, Releasedate: item.releasedate, Researchdate: item.researchdate, Title: item.title, Type: item.type, Researcher: item.researcher, Level: item.level }) if (i > 0) ++info.End; } this.CacheCount = this.Data.Search.length; this.InvokeCallback(info); //通知页面 } this.RecvError = function (request) { console.log("[StockInteract::RecvError] ", request) } this.InvokeCallback = function () { if (typeof(this.Callback) != 'function') return; var info = {}; this.Callback(info, this); } //下拉获取下一页 this.GetNextPage = function () { var self = this; var start = this.Data.Search.length; var end = start + this.PageSize; var data = { "symbol": [this.Symbol], "filed": ["name", "symbol", "releasedate", "title", "id", "researchdate", "level", "type", "researcher"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "calccount": 1, "start": start, "end": end, "userid": "qiuyh" }; var start = this.Data.Search.length; var end = start + this.PageSize; if (typeof(this.Symbol) == "string") { var data = { "symbol": [this.Symbol], "filed": ["name", "symbol", "releasedate", "title", "id", "researchdate", "level", "type", "researcher"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "calccount": 1, "start": start, "end": end, "userid": "qiuyh" }; } else { var data = { "symbol": this.Symbol, "filed": ["name", "symbol", "releasedate", "title", "id", "researchdate", "level", "type", "researcher"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, "start": start, "end": end, "userid": "qiuyh", "aggregate": this.Aggregate } } if (this.Data.Search.length < this.Count) { $.ajax({ url: this.ApiUrl, data: data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { this.RecvError(request); } }) } else { } } } //新闻资讯基类 function INewsBase(symbol) { this.Symbol = symbol; //股票代码 this.Name; //股票名称 this.Callback; //回调 function(info,news) info: {Start:请求的新闻起始位置 , End:新闻的结束位置 } , news 对应的 新闻类 this.Data = new Array(); //新闻数据 { Date:日期, Title:标题 , Source:来源, ID:新闻ID} this.Count; //一共的新闻个数 this.CacheCount; //已下载的新闻个数 this.PageSize=10; //每页的新闻个数 this.ApiUrl; //数据请求地址 this.StartDate; //开始时间 this.EndDate; //结束时间 this.Aggregate = 10; //统计排名 //设置默认的查询区间 this.SetDefautQueryDate=function() { // 取最近1年的数据 let date = new Date(); this.StartDate = (date.getFullYear()-1) * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); this.EndDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); } //把查询的股票统一转化为数组 this.GetQuerySymbol=function() { let arySymbol=new Array(); if (typeof(this.Symbol)=='string') arySymbol.push(this.Symbol); //单个股票 else arySymbol=this.Symbol.slice(0); return arySymbol; } //是否是最后一页 this.IsEndPage=function() { if (this.Count==null || this.Count<=0) return true; return this.CacheCount>=this.Count; } //获取第1页 this.GetFirstPage=function() { } //下拉获取下一页 this.GetNextPage=function() { } } //新闻详情基类 function INewsContent(id) { this.ID = id; //新闻id this.Symbol; //股票代码 this.Name; //股票名称 this.ApiUrl; this.Callback; //回调 function(this) this.Data; //数据 { Symbol:代码, Name:名称, Title:标题, Content:内容, Date:日期 .....} this.Error; //如果调用失败 把错误信息写这里 this.GetContent = function () { } } var RECV_DATA_TYPE = { NEWS_DATA: 1, //个股新闻数据 } //个股新闻 function StockNews(symbol) { this.newMethod=INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; var date = new Date(); this.EndDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); //获取结束时间 this.StartDate = (date.getFullYear() - 1) * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); this.ApiUrl = g_JSNewsResource.Domain+'/API/NewsStockList'; var self = this; //获取第1页 this.GetFirstPage=function() { //清空数据 this.Data = []; this.Count = 0; this.CacheCount = 0; $.ajax({ url: this.ApiUrl, data: { "symbol": [this.Symbol], "filed": ["name", "symbol", "releasedate", "title", "id", "source"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": null, "calccount": -1, "start": 0, "end": 10, "userid": null }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { this.RecvError(request); } }); } this.RecvData = function(data) { if (this.Count <= 0) this.Count = data.count; var info = {}; info.Start = this.Data.length; info.End = this.Data.length; var list=data.list; for (var i in list) { var item = list[i]; this.Data.push({ ID: item.id, Name:item.name, Releasedate: item.releasedate, Source: item.source, Symbol: item.symbol, Title: item.title }) if (i > 0) ++info.End; } this.CacheCount = this.Data.length; this.InvokeCallback(info); //通知页面 } this.RecvError = function (request) { console.log("[StockInteract::RecvError] ", request) } this.InvokeCallback = function(){ if (typeof (this.Callback) != 'function') return; var info = {}; this.Callback(info,this); } //下拉获取下一页 this.GetNextPage=function() { var self = this; var start = this.Data.length; var end = start + this.PageSize; if(start <= this.Count){ $.ajax({ url: this.ApiUrl, data: { "symbol": [this.Symbol], "filed": ["name", "symbol", "releasedate", "title", "id", "source"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": null, "calccount": -1, "start": start, "end": end, "userid": null }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) }else { alert("数据已全部加载!") } } } //公告新闻 function StockReport(symbol){ this.newMethod = INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain + '/API/ReportListByES'; //走公司内网查询接口 this.ReportType=[]; //公告类型数组 //获取第1页 this.GetFirstPage = function () { //清空数据 this.Data = []; this.Count = 0; this.CacheCount = 0; var self = this; let arySymbol = this.GetQuerySymbol(); if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); let reportType=null; if (this.ReportType && this.ReportType.length > 0) reportType = this.ReportType[0]; //暂时只支持1个类型 $.ajax({ url: this.ApiUrl, data: { "symbol": arySymbol, "filed": ["symbol", "name", "releasedate", "title", "id", "source"], "querydate": { "startDate": this.StartDate, "endDate": this.EndDate }, "search": null, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": null, 'type': reportType }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData = function (recvData) { var data = recvData; if (this.Count <= 0) this.Count = data.count; //一共的新闻个数 var info = {}; info.Start = this.Data.length; info.End = this.Data.length; for (let i in data.report) { let item = data.report[i]; this.Data.push( { Name: item.name, Symbol: item.symbol, ID: item.id, Data: item.releasedate.substring(0, 4) + "-" + item.releasedate.substring(4, 6) + "-" + item.releasedate.substring(6, 8), Title: item.title, Source: item.source, Type:item.type, Showurl: item.showurl }); if (i > 0)++info.End; } this.CacheCount = this.Data.length; // this.InvokeCallback(info); this.InvokeCallback(this.Data); } this.RecvError = function (request) { console.log("[StockReport::RecvError] ", request) } this.InvokeCallback = function (info) { if (typeof (this.Callback) != 'function') return; this.Callback(info, this); } //下拉获取下一页 this.GetNextPage = function () { var self = this; let arySymbol = this.GetQuerySymbol(); if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); var start = this.Data.length; var end = start + this.PageSize; $.ajax({ url: this.ApiUrl, data: { "symbol": arySymbol, "filed": ["symbol", "name", "releasedate", "title", "id", "source"], "querydate": { "startDate": self.StartDate, "endDate": self.EndDate }, "search": null, "calccount": 0, //下页页不需要统计个数了 "start": start, "end": end, "userid": null }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } } //个股公告分析 function AnnouncementAnalyse(symbol) { this.newMethod = INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain+'/API/AnnualReportAllType'; this.Error=null; this.GetFirstPage = function () { this.Error = null; //清空错误信息 this.Data=[]; this.Name = null; var self=this; var date=new Date(); // 取最近3年的数据 var start = (date.getFullYear()-3) * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); var end = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); $.ajax({ url: this.ApiUrl, data: { "symbol": this.Symbol, "querydate": { "StartDate": start, "EndDate": end } }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request) } }) } this.RecvData=function(data) { if (data.list == null) return this.InvokeCallback(); for(var i in data.list) { var item=data.list[i]; if (item==null || item.info==null || item.info.length<=0) continue; var analyseData= { Name:item.typename, Data:new Array() }; for(var j in item.info) { var subItem=item.info[j]; analyseData.Data.push({Date:subItem.date,Content:subItem.abstract}); if (this.Name==null) this.Name=subItem.name; } this.Data.push(analyseData); } this.InvokeCallback(); //通知页面 } this.RecvError = function (request) { console.log('[AnnouncementAnalyse:RecvError] ',"request"); this.Error="请求失败"; } this.InvokeCallback=function() { if (typeof(this.Callback)!='function') return; var info={}; this.Callback(info,this); } } //互动易 function StockInteract(symbol) { this.newMethod=INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain+'/API/NewsInteract'; this.Data = { News: [], Aggregate: [] }; this.SearchKey = ""; this.userid = null; //获取第1页 this.GetFirstPage=function() { //清空数据 this.Data={ News: [], Aggregate: [] }; this.Count=0; this.CacheCount=0; var self=this; // 取最近1年的数据 // var date = new Date(); // var startDate = (date.getFullYear()-1) * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); // var endDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); if (typeof(this.Symbol) == "string") { var data = { "symbol": [this.Symbol], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": this.userid } } else { var data = { "symbol": this.Symbol, "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": this.userid, "aggregate": this.Aggregate } } $.ajax({ url: this.ApiUrl, data:data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData=function(data) { console.log(data,"datadatadata:::::::") if (this.Count<=0) this.Count=data.count; //一共的新闻个数 var info={}; info.Start = this.Data.length; info.End = this.Data.length; if (data.aggregate) { for (var i in data.aggregate) { this.Data.Aggregate.push({ Name: data.aggregate[i].value2, Symbol: data.aggregate[i].value, Count: data.aggregate[i].count }); } // this.Data.Aggregate = data.aggregate; } for(var i in data.list) { var item=data.list[i]; this.Data.News.push({ ID: item.id, Data: item.questondate, Title: item.question, Author: item.questioner, Data2: item.answerdate, Author2: item.answerer, Content: item.answer, Symbol: item.symbol }); if (i>0) ++info.End; } this.CacheCount = this.Data.length; this.InvokeCallback(info); } this.RecvError=function(request) { console.log("[StockInteract::RecvError] ", request) } this.InvokeCallback = function (info) { if (typeof (this.Callback) != 'function') return; this.Callback(info, this); } //下拉获取下一页 this.GetNextPage = function () { var self = this; var start = this.Data.News.length; var end = start + this.PageSize; if (typeof(this.Symbol) == "string") { var data = { "symbol": [this.Symbol], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, //返回一共的数据个数 "start": start, "end": end, "userid": this.userid } } else { var data = { "symbol": this.Symbol, "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": this.SearchKey, "calccount": 1, //返回一共的数据个数 "start": start, "end": end, "userid": this.userid, "aggregate": this.Aggregate } } if (this.Count > this.Data.News.length){ $.ajax({ url: this.ApiUrl, data: data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } } //模块搜索 this.ModuleSearch = function (search) { var self = this; //清空数据 this.Data = { News: [], Aggregate: [] }; this.Count = 0; this.CacheCount = 0; // // 取最近1年的数据 // var date = new Date(); // var startDate = (date.getFullYear()) * 10000 + (date.getMonth() - 2) * 100 + date.getDate(); // var endDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); if (this.Symbol == null) { var data = { "symbol": [], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": search, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": this.userid, "aggregate": this.Aggregate } } else { var data = { "symbol": [this.Symbol], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": search, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": this.userid } } $.ajax({ url: this.ApiUrl, data:data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } //模块搜索获取下一页 this.ModuleGetNextPage = function (search) { var self = this; // 取最近1年的数据 // var date = new Date(); // var startDate = (date.getFullYear()) * 10000 + (date.getMonth() - 2) * 100 + date.getDate(); // var endDate = date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate(); var start = this.Data.News.length; var end = start + this.PageSize; if (this.Symbol == null) { var data = { "symbol": [], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": search, "calccount": 1, //返回一共的数据个数 "start": start, "end": end, "userid": this.userid } } else { var data = { "symbol": [this.Symbol], "filed": ["symbol", "questioner", "question", "questondate", "answerer", "answer", "answerdate", "id"], // "querydate": {"StartDate": startDate, "EndDate": endDate}, "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": search, "calccount": 1, //返回一共的数据个数 "start": start, "end": end, "userid": this.userid } } $.ajax({ url: this.ApiUrl, data:data, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } } // 公告搜索 function SearchNotice(symbol) { this.newMethod = INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain + '/API/reportStockList'; // g_JSNewsResource.Domain + '/API/reportStockList' ; 'http://web7.umydata.com/API/reportStockList' this.PageIndex = 0; this.SearchKey = ""; this.userid = ""; this.Aggregate = []; this.GetFirstPage = function () { //清空数据 this.Data = []; this.Count = 0; this.CacheCount = 0; var self = this; if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); $.ajax({ url: this.ApiUrl, data:{ symbol: this.symbol, filed: ["name", "symbol", "releasedate", "title", "id"], querydate: { "StartDate": this.StartDate, "EndDate": this.EndDate }, calccount: 1, start: this.PageSize * this.PageIndex, end: this.PageSize * (this.PageIndex + 1), search: this.SearchKey, userid: this.userid, aggregate: 10 }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData = function (recvData) { // console.log(recvData.data.list,"前"); let data = recvData, aggregate = data.aggregate, formatData = data.report.map(e => Object.assign(e, { showurl: e.showurl ? e.showurl.replace('http://rpt.zealink.com', 'https://reporth5.zealink.com') : '', releasedate: e.releasedate.substring(0, 4) + "-" + e.releasedate.substring(4, 6) + "-" + e.releasedate.substring(6, 8) })); // console.log(formatData, "后"); if (this.Count <= 0) this.Count = data.count; //一共的新闻个数 if (aggregate) { for (let i in aggregate) { this.Aggregate.push({ Name: aggregate[i].value2, Symbol: aggregate[i].value, Count: aggregate[i].count }); } } this.Data = this.Data.concat(formatData); this.CacheCount = this.Data.length; if (this.Callback) this.Callback(this); } this.RecvError = function (request) { console.log("[StockReport::RecvError] ", request) } this.GetNextPage = function () { this.PageIndex++; var self = this; if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); var pages = this.Count / this.PageSize, totalPages = (this.Count % this.PageSize) > 0 ? Math.floor(pages) + 1 : Math.floor(pages); if (this.PageIndex <= totalPages) { $.ajax({ url: this.ApiUrl, data: { symbol: this.symbol, filed: ["name", "symbol", "releasedate", "title", "id"], querydate: { "StartDate": this.StartDate, "EndDate": this.EndDate }, calccount: 1, start: this.PageSize * this.PageIndex, end: this.PageSize * (this.PageIndex + 1), search: this.SearchKey, userid: this.userid, aggregate: 10 }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } else { } } } //新闻详情 function StockNewsContent(id) { this.newMethod = INewsContent; //派生 this.newMethod(id); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain+"/API/NewsStockDetail2" this.GetContent = function () { var self=this; //清空数据 this.Name=null; this.Error=null; this.Data=null; $.ajax({ url: this.ApiUrl, data: { "userid": null, "id": this.ID, "symbol":this.Symbol, "filed": ["name", "symbol", "releasedate", "title", "id", "content", "link","source"] }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData=function(data) { var detail=data.detail; if (detail == null) return this.InvokeCallback(); //把API数据格式 转换成自己的对外的统一格式, this.Data={}; this.Data.Date = detail.releasedate; this.Data.Content = detail.content; this.Data.Title = detail.title; this.Data.Source = detail.source; //新闻关联的其他股票列表 var relation=new Array(); for (var i in data.stocklist) { var item = data.stocklist[i]; relation.push({Symbol:item.symbol,Name:item.name}); } this.Data.Relation = relation; this.Name = detail.name; this.InvokeCallback(); } this.RecvError=function(reqeust) { this.Error="请求失败"; this.InvokeCallback(); } this.InvokeCallback = function() { if (typeof (this.Callback) != 'function') return; this.Callback(this); } } //调研详情 function marketSearchInfo(id) { this.newMethod = INewsContent; //派生 this.newMethod(id); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain + "/API/InvestorRelationsDetail" this.GetContent = function () { var self = this; //清空数据 this.Name = null; this.Error = null; this.Data = null; $.ajax({ url: this.ApiUrl, data: { "userid": null, "id": this.ID, "filed": ["name", "symbol", "releasedate", "id", "content", "level", "researchdate", "type","researcher"] }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData = function (recvData) { // console.log("[StockNewsContent::RecvData] ",recvData); // var data = recvData.data; var detail = recvData.list[0]; if (detail == null) return this.InvokeCallback(); //把API数据格式 转换成自己的对外的统一格式, this.Data = {}; this.Data.Releasedate = detail.releasedate; this.Data.Researchdate = detail.researchdate; this.Data.Content = detail.content; this.Data.Name = detail.name; this.Data.Symbol = detail.symbol; this.Data.Type = detail.type; this.Data.Level = detail.level; this.Data.Id = detail.id; this.Data.Researcher = detail.researcher; this.InvokeCallback(); } this.RecvError = function (reqeust) { this.Error = "请求失败"; this.InvokeCallback(); } this.InvokeCallback = function () { if (typeof(this.Callback) != 'function') return; this.Callback(this); } } //负面新闻 function StockNegative(symbol) { this.newMethod=INewsBase; //派生 this.newMethod(symbol); delete this.newMethod; this.ApiUrl = g_JSNewsResource.Domain+'/API/NewsNegative'; //获取第1页 this.GetFirstPage=function() { //清空数据 this.Data=[]; this.Count=0; this.CacheCount=0; var self=this; let arySymbol=this.GetQuerySymbol(); if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); $.ajax({ url: this.ApiUrl, data: { "symbol": arySymbol, "filed": ["symbol","name","releasedate","title","id","source"], "querydate": { "StartDate": this.StartDate, "EndDate": this.EndDate }, "search": null, "calccount": 1, //返回一共的数据个数 "start": 0, "end": this.PageSize, "userid": null }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } this.RecvData=function(data) { if (this.Count<=0) this.Count=data.count; //一共的新闻个数 var info={}; info.Start = this.Data.length; info.End = this.Data.length; for(var i in data.list) { var item=data.list[i]; this.Data.push( { ID:item.id, Data: item.releasedate, Title: item.title, Source:item.source }); if (i>0) ++info.End; } this.CacheCount = this.Data.length; this.InvokeCallback(info); } this.RecvError=function(request) { console.log("[StockInteract::RecvError] ", request) } this.InvokeCallback = function (info) { if (typeof (this.Callback) != 'function') return; this.Callback(info, this); } //下拉获取下一页 this.GetNextPage = function () { var self = this; let arySymbol=this.GetQuerySymbol(); if (!this.StartDate || !this.EndDate) this.SetDefautQueryDate(); var start=this.Data.length; var end = start + this.PageSize; $.ajax({ url: this.ApiUrl, data: { "symbol": arySymbol, "filed": ["symbol","name","releasedate","title","id","source"], "querydate": { "StartDate": startDate, "EndDate": endDate }, "search": null, "calccount": 0, //下页页不需要统计个数了 "start": start, "end": end, "userid": null }, method: "POST", dataType: "json", success: function (data) { self.RecvData(data); }, error: function (request) { self.RecvError(request); } }) } } function JSNews() { } JSNews.SetDomain = function (domain, cacheDomain) { if (domain) g_JSNewsResource.Domain = domain; if (cacheDomain) g_JSNewsResource.CacheDomain = cacheDomain; } //获取新闻列表 JSNews.GetNews=function(symbol,newsType) { switch(newsType) { case NEWS_TYPE.STOCK_NEWS: return new StockNews(symbol); case NEWS_TYPE.ANNOUNCEMENT_ANALYSE: return new AnnouncementAnalyse(symbol); case NEWS_TYPE.STOCK_INTERACT: return new StockInteract(symbol); case NEWS_TYPE.STOCK_NEGATIVE: return new StockNegative(symbol); case NEWS_TYPE.STOCK_REPORT: return new StockReport(symbol); case NEWS_TYPE.MARKET_SEARCH: return new MarketSearch(symbol); // case NEWS_TYPE.NEW_STOCK_NEGATIVE: // return new newStockReport(symbol); // case NEWS_TYPE.OFFICIAL_WEBSITE_NEWS: // return new OfficialWebsiteNews(symbol); // case NEWS_TYPE.SENIOR_EXECUTIVE_NEWS: // return new SeniorExecutiveNews(symbol); // case NEWS_TYPE.VIEWPOINTS_BY_VIP: // return new ViewpointsByVIP(symbol); // case NEWS_TYPE.TOP_MANAGERS_RISK_NEWS: // return new TopManagersRiskNews(symbol); // case NEWS_TYPE.FAILURE_REGROUP_NEWS: // return new FailureRegroupNews(symbol); // case NEWS_TYPE.TOP_MANAGERS_RISK_LIST: // return new TopManagersRiskList(symbol); case NEWS_TYPE.SEARCH_NOTICE: return new SearchNotice(symbol); } } //获取新闻内容 JSNews.GetContent = function (id, newsType) { switch (newsType) { case NEWS_TYPE.STOCK_NEWS: return new StockNewsContent(id); case NEWS_TYPE.MARKET_SEARCH: return new marketSearchInfo(id); break; } } //请求财务数据 function GetFinanceData(){ this.symbol = "600000.sh"; // var JsonURL = g_JSNewsResource.CacheDomain + "/cache/analyze/latestfinance/shsz/"+ symbol +".json"; this.getApiJson = function () { var self = this; $.ajax({ url: g_JSNewsResource.CacheDomain + "/cache/analyze/latestfinance/shsz/"+ this.symbol +".json", method: "GET", dataType: "json", success: function (data) { // console.log(data, "请求财务数据:::") self.RecvData(data); }, fail: function (request) { self.RecvError(request); } }) } this.RecvData = function (recvData) { // console.log(recvData,"recvData::::::::") if (recvData.stock.length != 0) { this.Data = recvData.stock[0]; } if (this.Callback) this.Callback(this); } this.RecvError = function (recvError) { console.log(recvError, "recvError") } } GetFinanceData.init = function () { var news = new GetFinanceData(); return news; } export default { JSNews:JSNews, NEWS_TYPE:NEWS_TYPE, GetFinanceData:GetFinanceData.init, }