Kaynağa Gözat

c端和b端配置分离

wangzaijun 1 yıl önce
ebeveyn
işleme
463394394b
60 değiştirilmiş dosya ile 335 ekleme ve 170 silme
  1. 5 0
      pom.xml
  2. 2 2
      readme.md
  3. 1 1
      src/main/java/com/smppw/analysis/DataAnalysisApplication.java
  4. 37 0
      src/main/java/com/smppw/analysis/application/dto/info/FundSimilarReq.java
  5. 49 4
      src/main/java/com/smppw/analysis/application/dto/info/HeadIndicatorReq.java
  6. 1 27
      src/main/java/com/smppw/analysis/application/service/info/FundInfoService.java
  7. 1 1
      src/main/java/com/smppw/analysis/application/service/performance/FundPerformanceService.java
  8. 1 1
      src/main/java/com/smppw/analysis/application/service/position/StockPositionAnalysis.java
  9. 3 3
      src/main/java/com/smppw/analysis/domain/dao/FundInformationDao.java
  10. 1 1
      src/main/java/com/smppw/analysis/domain/dao/IndexesProfileDao.java
  11. 1 1
      src/main/java/com/smppw/analysis/domain/dao/MarketIndexNavDao.java
  12. 2 2
      src/main/java/com/smppw/analysis/domain/dao/PositionAnalysisDao.java
  13. 1 1
      src/main/java/com/smppw/analysis/domain/dao/PrivatelyOfferedFundNavDao.java
  14. 1 1
      src/main/java/com/smppw/analysis/domain/dao/PubliclyFundPositionDao.java
  15. 1 1
      src/main/java/com/smppw/analysis/domain/dao/PubliclyOfferedFundNavDao.java
  16. 1 1
      src/main/java/com/smppw/analysis/domain/dao/RiskOfFreeNavDao.java
  17. 1 1
      src/main/java/com/smppw/analysis/domain/dao/RongzhiIndexNavDao.java
  18. 12 1
      src/main/java/com/smppw/analysis/domain/event/CacheEventListener.java
  19. 11 0
      src/main/java/com/smppw/analysis/domain/event/SaveCacheEvent.java
  20. 2 2
      src/main/java/com/smppw/analysis/domain/gateway/CacheFactory.java
  21. 5 4
      src/main/java/com/smppw/analysis/domain/manager/position/AbstractAnalysisBizHandler.java
  22. 1 1
      src/main/java/com/smppw/analysis/domain/manager/position/AbstractBizHandler.java
  23. 1 1
      src/main/java/com/smppw/analysis/domain/manager/position/bond/BondPositionService.java
  24. 2 2
      src/main/java/com/smppw/analysis/domain/manager/position/future/FundFuturesOptionBaseService.java
  25. 2 2
      src/main/java/com/smppw/analysis/domain/manager/position/future/MarginalRiskContributionBizHandler.java
  26. 4 3
      src/main/java/com/smppw/analysis/domain/manager/position/stock/StockPerformanceAttributionBizHandler.java
  27. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/BaseUnderlyingMapper.java
  28. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/BondBasicInformationDOMapper.java
  29. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/DepositNavDoMapper.java
  30. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/FundFrequencyDoMapper.java
  31. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/FundInformationDoMapper.java
  32. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/IndexesProfileDoMapper.java
  33. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/IndexesRzIndexDoMapper.java
  34. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/IndexesTradeDateDoMapper.java
  35. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/MarketIndexesDoMapper.java
  36. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/MonetaryFundProfitMapper.java
  37. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/NavDoMapper.java
  38. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/PublicNavDoMapper.java
  39. 1 1
      src/main/java/com/smppw/analysis/domain/persistence/PubliclyFundExtInfoMapper.java
  40. 30 18
      src/main/java/com/smppw/analysis/domain/service/impl/BaseInfoServiceImpl.java
  41. 7 0
      src/main/java/com/smppw/analysis/infrastructure/config/RedisConfig.java
  42. 3 2
      src/main/java/com/smppw/analysis/infrastructure/gatewayimpl/RedisCacheGateway.java
  43. 1 1
      src/main/java/com/smppw/analysis/infrastructure/task/NonTradingDayTask.java
  44. 1 1
      src/main/java/com/smppw/analysis/infrastructure/task/RiskOfFreeIdTask.java
  45. 3 3
      src/main/java/com/smppw/analysis/infrastructure/task/TrendDateTask.java
  46. 56 0
      src/main/resources/application-tob.yaml
  47. 56 0
      src/main/resources/application-toc.yaml
  48. 3 55
      src/main/resources/application.yaml
  49. 1 1
      src/main/resources/mapping/BaseUnderlyingMapper.xml
  50. 1 1
      src/main/resources/mapping/BondBasicInformationDOMapper.xml
  51. 1 1
      src/main/resources/mapping/DepositNavDoMapper.xml
  52. 1 1
      src/main/resources/mapping/FundFrequencyDoMapper.xml
  53. 2 2
      src/main/resources/mapping/FundInformationDoMapper.xml
  54. 1 1
      src/main/resources/mapping/IndexesProfileDoMapper.xml
  55. 1 1
      src/main/resources/mapping/IndexesRzIndexDoMapper.xml
  56. 1 1
      src/main/resources/mapping/IndexesTradeDateDoMapper.xml
  57. 1 1
      src/main/resources/mapping/MarketIndexesDoMapper.xml
  58. 1 1
      src/main/resources/mapping/NavDoMapper.xml
  59. 1 1
      src/main/resources/mapping/PublicNavDoMapper.xml
  60. 1 1
      src/main/resources/mapping/PubliclyFundExtInfoMapper.xml

+ 5 - 0
pom.xml

@@ -111,6 +111,11 @@
             <version>3.0.2</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 2
readme.md

@@ -1,5 +1,5 @@
 # 数据分析-详情页通用服务 (开发前必读)
-springboot3+redis+mybatis的一个标的详情页通用服务,~~DDD架构没使用到位,复杂性太高了~~
+springboot3+redis+mybatis的一个标的详情页通用服务
 
 **所有来到这里的标的都是有效的!!!**
 
