day07-实战-今日指数

本文详细描述了股票Code联想推荐功能的实现,包括接口定义、服务接口实现以及mapper接口的SQL查询,同时介绍了个股描述和周K线功能的接口设计与数据获取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日指数-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>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值