/*
|
微信接口的个股新闻
|
*/
|
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
|
};
|