本文仅大概说明一下结构,细节请看《【财报网站(开源)服务器~详尽篇】服务器(springboot)》
mysql、redis、nginx等不在本地安装了,直接使用虚拟机,虚拟机只需简单安装:mysql、redis、nginx、tomcat、python及一些配套的。
有云服务器也可以用自己的云服务器,或者自行安装虚拟机。不想折腾可以下载安装一个Orcale VM VirtualBox管理器后,直接导入本系统笔记的虚拟机直接使用。
本章详细讲解的主要是springboot一些简单功能。服务器请看《【财报网站(开源)笔记四】服务端虚拟机》
一、服务端提供的接口
接口如下图。(从github上clone服务端代码,运行服务后,localhost:8082/doc.html 地址即可查看详细文档并可直接在线调试。详细请看 swapper2生成文档 相关知识点)
1、获取上市公司详细信息(StockInfoController.java)
基本概念:
-- 详细信息:TS代码、股票代码、股票名称、地域、所属行业、上市日期、最旧财报时间、最新财报时间
-- 基础信息:股票代码、股票名称、所属行业
问:为什么要分“详细信息”、“基础信息”?
答:因为前端要显示所有股票的下拉框,选中下拉框一家公司再显示它的详细信息。但前端一下拉回全部股票信息,太大了。所以前端只需要拿到全部股票的基础信息,下拉框选中一家公司时,再请求这家公司的详细信息。
问:为什么“详细信息”中,有“最旧财报时间”、“最新财报时间”?(这两个时间python直接pa不到的,是python分析每家公司报表时,取到两个时间再插入数据库的。具体请看:《【财报网站(开源)笔记一】Python获取A股上市公司财报并写入数据库》)
答: 1、最旧财报时间~ 因为有些上市公司财报记录不是从上市到最近的,而是缺少一些的。如:
股票名 上市时间 财报起始时间 平安银行 1991-04-03 2004-12-31(2004Q4) 万科A 1991-01-29 2005-12-31(2005Q4) 2、最新财报时间~ 因为每家上市公司最近季度报表时间不一致:如现在(2021/014/17)“飞亚达”公司已经有了2021Q1财报,此公司在网站页面需要有2021年选项。而大部分公司还没有Q1财报,不显示2021年选项。
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语句不多就不建仓库了,所以就放到这里。
使用swapper2生成文档。配置见主pom.xml
使用mybatis连接数据库。配置见主pom.xml
mybatis逆向(github源码),可直接使用本系列开源代码生成,要点:
1、逆向配置XML文件,每个表需要一份,但利润表、资产负债表、现金流量表这三大表各和4千多张表,但每个库中的所有表的结构是一样的,所以这三个库每个库只需要一张表:balanceGeneratorConfig.xml、cashGeneratorConfig.xml、incomeGeneratorConfig.xml。各个表中table只需要链接到库中随便一个表就行。
2、运行逆项目前,必须修改jdbcConnection内容,连接到你自己的数据库。如果项目结构有变也需作相应个性。详细请参照源码。
三、待续。。。。
1、多只股票PK需要登陆
客户端请求多只股票PK信息时,切面检测登陆?检测用户级别?决定返回结果。