【财报网站(开源)笔记二】服务器(springboot)

279 阅读4分钟

本文仅大概说明一下结构,细节请看《【财报网站(开源)服务器~详尽篇】服务器(springboot)》

mysql、redis、nginx等不在本地安装了,直接使用虚拟机,虚拟机只需简单安装:mysql、redis、nginx、tomcat、python及一些配套的。

有云服务器也可以用自己的云服务器,或者自行安装虚拟机。不想折腾可以下载安装一个Orcale VM VirtualBox管理器后,直接导入本系统笔记的虚拟机直接使用。

本章详细讲解的主要是springboot一些简单功能。服务器请看《【财报网站(开源)笔记四】服务端虚拟机》

一、服务端提供的接口

接口如下图。(从github上clone服务端代码,运行服务后,localhost:8082/doc.html 地址即可查看详细文档并可直接在线调试。详细请看 swapper2生成文档 相关知识点)

image.png

1、获取上市公司详细信息(StockInfoController.java)

基本概念:

-- 详细信息:TS代码、股票代码、股票名称、地域、所属行业、上市日期、最旧财报时间、最新财报时间

-- 基础信息:股票代码、股票名称、所属行业

问:为什么要分“详细信息”、“基础信息”?

答:因为前端要显示所有股票的下拉框,选中下拉框一家公司再显示它的详细信息。但前端一下拉回全部股票信息,太大了。所以前端只需要拿到全部股票的基础信息,下拉框选中一家公司时,再请求这家公司的详细信息。

问:为什么“详细信息”中,有“最旧财报时间”、“最新财报时间”?(这两个时间python直接pa不到的,是python分析每家公司报表时,取到两个时间再插入数据库的。具体请看:《【财报网站(开源)笔记一】Python获取A股上市公司财报并写入数据库》)

答: 1、最旧财报时间~ 因为有些上市公司财报记录不是从上市到最近的,而是缺少一些的。如:

股票名上市时间财报起始时间
平安银行1991-04-032004-12-31(2004Q4)
万科A1991-01-292005-12-31(2005Q4)

2、最新财报时间~ 因为每家上市公司最近季度报表时间不一致:如现在(2021/014/17)“飞亚达”公司已经有了2021Q1财报,此公司在网站页面需要有2021年选项。而大部分公司还没有Q1财报,不显示2021年选项。

image.png

1.1、/stock/all(废弃)

获取所有上市公司详细信息: 初始版本,太大,耗时太长。重构后废弃。

重构为:由python生成一份供前端使用的txt文件,包含所有上市公司基本信息中的:股票代号、名字、行业(界面显示及请求需要,如:000001.SZ,平安银行,银行)。文件具体生成请看:《【财报网站(开源)笔记一】Python获取A股上市公司财报并写入数据库》

(2021/04/17)继续重构点:

1)、python生成的txt文件可以去掉股票代号,减小txt体积?

2)、不用txt文件,直接由服务端提供接口,支持这些上市公司的名字、行业。详细信息再由下面getStockByName接口取得详细信息?

1.2、/stock/getStockByCode

通过股票代号获取上市公司详细信息: 前端用股票代号通过此接口获取单个上市公司的详细信息。

1.3、/stock/getStockByName

通过股票名字获取上市公司详细信息: 前端用股票名字通过此接口获取单个上市公司的详细信息。

二、项目结构及逻辑

1、结构

下图是项目结构,其中sql目录不是项目运行所需,本项目大部分数据库都是由python创建生成(见本系统笔记《【财报网站(开源)笔记一】Python获取A股上市公司财报并写入数据库》),sql语句不多就不建仓库了,所以就放到这里。

image.png

使用swapper2生成文档。配置见主pom.xml

使用mybatis连接数据库。配置见主pom.xml

mybatis逆向(github源码),可直接使用本系列开源代码生成,要点:

1、逆向配置XML文件,每个表需要一份,但利润表、资产负债表、现金流量表这三大表各和4千多张表,但每个库中的所有表的结构是一样的,所以这三个库每个库只需要一张表:balanceGeneratorConfig.xml、cashGeneratorConfig.xml、incomeGeneratorConfig.xml。各个表中table只需要链接到库中随便一个表就行。

2、运行逆项目前,必须修改jdbcConnection内容,连接到你自己的数据库。如果项目结构有变也需作相应个性。详细请参照源码。

三、待续。。。。

1、多只股票PK需要登陆

客户端请求多只股票PK信息时,切面检测登陆?检测用户级别?决定返回结果。