详情页公共组件服务

wangzaijun 5e6885ed06 核心计算模块更新 1 ano atrás
.mvn d319d9e3b0 init 1 ano atrás
src 5e6885ed06 核心计算模块更新 1 ano atrás
.gitignore b44aaec0ff 配置文件更新 1 ano atrás
mvnw d319d9e3b0 init 1 ano atrás
mvnw.cmd d319d9e3b0 init 1 ano atrás
pom.xml 5e6885ed06 核心计算模块更新 1 ano atrás
readme.md 89d43f1833 添加统一返回结果和异常处理,新增logback日志记录 1 ano atrás

readme.md

数据分析-详情页通用服务 (开发前必读)

springboot3+redis+mybatis的一个标的详情页通用服务

项目背景与目标

本项目是一个使标的(基金、机构、经理、指数、组合)详情页最大化通用的项目,尽最大可能做到详情页所有组件接口不依赖 非core库数据,如果存在依赖的其他外部数据源考虑是否业务相关。

目标实现实现可插拔、可扩展、易维护插件式组件,大家一起努力。

架构 以及 关注点

  • jdk17, graalvm 加快启动
  • springboot3.x 高版本的springboot框架,体验最新的功能
  • jakarta api迁移,springboot3.0以上的版本要求所有的Java EE api都要迁移到Jakarta。比如javax.servlet.Filter需要替换为jakarta.servlet.Filter
  • spring.factories 文件废弃,自动配置包位置有变化
  • 支持多数据源,目前是springboot+mybatis支持的非动态数据源
  • 获取净值的功能拆分(策略模式区分标的来获取)

项目分包说明

|-- application             -- 应用层
|   |-- dto                 -- 应用层dto对象,包括接口请求参数和返回结构,区分模块
|   |   |-- info            -- 
|   |   |-- performance
|   |-- envent              -- 应用层事件
|   |-- service             -- 应用层service,只做聚合无复杂业务
|       |-- info
|       |-- performance
|       |-- position
|       |-- style
|-- client                  -- api接口层
|-- domain                  -- 领域层
|   |-- dao                 -- dao,封装了mapper取数
|   |-- dataobject          -- do对象,数据库持久化对象
|   |-- dto                 -- 领域层dto区分模块
|   |   |-- performance
|   |   |-- position
|   |   |   |-- bond
|   |   |   |-- future
|   |   |   |-- stock
|   |   |   |-- synthesize
|   |   |-- style
|   |       |-- py
|   |-- event               -- 领域层事件
|   |-- gateway             -- 防腐层,提供结构给infrastructure层实现,依赖倒置
|   |-- mapper              -- 数据库操作层,支持多数据源
|   |-- manager             -- 领域层业务聚合,分模块
|   |   |-- performance
|   |   |   |-- handler
|   |   |-- position
|   |   |   |-- bond
|   |   |   |-- future
|   |   |   |-- stock
|   |   |   |-- synthesize
|   |-- service             -- 领域层service,直接操作dao或mapper的数据库服务
|       |-- impl
|-- infrastructure          -- 基础设施层
    |-- components          -- 一些公共组件、aop或拦截器或过滤器等实现
    |-- config              -- 服务配置文件,抽离出服务外挂配置
    |-- consts              -- 系统常量
    |-- exception           -- 异常
    |-- gatewayimpl         -- 防腐层实现
    |-- task                -- 系统任务
    |-- utils               -- 系统工具

项目是一个DDD架构的简单落地,请遵循或尽量遵循如下规约,如有不足大家讨论补充

  • 1、目前项目分层主要为domain(领域层)、infrastructure(基础设施层)、application(应用层)、client(接口层,对外提供服务)
  • 2、分层说明:domain-所有都要用的共享对象;infrastructure-所有技术代码;application-应用层主要工作是一些领域服务、第三方服务的聚合,或者事件业务;client-对外提供接口服务,可以是门面、rest、rpc
  • 3、与calc计算服务的调用关系 参考 BaseIndicatorServiceV2Impl 食用,主要是调用calc提供的单例实例调用对应的方法获取结果
  • 4、私有库下载配置,setting.xml文件配置如下内容,id与pom.xml文件配置的仓库id一致,用户名和密码是申请的账户信息 xml <servers> <server> <id>smppw-release</id> <username>xxx</username> <password>xxx</password> </server> <server> <id>smppw-snapshots</id> <username>xxx</username> <password>xxx</password> </server> </servers>

TODO

  • 1、基本信息缓存、净值缓存
  • 2、所有标的基本信息获取逻辑重构
  • 3、统一返回和异常处理
  • 4、完善的日志记录
  • 5、接口参数签名校验
  • 6、接口文档
  • 7、风格评测接口重构

问题

1、需要预刷新的数据(交易日、无风险利率)如何处理? 在本服务提供job刷新到缓存