@@ -64,7 +64,7 @@ springboot3+redis+mybatis的一个标的详情页通用服务,~~DDD架构没
 
 项目是一个DDD架构的简单落地,请遵循或尽量遵循如下规约,如有不足大家讨论补充
 - 1、目前项目分层主要为domain(领域层)、infrastructure(基础设施层)、application(应用层)、client(接口层,对外提供服务)
-- 2、分层说明:domain-所有都要用的共享对象;infrastructure-所有技术代码,mybatis、redis、mq、job、cache代码都要在这里实现(尽量做到domain通过依赖导致不依赖这些技术代码);application-应用层主要工作是一些领域服务、第三方服务的聚合,或者事件业务;client-对外提供接口服务,可以是门面、rest、rpc
+- 2、分层说明:domain-所有都要用的共享对象;infrastructure-所有技术代码;application-应用层主要工作是一些领域服务、第三方服务的聚合,或者事件业务;client-对外提供接口服务,可以是门面、rest、rpc
 - 3、与calc计算服务的调用关系 参考 `BaseIndicatorServiceV2Impl` 食用,主要是调用calc提供的单例实例调用对应的方法获取结果
 - 4、私有库下载配置,setting.xml文件配置如下内容,id与pom.xml文件配置的仓库id一致,用户名和密码是申请的账户信息
 ```xml

+ 1 - 1
src/main/java/com/smppw/analysis/DataAnalysisApplication.java

@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableScheduling
-@MapperScan("com.smppw.analysis.domain.persistence")
+@MapperScan("com.smppw.analysis.domain.mapper")
 @SpringBootApplication
 public class DataAnalysisApplication {
 

+ 37 - 0
src/main/java/com/smppw/analysis/application/dto/info/FundSimilarReq.java

@@ -0,0 +1,37 @@
+package com.smppw.analysis.application.dto.info;
+
+import com.smppw.analysis.application.dto.BaseReq;
+import com.smppw.common.pojo.enums.RaiseType;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangzaijun
+ * @date 2023/3/22 16:58
+ * @description 相似产品(仅支持私募基金) 接口请求参数
+ */
+@Setter
+@Getter
+public class FundSimilarReq extends BaseReq {
+    public static final String DEFAULT_THRESHOLD = "0.85";
+    /**
+     * 基金id
+     */
+    private String refId;
+    /**
+     * 1-市场同策略,2-管理人同策略
+     */
+    private Integer calcType = 2;
+    /**
+     * 相关性阈值,小数
+     */
+    private String threshold = DEFAULT_THRESHOLD;
+    /**
+     * 募集类型
+     */
+    private RaiseType raiseType;
+    /**
+     * 末级策略,head-info接口返回的
+     */
+    private String strategy;
+}

+ 49 - 4
src/main/java/com/smppw/analysis/application/dto/info/HeadIndicatorReq.java

@@ -1,18 +1,44 @@
 package com.smppw.analysis.application.dto.info;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
-import com.smppw.common.pojo.enums.Frequency;
-import com.smppw.common.pojo.enums.NavType;
-import com.smppw.common.pojo.enums.RaiseType;
+import com.smppw.analysis.application.dto.BaseReq;
+import com.smppw.analysis.domain.dto.performance.IndicatorParams;
+import com.smppw.common.pojo.enums.*;
 import com.smppw.common.pojo.enums.strategy.Strategy;
+import com.smppw.constants.Consts;
 import lombok.Setter;
 
+import java.util.Date;
+
+/**
+ * @author wangzaijun
+ * @date 2023/8/9 11:47
+ * @description 头部成立以来指标实时计算接口请求参数
+ */
 @Setter
-public class HeadIndicatorReq {
+public class HeadIndicatorReq extends BaseReq {
+    /**
+     * 标的id
+     */
     private String secId;
+    /**
+     * 净值类型
+     */
     private NavType navType;
+    /**
+     * 净值频率
+     */
     private Frequency frequency;
+    /**
+     * 募集类型
+     */
     private RaiseType raiseType;
+    /**
+     * 核心策略
+     */
     private String strategy;
 
     public String getSecId() {
@@ -34,4 +60,23 @@ public class HeadIndicatorReq {
     public String getStrategy() {
         return StrUtil.isBlank(this.strategy) ? Strategy.All.getStrategyOriginName() : this.strategy;
     }
+
+    public IndicatorParams convert() {
+        IndicatorParams params = new IndicatorParams();
+        params.setSecIds(CollectionUtil.newArrayList());
+        params.setRefIds(CollectionUtil.newArrayList(this.getSecId()));
+        params.setBenchmarkId(Consts.BENCHMARK);
+        params.setNavType(this.getNavType());
+        params.setRaiseType(this.getRaiseType());
+        params.setStrategy(this.getStrategy());
+        params.setCalcExtraRet(false);
+        params.setRiskOfFreeId(Consts.RISK_OF_FREE);
+        params.setTimeRange(TimeRange.FromSetup);
+        params.setFrequency(this.getFrequency());
+        params.setStartDate(Consts.START_DATE);
+        params.setEndDate(DateUtil.formatDate(new Date()));
+        params.setIndicators(ListUtil.of(Indicator.AnnualReturn, Indicator.AnnualStdDev, Indicator.MaxDrawdown, Indicator.SharpeRatio));
+        params.setExtraIndicators(ListUtil.of(Indicator.IntervalReturn));
+        return params;
+    }
 }

+ 1 - 27
src/main/java/com/smppw/analysis/application/service/info/FundInfoService.java

@@ -1,8 +1,5 @@
 package com.smppw.analysis.application.service.info;
 
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.collection.ListUtil;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import com.smppw.analysis.application.dto.info.*;
 import com.smppw.analysis.domain.dto.performance.IndicatorParams;
@@ -11,11 +8,8 @@ import com.smppw.analysis.domain.manager.performance.PerformanceConstants;
 import com.smppw.analysis.domain.manager.performance.PerformanceFactory;
 import com.smppw.analysis.domain.service.BaseInfoService;
 import com.smppw.common.pojo.enums.Indicator;
-import com.smppw.common.pojo.enums.TimeRange;
-import com.smppw.constants.Consts;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
 import java.util.Map;
 
 @Service
@@ -71,8 +65,7 @@ public class FundInfoService {
 
     @SuppressWarnings("unchecked")
     public HeadIndicatorVO headIndicator(HeadIndicatorReq req) {
-        // 构建参数体
-        IndicatorParams params = this.prepareParams(req);
+        IndicatorParams params = req.convert();
         Performance<IndicatorParams, Map<String, Object>> instance = this.factory.getInstance(PerformanceConstants.INDICATOR);
         Map<String, Object> dataset = instance.execute(params);
         Map<String, Object> indicatorMap = MapUtil.get(dataset, req.getSecId(), Map.class);
@@ -83,23 +76,4 @@ public class FundInfoService {
         vo.setSharpeRatio(MapUtil.getStr(indicatorMap, Indicator.SharpeRatio.name()));
         return vo;
     }
-
-    private IndicatorParams prepareParams(HeadIndicatorReq req) {
-        IndicatorParams params = new IndicatorParams();
-        params.setSecIds(CollectionUtil.newArrayList());
-        params.setRefIds(CollectionUtil.newArrayList(req.getSecId()));
-        params.setBenchmarkId(Consts.BENCHMARK);
-        params.setNavType(req.getNavType());
-        params.setRaiseType(req.getRaiseType());
-        params.setStrategy(req.getStrategy());
-        params.setCalcExtraRet(false);
-        params.setRiskOfFreeId(Consts.RISK_OF_FREE);
-        params.setTimeRange(TimeRange.FromSetup);
-        params.setFrequency(req.getFrequency());
-        params.setStartDate(Consts.START_DATE);
-        params.setEndDate(DateUtil.formatDate(new Date()));
-        params.setIndicators(ListUtil.of(Indicator.AnnualReturn, Indicator.AnnualStdDev, Indicator.MaxDrawdown, Indicator.SharpeRatio));
-        params.setExtraIndicators(ListUtil.of(Indicator.IntervalReturn));
-        return params;
-    }
 }

+ 1 - 1
src/main/java/com/smppw/analysis/application/service/performance/FundPerformanceService.java

@@ -74,7 +74,7 @@ public class FundPerformanceService {
 
     public Map<String, Object> rank(RankReq req) {
         RankParams params = req.convert();
-        Performance<RankParams, Map<String, Object>> instance = this.factory.getInstance(ROLLING);
+        Performance<RankParams, Map<String, Object>> instance = this.factory.getInstance(RANK);
         return instance.execute(params);
     }
 }

+ 1 - 1
src/main/java/com/smppw/analysis/application/service/position/StockPositionAnalysis.java

@@ -14,7 +14,7 @@ import com.smppw.analysis.domain.manager.position.BizHandler;
 import com.smppw.analysis.domain.manager.position.BizHandlerFactory;
 import com.smppw.analysis.domain.manager.position.stock.BarraSensitivityComponent;
 import com.smppw.analysis.domain.manager.position.stock.IndustryAllocationPreferenceComponent;
-import com.smppw.analysis.domain.persistence.BaseUnderlyingMapper;
+import com.smppw.analysis.domain.mapper.BaseUnderlyingMapper;
 import com.smppw.common.pojo.ValueLabelVO;
 import com.smppw.common.pojo.dto.NewDateValue;
 import org.springframework.stereotype.Component;

+ 3 - 3
src/main/java/com/smppw/analysis/domain/dao/FundInformationDao.java

@@ -4,9 +4,9 @@ import cn.hutool.core.map.MapUtil;
 import com.smppw.analysis.domain.dataobject.FundFrequencyDo;
 import com.smppw.analysis.domain.dataobject.FundInformationDo;
 import com.smppw.analysis.domain.dataobject.MonetaryFundProfitDO;
-import com.smppw.analysis.domain.persistence.FundFrequencyDoMapper;
-import com.smppw.analysis.domain.persistence.FundInformationDoMapper;
-import com.smppw.analysis.domain.persistence.MonetaryFundProfitMapper;
+import com.smppw.analysis.domain.mapper.FundFrequencyDoMapper;
+import com.smppw.analysis.domain.mapper.FundInformationDoMapper;
+import com.smppw.analysis.domain.mapper.MonetaryFundProfitMapper;
 import com.smppw.common.pojo.enums.Frequency;
 import com.smppw.common.pojo.enums.Indicator;
 import org.springframework.stereotype.Component;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/IndexesProfileDao.java

@@ -1,7 +1,7 @@
 package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.IndexesProfileDo;
-import com.smppw.analysis.domain.persistence.IndexesProfileDoMapper;
+import com.smppw.analysis.domain.mapper.IndexesProfileDoMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/MarketIndexNavDao.java

@@ -1,7 +1,7 @@
 package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.MarketIndexesDo;
-import com.smppw.analysis.domain.persistence.MarketIndexesDoMapper;
+import com.smppw.analysis.domain.mapper.MarketIndexesDoMapper;
 import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.constants.DateConst;
 import com.smppw.utils.DateUtil;

+ 2 - 2
src/main/java/com/smppw/analysis/domain/dao/PositionAnalysisDao.java

@@ -2,8 +2,8 @@ package com.smppw.analysis.domain.dao;
 
 
 import com.smppw.analysis.domain.dataobject.*;
-import com.smppw.analysis.domain.persistence.BaseUnderlyingMapper;
-import com.smppw.analysis.domain.persistence.IndexesTradeDateDoMapper;
+import com.smppw.analysis.domain.mapper.BaseUnderlyingMapper;
+import com.smppw.analysis.domain.mapper.IndexesTradeDateDoMapper;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/PrivatelyOfferedFundNavDao.java

@@ -2,7 +2,7 @@ package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.NavDo;
 import com.smppw.analysis.infrastructure.consts.NavConst;
-import com.smppw.analysis.domain.persistence.NavDoMapper;
+import com.smppw.analysis.domain.mapper.NavDoMapper;
 import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.NavType;
 import com.smppw.constants.DateConst;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/PubliclyFundPositionDao.java

@@ -7,7 +7,7 @@ import com.smppw.analysis.domain.dataobject.FundPositionBaseInfoDO;
 import com.smppw.analysis.domain.dataobject.FundPositionDetailDO;
 import com.smppw.analysis.domain.dataobject.PubliclyFundHolderInfoDO;
 import com.smppw.analysis.domain.dataobject.PubliclyFundStockChangeDO;
-import com.smppw.analysis.domain.persistence.PubliclyFundExtInfoMapper;
+import com.smppw.analysis.domain.mapper.PubliclyFundExtInfoMapper;
 import org.springframework.stereotype.Component;
 
 import java.util.List;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/PubliclyOfferedFundNavDao.java

@@ -2,7 +2,7 @@ package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.PublicNavDo;
 import com.smppw.analysis.infrastructure.consts.NavConst;
-import com.smppw.analysis.domain.persistence.PublicNavDoMapper;
+import com.smppw.analysis.domain.mapper.PublicNavDoMapper;
 import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.common.pojo.enums.NavType;
 import com.smppw.constants.DateConst;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/RiskOfFreeNavDao.java

@@ -1,7 +1,7 @@
 package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.DepositNavDo;
-import com.smppw.analysis.domain.persistence.DepositNavDoMapper;
+import com.smppw.analysis.domain.mapper.DepositNavDoMapper;
 import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.constants.DateConst;
 import com.smppw.utils.DateUtil;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/dao/RongzhiIndexNavDao.java

@@ -1,7 +1,7 @@
 package com.smppw.analysis.domain.dao;
 
 import com.smppw.analysis.domain.dataobject.IndexesRzIndexDo;
-import com.smppw.analysis.domain.persistence.IndexesRzIndexDoMapper;
+import com.smppw.analysis.domain.mapper.IndexesRzIndexDoMapper;
 import com.smppw.common.pojo.dto.NavDto;
 import com.smppw.constants.DateConst;
 import com.smppw.utils.DateUtil;

+ 12 - 1
src/main/java/com/smppw/analysis/domain/event/CacheEventListener.java

@@ -1,5 +1,6 @@
 package com.smppw.analysis.domain.event;
 
+import cn.hutool.core.util.StrUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.event.EventListener;
@@ -7,16 +8,26 @@ import org.springframework.stereotype.Component;
 
 import java.util.function.Function;
 
+/**
+ * @author wangzaijun
+ * @date 2023/8/9 14:13
+ * @description 领域层缓存事件监听
+ */
 @Component
 public class CacheEventListener {
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @EventListener(value = {SaveCacheEvent.class})
     public void saveCache(SaveCacheEvent<Object> event) {
+        Object source = event.getSource();
         Function<Object, Boolean> function = event.getFunction();
         Boolean apply = function.apply(event.getTarget());
         if (apply == null || apply == Boolean.FALSE) {
-            logger.warn("缓存保存失败!");
+            logger.warn(StrUtil.format("{} 缓存保存失败!", source));
+        }
+        if (logger.isDebugEnabled()) {
+            long time = System.currentTimeMillis() - event.getTimestamp();
+            logger.debug(StrUtil.format("{} 缓存保存耗时 {} ms.", source, time));
         }
     }
 }

+ 11 - 0
src/main/java/com/smppw/analysis/domain/event/SaveCacheEvent.java

@@ -4,8 +4,19 @@ import org.springframework.context.ApplicationEvent;
 
 import java.util.function.Function;
 
+/**
+ * @author wangzaijun
+ * @date 2023/8/9 14:09
+ * @description 领域层缓存保存事件, source建议为设置缓存key
+ */
 public class SaveCacheEvent<T> extends ApplicationEvent {
+    /**
+     * 保存对象
+     */
     private final T target;
+    /**
+     * 如何保存缓存的操作,返回一个bool类型标识是否成功
+     */
     private final Function<T, Boolean> function;
 
     public SaveCacheEvent(Object source, T target, Function<T, Boolean> function) {

+ 2 - 2
src/main/java/com/smppw/analysis/domain/gateway/CacheFactory.java

@@ -8,8 +8,8 @@ import java.util.Set;
 
 @Component
 public class CacheFactory {
-    public static final String MEMORY = "cache-memory";
-    public static final String REDIS = "cache-redis";
+    public static final String MEMORY = "memory";
+    public static final String REDIS = "redis";
     private static final Map<String, CacheGateway<Object>> CACHE_GATEWAY_STRATEGY = MapUtil.newHashMap(8);
 
     public CacheFactory(Map<String, CacheGateway<Object>> map) {

+ 5 - 4
src/main/java/com/smppw/analysis/domain/manager/position/AbstractAnalysisBizHandler.java

@@ -83,7 +83,8 @@ public abstract class AbstractAnalysisBizHandler<P extends BaseAnalysisParams, R
      * @return /
      */
     protected Map<ValueLabelVO, List<String>> getIndustrySecMap() {
-        Object obj = this.cacheGateway.get(RedisConst.POSITION_STOCK_INDUSTRY_KEY);
+        String key = RedisConst.POSITION_STOCK_INDUSTRY_KEY;
+        Object obj = this.cacheGateway.get(key);
         List<SwSecIndustryInfoDO> dataList = ListUtil.list(false);
         if (obj != null) {
             dataList = this.convertList(obj, SwSecIndustryInfoDO.class);
@@ -92,8 +93,8 @@ public abstract class AbstractAnalysisBizHandler<P extends BaseAnalysisParams, R
             if (industryInfos != null) {
                 dataList.addAll(industryInfos);
             }
-            SaveCacheEvent<List<SwSecIndustryInfoDO>> event = new SaveCacheEvent<>(this, industryInfos,
-                    t -> this.cacheGateway.set(RedisConst.POSITION_STOCK_INDUSTRY_KEY, t, RedisConst.POSITION_DAY_TTL, TimeUnit.SECONDS));
+            SaveCacheEvent<List<SwSecIndustryInfoDO>> event = new SaveCacheEvent<>(key, industryInfos,
+                    t -> this.cacheGateway.set(key, t, RedisConst.POSITION_DAY_TTL, TimeUnit.SECONDS));
             this.applicationContext.publishEvent(event);
         }
         return dataList.stream().collect(Collectors.groupingBy(e -> new ValueLabelVO(e.getIndustryCode(), e.getIndustryName()),
@@ -126,7 +127,7 @@ public abstract class AbstractAnalysisBizHandler<P extends BaseAnalysisParams, R
             Object hget = this.cacheGateway.hget(key, date);
             if (hget == null) {
                 indexSecWeightList = this.analysisService.listIndexSecWeight(benchmarkId, date);
-                SaveCacheEvent<List<IndexSecWeightInfoDO>> event = new SaveCacheEvent<>(this, indexSecWeightList,
+                SaveCacheEvent<List<IndexSecWeightInfoDO>> event = new SaveCacheEvent<>(key, indexSecWeightList,
                         t -> this.cacheGateway.hset(key, date, t, RedisConst.POSITION_MONTH_TTL, TimeUnit.SECONDS));
                 this.applicationContext.publishEvent(event);
             } else {

+ 1 - 1
src/main/java/com/smppw/analysis/domain/manager/position/AbstractBizHandler.java

@@ -182,7 +182,7 @@ public abstract class AbstractBizHandler<P extends BaseParams, R> implements Biz
         }
         PositionLoad loadInstance = this.factory.getPositionLoadInstance(params.getFundId());
         List<FundPositionDetail> positionInfoList = loadInstance.loadPositionDetail(params);
-        SaveCacheEvent<List<FundPositionDetail>> event = new SaveCacheEvent<>(this, positionInfoList,
+        SaveCacheEvent<List<FundPositionDetail>> event = new SaveCacheEvent<>(key, positionInfoList,
                 t -> this.cacheGateway.hset(key, item, t, 1, TimeUnit.DAYS));
         this.applicationContext.publishEvent(event);
         return positionInfoList;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/manager/position/bond/BondPositionService.java

@@ -11,7 +11,7 @@ import com.smppw.analysis.domain.dto.position.bond.*;
 import com.smppw.analysis.domain.dto.position.stock.ConcentrationVO;
 import com.smppw.analysis.domain.dao.PubliclyFundPositionDao;
 import com.smppw.analysis.domain.dataobject.*;
-import com.smppw.analysis.domain.persistence.BondBasicInformationDOMapper;
+import com.smppw.analysis.domain.mapper.BondBasicInformationDOMapper;
 import com.smppw.analysis.infrastructure.utils.BinarySearchUtil;
 import com.smppw.common.pojo.ValueLabelVO;
 import com.smppw.utils.BigDecimalUtils;

+ 2 - 2
src/main/java/com/smppw/analysis/domain/manager/position/future/FundFuturesOptionBaseService.java

@@ -4,8 +4,8 @@ package com.smppw.analysis.domain.manager.position.future;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import com.smppw.analysis.domain.dataobject.FundPositionDetailDO;
-import com.smppw.analysis.domain.persistence.BaseUnderlyingMapper;
-import com.smppw.analysis.domain.persistence.PubliclyFundExtInfoMapper;
+import com.smppw.analysis.domain.mapper.BaseUnderlyingMapper;
+import com.smppw.analysis.domain.mapper.PubliclyFundExtInfoMapper;
 import com.smppw.common.pojo.FundFuturesOption;
 import com.smppw.common.pojo.ValueLabelVO;
 import org.slf4j.Logger;

+ 2 - 2
src/main/java/com/smppw/analysis/domain/manager/position/future/MarginalRiskContributionBizHandler.java

@@ -21,8 +21,8 @@ import com.smppw.analysis.domain.dataobject.FutureDailyPriceDO;
 import com.smppw.analysis.domain.gateway.CacheFactory;
 import com.smppw.analysis.infrastructure.config.AnalysisProperty;
 import com.smppw.analysis.infrastructure.exception.APIException;
-import com.smppw.analysis.domain.persistence.BaseUnderlyingMapper;
-import com.smppw.analysis.domain.persistence.IndexesTradeDateDoMapper;
+import com.smppw.analysis.domain.mapper.BaseUnderlyingMapper;
+import com.smppw.analysis.domain.mapper.IndexesTradeDateDoMapper;
 import com.smppw.common.pojo.FundFuturesOption;
 import com.smppw.common.pojo.ValueLabelVO;
 import com.smppw.utils.BigDecimalUtils;

+ 4 - 3
src/main/java/com/smppw/analysis/domain/manager/position/stock/StockPerformanceAttributionBizHandler.java

@@ -217,8 +217,9 @@ public class StockPerformanceAttributionBizHandler extends AbstractAnalysisBizHa
         }
         String firstDate = dateList.get(0);
         String lastDate = dateList.get(dateList.size() - 1);
+        String key = RedisConst.POSITION_STOCK_PRICE_KEY;
         String item = firstDate + lastDate;
-        Object hget = this.cacheGateway.hget(RedisConst.POSITION_STOCK_PRICE_KEY, item);
+        Object hget = this.cacheGateway.hget(key, item);
         if (hget != null) {
             resultList = this.convertList(hget, SecClosePriceDO.class);
         } else {
@@ -227,8 +228,8 @@ public class StockPerformanceAttributionBizHandler extends AbstractAnalysisBizHa
             if (CollUtil.isNotEmpty(tempList)) {
                 resultList.addAll(tempList);
             }
-            SaveCacheEvent<List<SecClosePriceDO>> event = new SaveCacheEvent<>(this, resultList,
-                    t -> this.cacheGateway.hset(RedisConst.POSITION_STOCK_PRICE_KEY, item, t, RedisConst.POSITION_YEAR_TTL, TimeUnit.SECONDS));
+            SaveCacheEvent<List<SecClosePriceDO>> event = new SaveCacheEvent<>(key, resultList,
+                    t -> this.cacheGateway.hset(key, item, t, RedisConst.POSITION_YEAR_TTL, TimeUnit.SECONDS));
             this.applicationContext.publishEvent(event);
         }
         return resultList;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/BaseUnderlyingMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.*;
 import com.smppw.common.pojo.ValueLabelVO;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/BondBasicInformationDOMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.BondBasicInformationDO;
 import com.smppw.analysis.domain.dataobject.BondCreditGradingInfo;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/DepositNavDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.DepositNavDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/FundFrequencyDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.FundFrequencyDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/FundInformationDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.FundInformationDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/IndexesProfileDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 
 import com.smppw.analysis.domain.dataobject.IndexesProfileDo;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/IndexesRzIndexDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.IndexesRzIndexDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/IndexesTradeDateDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.common.pojo.IndexesTradeDateDo;
 import org.apache.ibatis.annotations.Mapper;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/MarketIndexesDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.MarketIndexesDo;
 import com.smppw.common.pojo.dto.NavDto;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/MonetaryFundProfitMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.MonetaryFundProfitDO;
 import org.springframework.stereotype.Repository;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/NavDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.NavDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/PublicNavDoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.PublicNavDo;
 import org.apache.ibatis.annotations.Param;

+ 1 - 1
src/main/java/com/smppw/analysis/domain/persistence/PubliclyFundExtInfoMapper.java

@@ -1,4 +1,4 @@
-package com.smppw.analysis.domain.persistence;
+package com.smppw.analysis.domain.mapper;
 
 import com.smppw.analysis.domain.dataobject.FundPositionBaseInfoDO;
 import com.smppw.analysis.domain.dataobject.FundPositionDetailDO;

+ 30 - 18
src/main/java/com/smppw/analysis/domain/service/impl/BaseInfoServiceImpl.java

@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -153,31 +154,23 @@ public class BaseInfoServiceImpl implements BaseInfoService, ApplicationContextA
         int size = allSecIdList.size();
         String key = RedisConst.INFO_NAME;
         Map<String, Object> hget = this.cacheGateway.hget(key);
+        if (MapUtil.isEmpty(hget)) {
+            hget = MapUtil.empty();
+        }
         Map<Boolean, List<String>> redisSecMap = allSecIdList.stream().collect(Collectors.groupingBy(hget::containsKey));
-        List<String> redisSecIds = redisSecMap.get(Boolean.TRUE);
-        List<String> noRedisSecIds = redisSecMap.get(Boolean.FALSE);
+        List<String> redisSecIds = redisSecMap.getOrDefault(Boolean.TRUE, ListUtil.empty());
+        List<String> noRedisSecIds = redisSecMap.getOrDefault(Boolean.FALSE, ListUtil.empty());
         Map<String, Object> secNameMap = MapUtil.newHashMap(size, false);
         if (CollUtil.isNotEmpty(noRedisSecIds)) {
             Map<String, List<String>> typeSecMap = this.getTypeSecMap(noRedisSecIds);
             // 市场基金
-            List<String> marketFundIds = ListUtil.list(true);
-            CollUtil.addAllIfNotContains(marketFundIds, typeSecMap.getOrDefault(SecType.PRIVATELY_OFFERED_FUND, ListUtil.empty()));
-            CollUtil.addAllIfNotContains(marketFundIds, typeSecMap.getOrDefault(SecType.PUBLICLY_OFFERED_FUNDS, ListUtil.empty()));
-            if (CollUtil.isNotEmpty(marketFundIds)) {
-                Map<String, String> marketFundIdNameMap = fundInformationDao.getMarketFundIdNameMap(marketFundIds);
-                secNameMap.putAll(marketFundIdNameMap);
-            }
+            List<String> marketFundIds = ListUtil.of(SecType.PRIVATELY_OFFERED_FUND, SecType.PUBLICLY_OFFERED_FUNDS);
+            this.loadNameMap(secNameMap, typeSecMap, marketFundIds, this.fundInformationDao::getMarketFundIdNameMap);
             // 市场指数
-            List<String> marketIndexIds = ListUtil.list(true);
-            CollUtil.addAllIfNotContains(marketIndexIds, typeSecMap.getOrDefault(SecType.INDEX_FUND, ListUtil.empty()));
-            CollUtil.addAllIfNotContains(marketIndexIds, typeSecMap.getOrDefault(SecType.RONGZHI_INDEX, ListUtil.empty()));
-            CollUtil.addAllIfNotContains(marketIndexIds, typeSecMap.getOrDefault(SecType.THIRD_INDEX_FUND, ListUtil.empty()));
-            if (CollUtil.isNotEmpty(marketIndexIds)) {
-                Map<String, String> marketFundIdNameMap = indexesProfileDao.getFundIdNameMap(marketIndexIds);
-                secNameMap.putAll(marketFundIdNameMap);
-            }
+            List<String> marketIndexIds = ListUtil.of(SecType.INDEX_FUND, SecType.RONGZHI_INDEX, SecType.THIRD_INDEX_FUND);
+            this.loadNameMap(secNameMap, typeSecMap, marketIndexIds, this.indexesProfileDao::getFundIdNameMap);
             // 推送事件,存缓存
-            SaveCacheEvent<Map<String, Object>> event = new SaveCacheEvent<>(this, secNameMap, t -> {
+            SaveCacheEvent<Map<String, Object>> event = new SaveCacheEvent<>(key, secNameMap, t -> {
                 this.cacheGateway.hset(key, t);
                 return this.cacheGateway.expire(key, 1, TimeUnit.DAYS);
             });
@@ -201,4 +194,23 @@ public class BaseInfoServiceImpl implements BaseInfoService, ApplicationContextA
     public List<Map<String, Object>> getFundRank(String rankDate, String fundId, List<String> indexIds, Indicator indicator) {
         return this.fundInformationDao.getFundRank(rankDate, fundId, indexIds, indicator);
     }
+
+    /**
+     * 把指定类型的标的的名称映射查询出来
+     *
+     * @param secNameMap 保存的map
+     * @param typeSecMap 指定类型对应的标的
+     * @param types      指定类型列表
+     * @param function   查询操作封装
+     */
+    private void loadNameMap(Map<String, Object> secNameMap, Map<String, List<String>> typeSecMap,
+                             List<String> types, Function<List<String>, Map<String, String>> function) {
+        List<String> refIds = ListUtil.list(true);
+        for (String type : types) {
+            CollUtil.addAllIfNotContains(refIds, typeSecMap.getOrDefault(type, ListUtil.empty()));
+        }
+        if (CollUtil.isNotEmpty(refIds)) {
+            secNameMap.putAll(function.apply(refIds));
+        }
+    }
 }

+ 7 - 0
src/main/java/com/smppw/analysis/infrastructure/config/RedisConfig.java

@@ -3,6 +3,7 @@ package com.smppw.analysis.infrastructure.config;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -12,7 +13,13 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
+/**
+ * @author wangzaijun
+ * @date 2023/8/9 15:16
+ * @description redis缓存配置,在cache-type属性值为[redis]时生效
+ */
 @Configuration
+@ConditionalOnProperty(prefix = "smppw.data.analysis", name = {"cache-type"}, havingValue = "redis")
 public class RedisConfig {
     @Bean
     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {

+ 3 - 2
src/main/java/com/smppw/analysis/infrastructure/gatewayimpl/RedisCacheGateway.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.smppw.analysis.domain.gateway.CacheFactory;
 import com.smppw.analysis.domain.gateway.CacheGateway;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataAccessException;
 import org.springframework.data.redis.connection.RedisConnection;
 import org.springframework.data.redis.core.HashOperations;
@@ -24,9 +25,9 @@ public class RedisCacheGateway implements CacheGateway<Object> {
     private final HashOperations<String, String, Object> _hashOperations;
     private final HashMapper<Object, String, Object> _hashMapper;
 
-    public RedisCacheGateway(RedisTemplate<String, Object> _redisTemplate) {
+    public RedisCacheGateway(@Autowired(required = false) RedisTemplate<String, Object> _redisTemplate) {
         this._redisTemplate = _redisTemplate;
-        this._hashOperations = _redisTemplate.opsForHash();
+        this._hashOperations = _redisTemplate == null ? null : _redisTemplate.opsForHash();
         this._hashMapper = new Jackson2HashMapper(true);
     }
 

+ 1 - 1
src/main/java/com/smppw/analysis/infrastructure/task/NonTradingDayTask.java

@@ -1,6 +1,6 @@
 package com.smppw.analysis.infrastructure.task;
 
-import com.smppw.analysis.domain.persistence.IndexesTradeDateDoMapper;
+import com.smppw.analysis.domain.mapper.IndexesTradeDateDoMapper;
 import com.smppw.common.cache.CaffeineLocalCache;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

+ 1 - 1
src/main/java/com/smppw/analysis/infrastructure/task/RiskOfFreeIdTask.java

@@ -1,6 +1,6 @@
 package com.smppw.analysis.infrastructure.task;
 
-import com.smppw.analysis.domain.persistence.DepositNavDoMapper;
+import com.smppw.analysis.domain.mapper.DepositNavDoMapper;
 import com.smppw.common.cache.CaffeineLocalCache;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;

+ 3 - 3
src/main/java/com/smppw/analysis/infrastructure/task/TrendDateTask.java

@@ -1,6 +1,6 @@
 package com.smppw.analysis.infrastructure.task;
 
-import com.smppw.analysis.domain.persistence.IndexesTradeDateDoMapper;
+import com.smppw.analysis.domain.mapper.IndexesTradeDateDoMapper;
 import com.smppw.common.cache.CaffeineLocalCache;
 import com.smppw.common.pojo.IndexesTradeDateDo;
 import org.slf4j.Logger;
@@ -46,7 +46,7 @@ public class TrendDateTask {
         List<IndexesTradeDateDo> yearWeekLastTradeDateList = new ArrayList<>();
         Integer weekOfYear = null;
         String yearmonth = null;
-        Integer weekOfMonth = 1;
+        int weekOfMonth = 1;
         for (IndexesTradeDateDo indexesTradeDateDo : indexesTradeDateDoList) {
             Integer theWeekOfYear = indexesTradeDateDo.getWeekOfYear();
             String theYearmonth = indexesTradeDateDo.getYearmonth();
@@ -57,7 +57,7 @@ public class TrendDateTask {
                 yearmonth = theYearmonth;
             }
 
-            if (weekOfYear != theWeekOfYear) {
+            if (!weekOfYear.equals(theWeekOfYear)) {
                 if (!yearmonth.equals(theYearmonth)) {
                     weekOfMonth = 1;
                     yearmonth = theYearmonth;

+ 56 - 0
src/main/resources/application-tob.yaml

@@ -0,0 +1,56 @@
+server:
+  port: 8899
+  undertow:
+    accesslog:
+      dir: .logs
+      enabled: true
+      pattern: common
+      prefix: access_log
+      suffix: log
+    threads:
+      # io线程数,主要执行费阻塞的任务
+      io: 8
+      # 阻塞任务线程池
+      worker: 50
+    # 每块buffer的空间大小,越小的空间被利用越充分
+    buffer-size: 1024
+    # 是否分配的直接内存
+    direct-buffers: true
+
+spring:
+  datasource:
+    url: jdbc:mysql://47.112.140.222:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+    username: rz_cm_master
+    password: TbLuENLK
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    hikari:
+      pool-name: hfdb_core
+      # 连接池最大连接数,默认是10
+      maximum-pool-size: 10
+      # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+      auto-commit: true
+      # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+      max-lifetime: 900000
+      # 数据库连接超时时间,设置为300秒超时
+      connection-timeout: 300000
+      # keepalive time
+      keepalive-time: 60000
+#  data:
+#    redis:
+#      host: 192.168.1.28
+#      port: 6379
+#      password: twznW28grxzk
+#      timeout: 30000
+#      database: 1
+#      jedis:
+#        pool:
+#          max-idle: 6    #最大空闲数
+#          max-active: 10 #最大连接数
+#          min-idle: 2    #最小空闲数
+
+smppw:
+  data:
+    analysis:
+      py-url: https://master-test.simuwang.com/
+      cache-type: memory
+      enable-sign: false

+ 56 - 0
src/main/resources/application-toc.yaml

@@ -0,0 +1,56 @@
+server:
+  port: 8900
+  undertow:
+    accesslog:
+      dir: .logs
+      enabled: true
+      pattern: common
+      prefix: access_log
+      suffix: log
+    threads:
+      # io线程数,主要执行费阻塞的任务
+      io: 8
+      # 阻塞任务线程池
+      worker: 50
+    # 每块buffer的空间大小,越小的空间被利用越充分
+    buffer-size: 1024
+    # 是否分配的直接内存
+    direct-buffers: true
+
+spring:
+  datasource:
+    url: jdbc:mysql://120.79.121.165:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
+    username: rz_new_data_channel_user
+    password: xVfuCKIP
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    hikari:
+      pool-name: hfdb_core
+      # 连接池最大连接数,默认是10
+      maximum-pool-size: 10
+      # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
+      auto-commit: true
+      # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+      max-lifetime: 900000
+      # 数据库连接超时时间,设置为300秒超时
+      connection-timeout: 300000
+      # keepalive time
+      keepalive-time: 60000
+  data:
+    redis:
+      host: 192.168.1.28
+      port: 6379
+      password: twznW28grxzk
+      timeout: 30000
+      database: 2
+      jedis:
+        pool:
+          max-idle: 6    #最大空闲数
+          max-active: 10 #最大连接数
+          min-idle: 2    #最小空闲数
+
+smppw:
+  data:
+    analysis:
+      py-url: https://master-test.simuwang.com/  # python服务调用地址
+      cache-type: redis # 缓存类型,如果是redis必须配置redis
+      enable-sign: false # 参数签名校验功能是否可用

+ 3 - 55
src/main/resources/application.yaml

@@ -1,54 +1,8 @@
-server:
-  port: 8899
-  undertow:
-    accesslog:
-      dir: .logs
-      enabled: true
-      pattern: common
-      prefix: access_log
-      suffix: log
-    threads:
-      # io线程数,主要执行费阻塞的任务
-      io: 8
-      # 阻塞任务线程池
-      worker: 50
-    # 每块buffer的空间大小,越小的空间被利用越充分
-    buffer-size: 1024
-    # 是否分配的直接内存
-    direct-buffers: true
-
 spring:
   application:
     name: smppw-analysis
-  datasource:
-    url: jdbc:mysql://47.112.140.222:3306/rz_hfdb_core?allowMultiQueries=true&useSSL=false&rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull
-    username: rz_cm_master
-    password: TbLuENLK
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    hikari:
-      pool-name: hfdb_core
-      # 连接池最大连接数,默认是10
-      maximum-pool-size: 10
-      # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
-      auto-commit: true
-      # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
-      max-lifetime: 900000
-      # 数据库连接超时时间,设置为300秒超时
-      connection-timeout: 300000
-      # keepalive time
-      keepalive-time: 60000
-  data:
-    redis:
-      host: 192.168.1.28
-      port: 6379
-      password: twznW28grxzk
-      timeout: 30000
-      database: 2
-      jedis:
-        pool:
-          max-idle: 6    #最大空闲数
-          max-active: 10 #最大连接数
-          min-idle: 2    #最小空闲数
+  profiles:
+    active: toc
 
 # mybatis 配置
 mybatis:
@@ -57,10 +11,4 @@ mybatis:
 # 打印一下sql日志
 logging:
   level:
-    com.smppw.analysis.domain.persistence: debug
-
-smppw:
-  data:
-    analysis:
-      py-url: https://master-test.simuwang.com/
-      cache-type: redis
+    com.smppw.analysis.domain.mapper: debug

+ 1 - 1
src/main/resources/mapping/BaseUnderlyingMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.BaseUnderlyingMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.BaseUnderlyingMapper">
     <select id="querySecIndustryInfo" resultType="com.smppw.analysis.domain.dataobject.SwSecIndustryInfoDO">
         SELECT distinct a.underlying_code as secCode,
                         i.industry_code   as industryCode,

+ 1 - 1
src/main/resources/mapping/BondBasicInformationDOMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.BondBasicInformationDOMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.BondBasicInformationDOMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.BondBasicInformationDO">
     <!--@mbg.generated-->
     <!--@Table bond_basic_information-->

+ 1 - 1
src/main/resources/mapping/DepositNavDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.DepositNavDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.DepositNavDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.DepositNavDo">
     <!--@mbg.generated-->
     <!--@Table deposit_nav-->

+ 1 - 1
src/main/resources/mapping/FundFrequencyDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.FundFrequencyDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.FundFrequencyDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.FundFrequencyDo">
     <!--@mbg.generated-->
     <!--@Table fund_frequency-->

+ 2 - 2
src/main/resources/mapping/FundInformationDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.FundInformationDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.FundInformationDoMapper">
     <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.FundInformationDo">
         <!--@mbg.generated-->
         <!--@Table fund_information-->
@@ -262,7 +262,7 @@
         FROM rz_hfdb_core.fund_information fi
                  LEFT JOIN rz_hfdb_core.fund_manager_mapping fm ON fi.fund_id = fm.fund_id AND fm.isvalid = 1
                  LEFT JOIN rz_hfdb_core.company_information ci ON ci.company_id = fi.trust_id AND ci.isvalid = 1
-                 LEFT JOIN rz_combination_master.cm_big_data_manager_info mi
+                 LEFT JOIN rz_hfdb_core.personnel_mapping mi
                            ON fm.fund_manager_id = mi.manager_id WHERE fi.isvalid = 1
                                                                    AND fi.fund_id in
         <foreach collection="fundIdList" item="fundId" index="index" open="(" separator="," close=")">

+ 1 - 1
src/main/resources/mapping/IndexesProfileDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.IndexesProfileDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.IndexesProfileDoMapper">
     <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.IndexesProfileDo">
         <!--@mbg.generated-->
         <!--@Table indexes_profile-->

+ 1 - 1
src/main/resources/mapping/IndexesRzIndexDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.IndexesRzIndexDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.IndexesRzIndexDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.IndexesRzIndexDo">
     <!--@mbg.generated-->
     <!--@Table indexes_rz_index-->

+ 1 - 1
src/main/resources/mapping/IndexesTradeDateDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.IndexesTradeDateDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.IndexesTradeDateDoMapper">
     <resultMap id="BaseResultMap" type="com.smppw.common.pojo.IndexesTradeDateDo">
         <!--@mbg.generated-->
         <!--@Table indexes_trade_date-->

+ 1 - 1
src/main/resources/mapping/MarketIndexesDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.MarketIndexesDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.MarketIndexesDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.MarketIndexesDo">
     <!--@mbg.generated-->
     <!--@Table market_indexes-->

+ 1 - 1
src/main/resources/mapping/NavDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.NavDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.NavDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.NavDo">
     <!--@mbg.generated-->
     <!--@Table nav-->

+ 1 - 1
src/main/resources/mapping/PublicNavDoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.PublicNavDoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.PublicNavDoMapper">
   <resultMap id="BaseResultMap" type="com.smppw.analysis.domain.dataobject.PublicNavDo">
     <!--@mbg.generated-->
     <!--@Table public_nav-->

+ 1 - 1
src/main/resources/mapping/PubliclyFundExtInfoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smppw.analysis.domain.persistence.PubliclyFundExtInfoMapper">
+<mapper namespace="com.smppw.analysis.domain.mapper.PubliclyFundExtInfoMapper">
     <select id="queryPositionDetails" parameterType="string" resultType="com.smppw.analysis.domain.dataobject.FundPositionDetailDO">
         select a.sec_id as secId,
                a.fund_id as fundId,