diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3cf1e6a..1605a3b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,6 +4,11 @@ stages:
- dockerize
- deploy
+variables:
+ company_name: juyoutech
+ project_name: germany_stock
+ service_name: market
+
build:
image: maven:3.6.3-openjdk-8
stage: build
@@ -48,18 +53,22 @@ dockerize:
- main
- develop
script:
- - echo ">>>>>>Start Building Image<<<<<<"
- - ls
- - ls target
- - echo $DOCKER_PASSWORD
- - echo $CI_PIPELINE_ID
- - docker build -t juyoutech/india_stock_market:latest .
- - docker tag juyoutech/india_stock_market:latest juyoutech/india_stock_market:$CI_PIPELINE_ID
- - docker tag juyoutech/india_stock_market:latest juyoutech/india_stock_market:$CI_COMMIT_BRANCH
- - docker login -u juyoutech -p dckr_pat_8rg23IBA2kZMOCX4IJKApb8m5l8
- - docker push juyoutech/india_stock_market:latest
- - docker push juyoutech/india_stock_market:$CI_PIPELINE_ID
- - docker push juyoutech/india_stock_market:$CI_COMMIT_BRANCH
+ - echo ">>>>>>Start Building Docker Image<<<<<<"
+ - pwd
+ - ls -lah
+ - echo $DOCKER_PASSWORD | docker login -u ${company_name} --password-stdin
+ - docker build -t ${company_name}/${project_name}_${service_name} .
+
+ - docker push ${company_name}/${project_name}_${service_name}
+
+ - docker tag ${company_name}/${project_name}_${service_name} ${company_name}/${project_name}_${service_name}:$CI_PIPELINE_ID
+ - docker push ${company_name}/${project_name}_${service_name}:$CI_PIPELINE_ID
+
+ - docker tag ${company_name}/${project_name}_${service_name} ${company_name}/${project_name}_${service_name}:$CI_COMMIT_BRANCH
+ - docker push ${company_name}/${project_name}_${service_name}:$CI_COMMIT_BRANCH
+
+ - echo ${company_name}/${project_name}_${service_name}:$CI_COMMIT_BRANCH
+
deploy-dev:
stage: deploy
only:
@@ -72,8 +81,8 @@ deploy-dev:
- |
curl -X POST \
-H "Content-Type: application/json" \
- -d '{"namespace":"yddev", "deployment_name":"india-stock-market"}' \
- https://updater-yddev.moneytj.com/restart-deployment
+ -d '{"namespace":"dgdev", "deployment_name":"germany-stock-market"}' \
+ https://updater-dgdev.moneytj.com/restart-deployment
- echo "Application successfully deployed."
diff --git a/pom.xml b/pom.xml
index bd70d8f..341677e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
4.1.0
+
+ org.json
+ json
+ 20240303
+
+
io.springfox
springfox-swagger2
diff --git a/src/main/generated/cn/stock/market/infrastructure/db/po/QMoneyStockPO.java b/src/main/generated/cn/stock/market/infrastructure/db/po/QMoneyStockPO.java
index b719747..7e6ffb0 100644
--- a/src/main/generated/cn/stock/market/infrastructure/db/po/QMoneyStockPO.java
+++ b/src/main/generated/cn/stock/market/infrastructure/db/po/QMoneyStockPO.java
@@ -29,6 +29,10 @@ public class QMoneyStockPO extends EntityPathBase {
public final StringPath moneyScId = createString("moneyScId");
+ public final StringPath nseIndiaChartId = createString("nseIndiaChartId");
+
+ public final StringPath nseIndiaId = createString("nseIndiaId");
+
public final DateTimePath saveTime = createDateTime("saveTime", java.util.Date.class);
public final StringPath selfDispId = createString("selfDispId");
@@ -39,6 +43,8 @@ public class QMoneyStockPO extends EntityPathBase {
public final StringPath stockType = createString("stockType");
+ public final BooleanPath useFromBseindia = createBoolean("useFromBseindia");
+
public QMoneyStockPO(String variable) {
super(MoneyStockPO.class, forVariable(variable));
}
diff --git a/src/main/generated/cn/stock/market/infrastructure/db/po/QStockIpoPO.java b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockIpoPO.java
index 657c8d4..3a39af1 100644
--- a/src/main/generated/cn/stock/market/infrastructure/db/po/QStockIpoPO.java
+++ b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockIpoPO.java
@@ -23,6 +23,8 @@ public class QStockIpoPO extends EntityPathBase {
public final DateTimePath createDate = createDateTime("createDate", java.util.Date.class);
+ public final StringPath exchangeType = createString("exchangeType");
+
public final NumberPath id = createNumber("id", Integer.class);
public final NumberPath isList = createNumber("isList", Integer.class);
@@ -38,7 +40,6 @@ public class QStockIpoPO extends EntityPathBase {
public final StringPath stockCode = createString("stockCode");
public final StringPath stockName = createString("stockName");
- public final StringPath exchangeType = createString("exchangeType");
public final NumberPath stockPrice = createNumber("stockPrice", java.math.BigDecimal.class);
diff --git a/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java
new file mode 100644
index 0000000..c4dd448
--- /dev/null
+++ b/src/main/generated/cn/stock/market/infrastructure/db/po/QStockTempPO.java
@@ -0,0 +1,43 @@
+package cn.stock.market.infrastructure.db.po;
+
+import static com.querydsl.core.types.PathMetadataFactory.*;
+
+import com.querydsl.core.types.dsl.*;
+
+import com.querydsl.core.types.PathMetadata;
+import javax.annotation.Generated;
+import com.querydsl.core.types.Path;
+
+
+/**
+ * QStockTempPO is a Querydsl query type for StockTempPO
+ */
+@Generated("com.querydsl.codegen.EntitySerializer")
+public class QStockTempPO extends EntityPathBase {
+
+ private static final long serialVersionUID = 1973569078L;
+
+ public static final QStockTempPO stockTempPO = new QStockTempPO("stockTempPO");
+
+ public final NumberPath id = createNumber("id", Integer.class);
+
+ public final StringPath stockGid = createString("stockGid");
+
+ public final StringPath stockLogo = createString("stockLogo");
+
+ public final StringPath stockType = createString("stockType");
+
+ public QStockTempPO(String variable) {
+ super(StockTempPO.class, forVariable(variable));
+ }
+
+ public QStockTempPO(Path extends StockTempPO> path) {
+ super(path.getType(), path.getMetadata());
+ }
+
+ public QStockTempPO(PathMetadata metadata) {
+ super(StockTempPO.class, metadata);
+ }
+
+}
+
diff --git a/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java b/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java
new file mode 100644
index 0000000..8874d4a
--- /dev/null
+++ b/src/main/java/cn/stock/market/domain/basic/convert/StockTempConvert.java
@@ -0,0 +1,25 @@
+package cn.stock.market.domain.basic.convert;
+
+import cn.qutaojing.common.domain.convert.SimpleEntityPOConvert;
+import cn.qutaojing.common.utils.SpringUtils;
+import cn.stock.market.domain.basic.entity.Stock;
+import cn.stock.market.domain.basic.entity.StockTemp;
+import cn.stock.market.infrastructure.db.po.StockPO;
+import cn.stock.market.infrastructure.db.po.StockTempPO;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * StockConvert
+ *
+ * @author rplees
+ * @email rplees.i.ly@gmail.com
+ * @created 2023/06/17
+ */
+@Component
+@Lazy
+public class StockTempConvert extends SimpleEntityPOConvert {
+ public static StockTempConvert of() {
+ return SpringUtils.getBean(StockTempConvert.class);
+ }
+}
diff --git a/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java b/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java
new file mode 100644
index 0000000..e81ad33
--- /dev/null
+++ b/src/main/java/cn/stock/market/domain/basic/entity/StockTemp.java
@@ -0,0 +1,26 @@
+package cn.stock.market.domain.basic.entity;
+
+import cn.qutaojing.common.utils.Beans;
+import cn.stock.market.dto.command.StockCreateCommand;
+import cn.stock.market.infrastructure.db.po.StockPO;
+import cn.stock.market.infrastructure.db.po.StockTempPO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * Stock
+ *
+ * @author rplees
+ * @email rplees.i.ly@gmail.com
+ * @created 2023/06/17
+ */
+@Data
+@NoArgsConstructor
+@SuperBuilder
+@EqualsAndHashCode(
+ callSuper = false
+)
+public class StockTemp extends StockTempPO {
+}
diff --git a/src/main/java/cn/stock/market/domain/basic/repository/StockRepository.java b/src/main/java/cn/stock/market/domain/basic/repository/StockRepository.java
index bd02858..39ed937 100644
--- a/src/main/java/cn/stock/market/domain/basic/repository/StockRepository.java
+++ b/src/main/java/cn/stock/market/domain/basic/repository/StockRepository.java
@@ -54,6 +54,11 @@ public class StockRepository extends LocalCacheRepository cacheGidMap() {
+ Map map = cacheList().stream().collect(Collectors.toMap(Stock::getStockGid, val -> val, (u, v) -> u));
+ return map;
+ }
public Map cacheNameMap() {
Map map = cacheList()
diff --git a/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java b/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java
new file mode 100644
index 0000000..1742f51
--- /dev/null
+++ b/src/main/java/cn/stock/market/domain/basic/repository/StockTempRepository.java
@@ -0,0 +1,63 @@
+package cn.stock.market.domain.basic.repository;
+
+import cn.qutaojing.common.domain.convert.IEntityPOConvert;
+import cn.qutaojing.common.domain.respostory.LocalCacheBean;
+import cn.qutaojing.common.domain.respostory.LocalCacheRepository;
+import cn.qutaojing.common.jpa.ConditionBuilder;
+import cn.qutaojing.common.utils.SpringUtils;
+import cn.stock.market.domain.basic.convert.StockConvert;
+import cn.stock.market.domain.basic.convert.StockTempConvert;
+import cn.stock.market.domain.basic.entity.Stock;
+import cn.stock.market.domain.basic.entity.StockTemp;
+import cn.stock.market.infrastructure.db.po.QStockPO;
+import cn.stock.market.infrastructure.db.po.QStockTempPO;
+import cn.stock.market.infrastructure.db.po.StockPO;
+import cn.stock.market.infrastructure.db.po.StockTempPO;
+import cn.stock.market.infrastructure.db.repo.StockRepo;
+import cn.stock.market.infrastructure.db.repo.StockTempRepo;
+import com.google.common.cache.CacheBuilder;
+import com.rp.spring.jpa.GenericJpaRepository;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * StockRepository
+ *
+ * @author rplees
+ * @email rplees.i.ly@gmail.com
+ * @created 2023/06/17
+ */
+@Repository
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class StockTempRepository extends LocalCacheRepository {
+ final StockTempRepo repo;
+ final StockTempConvert convert;
+ final static QStockTempPO q = QStockTempPO.stockTempPO;
+
+ public List findAllForCheck() {
+ return findAll();
+ }
+
+ @Override
+ public GenericJpaRepository repo() {
+ return repo;
+ }
+
+ @Override
+ public IEntityPOConvert convert() {
+ return convert;
+ }
+
+ public static StockTempRepository of() {
+ return SpringUtils.getBean(StockTempRepository.class);
+ }
+}
diff --git a/src/main/java/cn/stock/market/domain/basic/service/StockService.java b/src/main/java/cn/stock/market/domain/basic/service/StockService.java
index b0ad5c3..84ab368 100644
--- a/src/main/java/cn/stock/market/domain/basic/service/StockService.java
+++ b/src/main/java/cn/stock/market/domain/basic/service/StockService.java
@@ -13,11 +13,9 @@ import cn.hutool.core.text.StrFormatter;
import cn.stock.market.dto.model.*;
import cn.stock.market.infrastructure.api.EttechchartsApis;
import cn.stock.market.infrastructure.api.GrowwInApis;
+import cn.stock.market.infrastructure.api.HomeApiIndex;
import cn.stock.market.infrastructure.api.TodayApis;
-import cn.stock.market.infrastructure.api.investing.IndiaIndexVo;
-import cn.stock.market.infrastructure.api.investing.IndiaStockVO;
-import cn.stock.market.infrastructure.api.investing.InvestingApis;
-import cn.stock.market.infrastructure.api.investing.InvestingInvokerApis;
+import cn.stock.market.infrastructure.api.investing.*;
import cn.stock.market.infrastructure.api.sina.vo.HotSearchVO;
import cn.stock.market.utils.*;
import com.ag.utils.CollectionUtils;
@@ -1048,70 +1046,33 @@ public class StockService {
return ServerResponse.createBySuccess(indexVoList);
}
- public ServerResponse getIndexByBtoday(){
- List indexVoList = new ArrayList<>();
- try {
- String exchange = "bse";
- IndiaIndexVo vo1 = new IndiaIndexVo();
- String coCode = "20558";
- JSONObject object = TodayApis.getStockDetail("in%3BSEN", coCode);
- IndiaStockVO market = objToVo(object);
- market.setName("BSESENSEX指数");
+ public ServerResponse getIndexByBtoday() throws Exception {
+ List list = HomeApiIndex.fetchStockIndices();
+
+ List indexVoList = new ArrayList<>();
+
+ for (StockIndex stockIndex : list) {
+ IndiaIndexNewVo vo1 = new IndiaIndexNewVo();
+ IndiaStockVO market = new IndiaStockVO();
+ market.setClose(String.valueOf(stockIndex.getClose()));
+ market.setHigh(String.valueOf(stockIndex.getHigh()));
+ market.setLow(String.valueOf(stockIndex.getLow()));
+ market.setName(stockIndex.getName());
+ market.setNowPrice(String.valueOf(stockIndex.getClose()));
+ market.setOpen(String.valueOf(stockIndex.getOpen()));
+ market.setRate(String.valueOf(stockIndex.getPercentChange()));
vo1.setIndexVo(market);
- //获取k线图 1D 当天的数据
- String format = "S";
- String durationType = "D";
- String duration = "1";
- List kine = TodayApis.getStockKline(exchange,coCode,format,durationType,duration);
- vo1.setKLine(kine);
+ List kLines = HomeApiIndex.fetchChartData(stockIndex.getId(), 419);
+// List kline = HomeApiIndex.convertToJsonList(kLines);
+ vo1.setKLine(kLines);
indexVoList.add(vo1);
- }catch (Exception e){
- log.error("BToday获取BSESENSEX指数数据异常,异常信息。。。。", e);
- try {
- GrowwInApis.requestSenSexData(indexVoList);
- } catch (Exception e1) {
- log.error("GrowwIn获取BSESENSEX指数数据异常,异常信息。。。。", e1);
- try{
- EttechchartsApis.requestSensexData(indexVoList);
- } catch (Exception e2) {
- log.error("Ettechcharts获取BSESENSEX指数数据异常,异常信息。。。。", e2);
- }
- }
}
- try {
- String exchange = "nse";
- IndiaIndexVo vo1 = new IndiaIndexVo();
- String coCode = "20559";
- JSONObject object = TodayApis.getStockDetail("in%3BNSX", coCode);
- IndiaStockVO market = objToVo(object);
- market.setName("NIFTY50指数");
- vo1.setIndexVo(market);
-
- //获取k线图 1D 当天的数据
- String format = "S";
- String durationType = "D";
- String duration = "1";
- List kine = TodayApis.getStockKline(exchange,coCode,format,durationType,duration);
- vo1.setKLine(kine);
- indexVoList.add(vo1);
- }catch (Exception e){
- log.error("BToday获取NIFTY50指数数据异常,异常信息。。。。", e);
- try {
- GrowwInApis.requestNifty50Data(indexVoList);
- } catch (Exception e1) {
- log.error("GrowwIn获取NIFTY50指数数据异常,异常信息。。。。", e1);
- try{
- EttechchartsApis.requestNifty50Data(indexVoList);
- } catch (Exception e2) {
- log.error("Ettechcharts获取NIFTY50指数数据异常,异常信息。。。。", e2);
- }
- }
- }
return ServerResponse.createBySuccess(indexVoList);
}
+
private IndiaStockVO objToVo(JSONObject object){
IndiaStockVO market = new IndiaStockVO();
if(object.containsKey("priceprevclose")){
diff --git a/src/main/java/cn/stock/market/dto/RawStockApiResponse.java b/src/main/java/cn/stock/market/dto/RawStockApiResponse.java
new file mode 100644
index 0000000..9f8a8a0
--- /dev/null
+++ b/src/main/java/cn/stock/market/dto/RawStockApiResponse.java
@@ -0,0 +1,10 @@
+package cn.stock.market.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RawStockApiResponse {
+ private List data;
+}
diff --git a/src/main/java/cn/stock/market/dto/StockDataDto.java b/src/main/java/cn/stock/market/dto/StockDataDto.java
new file mode 100644
index 0000000..4e9c9d6
--- /dev/null
+++ b/src/main/java/cn/stock/market/dto/StockDataDto.java
@@ -0,0 +1,13 @@
+package cn.stock.market.dto;
+
+import lombok.Data;
+
+@Data
+public class StockDataDto {
+ private long time;
+ private double open;
+ private double close;
+ private double max;
+ private double min;
+ private long volume;
+}
\ No newline at end of file
diff --git a/src/main/java/cn/stock/market/dto/StockQuoteData.java b/src/main/java/cn/stock/market/dto/StockQuoteData.java
new file mode 100644
index 0000000..098ce04
--- /dev/null
+++ b/src/main/java/cn/stock/market/dto/StockQuoteData.java
@@ -0,0 +1,31 @@
+package cn.stock.market.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class StockQuoteData {
+ private String id;
+ private String symbol;
+ private String name;
+ private String exchange;
+ private String mic_code;
+ private String datetime;
+ private long timestamp;
+ private double open;
+ private double high;
+ private double low;
+ private double close;
+ private long volume;
+ private double previous_close;
+ private double change;
+ private double percent_change;
+ private double average_volume;
+ @JsonProperty("is_market_open")
+ private boolean market_open;
+ private Long market_cap;
+ private Object fifty_two_week;
+ private int icon;
+}
diff --git a/src/main/java/cn/stock/market/dto/StockQuoteResponse.java b/src/main/java/cn/stock/market/dto/StockQuoteResponse.java
new file mode 100644
index 0000000..e7fea88
--- /dev/null
+++ b/src/main/java/cn/stock/market/dto/StockQuoteResponse.java
@@ -0,0 +1,13 @@
+package cn.stock.market.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class StockQuoteResponse {
+ private List data;
+ private boolean success;
+ private String message;
+ private int status;
+}
diff --git a/src/main/java/cn/stock/market/dto/TradingViewData.java b/src/main/java/cn/stock/market/dto/TradingViewData.java
new file mode 100644
index 0000000..e27c201
--- /dev/null
+++ b/src/main/java/cn/stock/market/dto/TradingViewData.java
@@ -0,0 +1,13 @@
+package cn.stock.market.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class TradingViewData {
+ private String s; // symbol
+ private List