今日指数-day07
1.股票Code联想推荐
1.1 股票Code联想推荐功能介绍
1) 原型效果
输入框输入股票编码后,显示关联的股票信息;
2)接口定义说明
接口说明:
功能描述:根据输入的个股代码,进行模糊查询,返回证券代码和证券名称
服务路径:/quot/stock/search
服务方法:GET
请求参数:searchStr (只接受代码模糊查询,不支持文字查询)
响应数据格式:
{
"code": 1,
"data": [
{
"code": "600000",//股票编码
"name": "浦发银行" //股票名称
},
{
"code": "600004",
"name": "白云机场"
}
]
}
1.2股票Code联想推荐功能实现
1)定义Web访问接口
@GetMapping("/stock/search")
public R<List<Map<String,Object>>> fuzzyQuery(@RequestParam("searchStr") String searchStr){
return stockService.fuzzyQuery(searchStr);
}
2)定义服务接口和实现
定义服务接口
/**
* 根据输入的个股代码,进行模糊查询,返回证券代码和证券名称
* @param searchStr
* @return
*/
R<List<Map<String, Object>>> fuzzyQuery(String searchStr);
实现
@Override
public R<List<Map<String, Object>>> fuzzyQuery(String searchStr) {
//检查参数校验
if(StringUtils.isBlank(searchStr)){
R.error(ResponseCode.DATA_ERROR.getMessage());
}
// 对参数进行模糊处理
String searchStrFuzzy = "%" + searchStr + "%";
//根据股票代码模糊查询
List<Map<String,Object>>stockRtInfoList=stockRtInfoMapper.getByCodeFuzzy(searchStrFuzzy);
return R.ok(stockRtInfoList);
}
3)定义mapper接口方法与xml
mapper
/**
* 根据股票编码模糊查询
* @param searchStrFuzzy
* @return
*/
List<Map<String, Object>> getByCodeFuzzy(String searchStrFuzzy);
xml
<select id="getByCodeFuzzy" resultType="java.util.Map">
select distinct
sri.stock_code as code,
sri.stock_name as name
from stock_rt_info as sri
where sri.stock_code like #{searchStrFuzzy}
</select>
2.个股描述功能实现
2.1 个股描述功能实现说明
1)原型示意
2)接口说明
功能描述:个股主营业务查询接口
服务路径:/api/quot/stock/describe
服务方法:GET
请求参数:code #股票编码
响应参数:
{
"code": 1,
"data": {
"code": "000002", //股票编码
"trade": "房地产 ", //行业,也就是行业板块名称
"business": "房地产开发和物业服务",//公司主营业务
"name": "万科A" //公司名称
}
}
2.2股描述功能实现
1)定义Web访问接口
/**
* 个股主营业务查询接口
* @param code
* @return
*/
@GetMapping("/stock/describe")
public R<Map<String,Object>> getStockDescribe(@RequestParam("code") String code){
return stockService.getStockDescribe(code);
}
2)定义服务接口和实现
定义服务接口
/**
* 个股主营业务查询接口
* @param code
* @return
*/
R<Map<String, Object>> getStockDescribe(String code);
实现
@Override
public R<Map<String, Object>> getStockDescribe(String code) {
//检查参数校验
if(StringUtils.isBlank(code)){
R.error(ResponseCode.DATA_ERROR.getMessage());
}
//根据参数查询个股主营业务
Map<String,Object> mapResult=stockBusinessMapper.getBySecCodeInfo(code);
return R.ok(mapResult);
}
3)定义mapper接口方法与xml
mapper
/**
* 根据参数查询个股主营业务
* @param code
* @return
*/
Map<String, Object> getBySecCodeInfo(String code);
xml
<select id="getBySecCodeInfo" resultType="java.util.Map">
select
sb.stock_code as code,
sb.stock_name as name,
sb.block_name as trade,
sb.business as business
from stock_business as sb
where stock_code=#{code}
</select>
3.个股周K线功能实现
3.1 个股周K线功能实现功能分析
1)个股周K线功能原型分析
2)个股周K线功能接口分析
个股周K线数据主要包含:
股票ID、 一周内最高价、 一周内最低价 、周1开盘价、周5的收盘价、
整周均价、以及一周内最大交易日期(一般是周五所对应日期)
接口要求:
功能描述:统计每周内的股票数据信息,信息包含:
股票ID、 一周内最高价、 一周内最低价 、周1开盘价、周5的收盘价、
整周均价、以及一周内最大交易日期(一般是周五所对应日期);
服务路径:/api/quot/stock/screen/weekkline
服务方法:GET
请求参数:code //股票编码
响应数据格式:
{
"code": 1,
"data": [
{
"avgPrice": 8.574954,//一周内平均价
"minPrice": 8.56,//一周内最低价
"openPrice": 8.6,//周一开盘价
"maxPrice": 8.6,//一周内最高价
"closePrice": 8.57,//周五收盘价(如果当前日期不到周五,则显示最新价格)
"mxTime": "2021-12-19 15:00",//一周内最大时间
"stockCode": "600000"//股票编码
}
]
}
3.2个股周K线功能实现
1)定义Web访问接口
/**
* 功能描述:统计每周内的股票数据信息,信息包含:
* 股票ID、 一周内最高价、 一周内最低价 、周1开盘价、周5的收盘价、
* 整周均价、以及一周内最大交易日期(一般是周五所对应日期)
*
* @param code
* @return
*/
@GetMapping("/stock/screen/weekkline")
public R<List<Map<String, Object>>> getStockInfo(@RequestParam("code") String code) {
return stockService.getStockInfo(code);
}
2)定义服务接口和实现
定义服务接口
/**
* 功能描述:统计每周内的股票数据信息,信息包含:
* 股票ID、 一周内最高价、 一周内最低价 、周1开盘价、周5的收盘价、
* 整周均价、以及一周内最大交易日期(一般是周五所对应日期)
*
* @param code
* @return
*/
R<List<Map<String, Object>>> getStockInfo(String code);
实现
@Override
public R<List<Map<String, Object>>> getStockInfo(String code) {
// 获取日期范围
DateTime lastDate4Stock = DateTimeUtil.getLastDate4Stock(DateTime.now());
Date endTime = lastDate4Stock.toDate();
Date startTime = lastDate4Stock.minusDays(4).toDate();
// TODO moke 测试数据
startTime = DateTime.parse("2021-12-25 09:30:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();
endTime = DateTime.parse("2021-12-30 15:00:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();
// 根据日期范围统计每周的股票数据信息
List<Map<String, Object>> mapResult = stockRtInfoMapper.getStockInfo4Week(code, startTime, endTime);
return R.ok(mapResult);
}
3)定义mapper接口方法与xml
定义mapper
List<Map<String, Object>> getStockInfo4Week(@Param("code") String code,
@Param("startTime") Date startTime,
@Param("endTime") Date endTime);
xml
<select id="getStockInfo4Week" resultType="java.util.Map">
select distinct
avg(sri.cur_price) as avgPrice,
min(sri.cur_price) as minPrice,
sri.open_price as openPrice,
max(sri.cur_price) as maxPrice,
sri.cur_price as closePrice,
date_format(max(sri.cur_time), '%Y%m%d') as mxTime,
sri.stock_code as stock_code
from stock_rt_info as sri
where sri.stock_code = #{code}
and sri.cur_time between #{startTime} and #{endTime}
</select>
max(sri.cur_price) as maxPrice,
sri.cur_price as closePrice,
date_format(max(sri.cur_time), '%Y%m%d') as mxTime,
sri.stock_code as stock_code
from stock_rt_info as sri
where sri.stock_code = #{code}
and sri.cur_time between #{startTime} and #{endTime}
</select>