diff --git a/script/src/main/java/com/xiang/ServiceScriptApplication.java b/script/src/main/java/com/xiang/ServiceScriptApplication.java index 5791f5c..4516fe2 100644 --- a/script/src/main/java/com/xiang/ServiceScriptApplication.java +++ b/script/src/main/java/com/xiang/ServiceScriptApplication.java @@ -15,7 +15,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; @MapperScan(basePackages = { "com.xiang.xservice.fwd.mapper", "com.xiang.xservice.glados.repository", - "com.xiang.xservice.xb.repository" + "com.xiang.xservice.xb.repository", + "com.xiang.xservice.stock.gnshyx.mapper", }) @ConfigurationPropertiesScan(basePackages = { "com.xiang.xservice.config" diff --git a/script/src/main/java/com/xiang/xservice/IndexController.java b/script/src/main/java/com/xiang/xservice/IndexController.java index 3a4501a..37b6b2f 100644 --- a/script/src/main/java/com/xiang/xservice/IndexController.java +++ b/script/src/main/java/com/xiang/xservice/IndexController.java @@ -29,13 +29,13 @@ public class IndexController { private String url; @GetMapping("/index") - public Result index() { + public Result index() { String msg = "已激活环境:" + env + ",web端口启用:" + port + "使用datasource:" + url; return Result.success(msg); } @GetMapping("/redisTest") - private Result redisTest() { + private Result redisTest() { redisTemplate.opsForValue().set("2222", "231"); return Result.success("redis获取到key为test的值为:" + redisTemplate.opsForValue().get("2222")); diff --git a/script/src/main/java/com/xiang/xservice/domain/controller/DynamicDomainController.java b/script/src/main/java/com/xiang/xservice/domain/controller/DynamicDomainController.java index 5a93844..8df3963 100644 --- a/script/src/main/java/com/xiang/xservice/domain/controller/DynamicDomainController.java +++ b/script/src/main/java/com/xiang/xservice/domain/controller/DynamicDomainController.java @@ -41,7 +41,7 @@ public class DynamicDomainController { } @PostMapping("/ddns") - public Result dynamicDomainAnalysis() { + public Result dynamicDomainAnalysis() { try { String publicIp = IpUtils.getPublicIp(); log.info("获取公网IP成功,time:{}, ip:{}", LocalDateTime.now(), publicIp); diff --git a/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java b/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java index 50bbb6c..f43227c 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java +++ b/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java @@ -29,7 +29,7 @@ public class FwdDataController { private final IPerformServiceHttp performServiceHttp; @PostMapping("/refreshData") - public Result refreshData() { + public Result refreshData() { List availablePerforms = performService.getAvailablePerform(); for (FPerformConfig availablePerform : availablePerforms) { ProjectInfoResp info = performServiceHttp.getProjectInfoFromHttp(availablePerform.getProjectId()); diff --git a/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java b/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java index 15035aa..fb71daa 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java +++ b/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java @@ -50,7 +50,7 @@ public class FwdOuterController { } @PostMapping("/createOrder") - public Result createOrder(Long projectId) throws Exception { + public Result createOrder(Long projectId) throws Exception { if (performService.createProjectOrder(projectId, FREQUENT_IDS)) { return Result.success("下单成功!"); } diff --git a/script/src/main/java/com/xiang/xservice/glados/controller/GLaDOSController.java b/script/src/main/java/com/xiang/xservice/glados/controller/GLaDOSController.java index 7a248bb..817415d 100644 --- a/script/src/main/java/com/xiang/xservice/glados/controller/GLaDOSController.java +++ b/script/src/main/java/com/xiang/xservice/glados/controller/GLaDOSController.java @@ -22,7 +22,7 @@ public class GLaDOSController { private final GLaDOSService glaDOSService; @PostMapping("/checkIn") - public Result checkIn(@RequestBody GladosCheckInReq request) { + public Result checkIn(@RequestBody GladosCheckInReq request) { return Result.success(glaDOSService.checkIn()); } diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/common/constants/UrlConstant.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/common/constants/UrlConstant.java new file mode 100644 index 0000000..394b4d1 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/common/constants/UrlConstant.java @@ -0,0 +1,12 @@ +package com.xiang.xservice.stock.gnshyx.common.constants; + +public class UrlConstant { + + public final static String BASE_URL = "https://gnshyx.cloudgn.com"; + + public final static String URL_PREFIX = "/prod-api"; + + public final static String LAST_PRICE = BASE_URL + "/price/lastprice"; + + public final static String LAST_LIST = BASE_URL + URL_PREFIX + "/public/stockDailySelection/listLast"; +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/StockGnshyxRecordDataDO.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/StockGnshyxRecordDataDO.java new file mode 100644 index 0000000..a0990c2 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/StockGnshyxRecordDataDO.java @@ -0,0 +1,78 @@ +package com.xiang.xservice.stock.gnshyx.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StockGnshyxRecordDataDO { + /** + * id + */ + private Long id; + + /** + * 名称 + */ + private String symbolName; + + /** + * 股票名称 + */ + private String stockName; + + /** + * 目标价格 + */ + private BigDecimal attentionPrice; + + /** + * 关注价格低位 + */ + private BigDecimal targetPriceLow; + + /** + * 关注价格高位 + */ + private BigDecimal targetPriceHigh; + + /** + * 止损价位 + */ + private BigDecimal stopPrice; + + /** + * 系统每日选择id + */ + private Long stockDailySelectionId; + + /** + * 股票代码 + */ + private String stockCode; + + /** + * 生成时间 + */ + private LocalDateTime selectionTime; + + /** + * maximum_increase + */ + private String maximumIncrease; + + /** + * maximum_increase_seven + */ + private String maximumIncreaseSeven; + + /** + * 创建时间 + */ + private LocalDateTime createTime; +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/GnshyxBaseResp.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/GnshyxBaseResp.java new file mode 100644 index 0000000..a034908 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/GnshyxBaseResp.java @@ -0,0 +1,21 @@ +package com.xiang.xservice.stock.gnshyx.entity.resp; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GnshyxBaseResp { + + private Integer code; + + private String msg; + + @JSONField(name = "server_time") + private Long serverTime; + + private String data; +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/ListLastDataResp.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/ListLastDataResp.java new file mode 100644 index 0000000..cca3bf9 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/entity/resp/ListLastDataResp.java @@ -0,0 +1,63 @@ +package com.xiang.xservice.stock.gnshyx.entity.resp; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ListLastDataResp { + + /** + * 选择id + */ + private Long stockDailySelectionId; + + /** + * 股票代码 + */ + private String stockCode; + + /** + * 股票名称 + */ + private String stockName; + + /** + * 标识名称 + */ + private String symbolName; + + /** + * 目标价格 + */ + private BigDecimal attentionPrice; + + /** + * 关注价格低位 + */ + private BigDecimal targetPriceLow; + + /** + * 关注价格高位 + */ + private BigDecimal targetPriceHigh; + + /** + * 止损价格 + */ + private BigDecimal stopPrice; + + + private String maximumIncrease; + + private String maximumIncreaseSeven; + + /** + * 生成时间 + */ + private String selectionTime; +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/enums/GnshyxUrlEnum.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/enums/GnshyxUrlEnum.java new file mode 100644 index 0000000..d50a013 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/enums/GnshyxUrlEnum.java @@ -0,0 +1,6 @@ +package com.xiang.xservice.stock.gnshyx.enums; + +public enum GnshyxUrlEnum { + + +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/mapper/StockGnshyxRecordDataMapper.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/mapper/StockGnshyxRecordDataMapper.java new file mode 100644 index 0000000..2844c16 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/mapper/StockGnshyxRecordDataMapper.java @@ -0,0 +1,20 @@ +package com.xiang.xservice.stock.gnshyx.mapper; + +import com.xiang.xservice.stock.gnshyx.entity.StockGnshyxRecordDataDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@Mapper +public interface StockGnshyxRecordDataMapper { + + /** + * 批量新增 + * @param entities + * @return + */ + int batchInsertRecord(@Param("list") List entities); +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/schedule/CloudRecordDataJob.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/schedule/CloudRecordDataJob.java new file mode 100644 index 0000000..861ebf8 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/schedule/CloudRecordDataJob.java @@ -0,0 +1,69 @@ +package com.xiang.xservice.stock.gnshyx.schedule; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; +import com.xiang.xservice.basic.utils.DateUtils; +import com.xiang.xservice.basic.utils.HttpUtils; +import com.xiang.xservice.stock.gnshyx.common.constants.UrlConstant; +import com.xiang.xservice.stock.gnshyx.entity.StockGnshyxRecordDataDO; +import com.xiang.xservice.stock.gnshyx.entity.resp.ListLastDataResp; +import com.xiang.xservice.stock.gnshyx.service.ICloudRecordDataService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@Component +public class CloudRecordDataJob { + + private final ICloudRecordDataService cloudRecordDataService; + + @Scheduled(cron = "0 0/1 * * * ? ") + public void gnshyxRecordDataPullJob() { + log.info("<<<<>>>>, 时间戳:{}", System.currentTimeMillis()); + + String resp = HttpUtils.doGet(UrlConstant.LAST_LIST, null, null); + if (StringUtils.isBlank(resp)) { + log.error("{}请求失败,响应结果为空, time:{}", UrlConstant.LAST_LIST, System.currentTimeMillis()); + return; + } + JSONObject jsonObject = JSONObject.parseObject(resp); + Integer code = (Integer) jsonObject.get("code"); + if (200 == code) { + String data = JSON.toJSONString(jsonObject.get("data")); + log.info("查询到的数据结果:{}", data); + List dataRespList = JSON.parseArray(data, ListLastDataResp.class); + if (CollectionUtils.isNotEmpty(dataRespList)) { + List results = Lists.newArrayList(); + for (ListLastDataResp listLastDataResp : dataRespList) { + StockGnshyxRecordDataDO stockGnshyxRecordDataDO = new StockGnshyxRecordDataDO(); + stockGnshyxRecordDataDO.setSymbolName(listLastDataResp.getSymbolName()); + stockGnshyxRecordDataDO.setStockName(listLastDataResp.getStockName()); + stockGnshyxRecordDataDO.setAttentionPrice(listLastDataResp.getAttentionPrice()); + stockGnshyxRecordDataDO.setTargetPriceLow(listLastDataResp.getTargetPriceLow()); + stockGnshyxRecordDataDO.setTargetPriceHigh(listLastDataResp.getTargetPriceHigh()); + stockGnshyxRecordDataDO.setStopPrice(listLastDataResp.getStopPrice()); + stockGnshyxRecordDataDO.setStockDailySelectionId(listLastDataResp.getStockDailySelectionId()); + stockGnshyxRecordDataDO.setStockCode(listLastDataResp.getStockCode()); + stockGnshyxRecordDataDO.setSelectionTime(DateUtils.getDateTimeFromStr(listLastDataResp.getSelectionTime())); + stockGnshyxRecordDataDO.setMaximumIncrease(listLastDataResp.getMaximumIncrease()); + stockGnshyxRecordDataDO.setMaximumIncreaseSeven(listLastDataResp.getMaximumIncreaseSeven()); + stockGnshyxRecordDataDO.setCreateTime(LocalDateTime.now()); + results.add(stockGnshyxRecordDataDO); + } + if (CollectionUtils.isNotEmpty(results)) { + cloudRecordDataService.batchInsertRecord(results); + } + } + + } + } +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/CloudRecordDataServiceImpl.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/CloudRecordDataServiceImpl.java new file mode 100644 index 0000000..1943794 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/CloudRecordDataServiceImpl.java @@ -0,0 +1,18 @@ +package com.xiang.xservice.stock.gnshyx.service; + +import com.xiang.xservice.stock.gnshyx.entity.StockGnshyxRecordDataDO; +import com.xiang.xservice.stock.gnshyx.mapper.StockGnshyxRecordDataMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class CloudRecordDataServiceImpl implements ICloudRecordDataService { + private final StockGnshyxRecordDataMapper stockGnshyxRecordDataMapper; + @Override + public Boolean batchInsertRecord(List list) { + return stockGnshyxRecordDataMapper.batchInsertRecord(list) > 0; + } +} diff --git a/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/ICloudRecordDataService.java b/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/ICloudRecordDataService.java new file mode 100644 index 0000000..22e2d6c --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/stock/gnshyx/service/ICloudRecordDataService.java @@ -0,0 +1,10 @@ +package com.xiang.xservice.stock.gnshyx.service; + +import com.xiang.xservice.stock.gnshyx.entity.StockGnshyxRecordDataDO; + +import java.util.List; + +public interface ICloudRecordDataService { + + Boolean batchInsertRecord(List list); +} diff --git a/script/src/main/resources/mapper/stock/StockGnshyxRecordDataMapper.xml b/script/src/main/resources/mapper/stock/StockGnshyxRecordDataMapper.xml new file mode 100644 index 0000000..8e8a70d --- /dev/null +++ b/script/src/main/resources/mapper/stock/StockGnshyxRecordDataMapper.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + id, + symbol_name, + stock_name, + attention_price, + target_price_low, + target_price_high, + stop_price, + stock_daily_selection_id, + stock_code, + selection_time, + maximum_increase, + maximum_increase_seven, + create_time + + + + INSERT INTO stock_gnshyx_record_data + + + symbol_name, + + + stock_name, + + + attention_price, + + + target_price_low, + + + target_price_high, + + + stop_price, + + + stock_daily_selection_id, + + + stock_code, + + + selection_time, + + + maximum_increase, + + + maximum_increase_seven, + + + create_time + + + + + #{symbolName}, + + + #{stockName}, + + + #{attentionPrice}, + + + #{targetPriceLow}, + + + #{targetPriceHigh}, + + + #{stopPrice}, + + + #{stockDailySelectionId}, + + + #{stockCode}, + + + #{selectionTime}, + + + #{maximumIncrease}, + + + #{maximumIncreaseSeven}, + + + #{createTime} + + + + + insert into stock_gnshyx_record_data(symbol_name, + stock_name, + attention_price, + target_price_low, + target_price_high, + stop_price, + stock_daily_selection_id, + stock_code, + selection_time, + maximum_increase, + maximum_increase_seven, + create_time) + values + + ( + #{item.symbolName}, + #{item.stockName}, + #{item.attentionPrice}, + #{item.targetPriceLow}, + #{item.targetPriceHigh}, + #{item.stopPrice}, + #{item.stockDailySelectionId}, + #{item.stockCode}, + #{item.selectionTime}, + #{item.maximumIncrease}, + #{item.maximumIncreaseSeven}, + #{item.createTime} + ) + + + + + + DELETE FROM stock_gnshyx_record_data + WHERE id = #{id} + + + + UPDATE stock_gnshyx_record_data + + symbol_name = #{symbolName}, + stock_name = #{stockName}, + attention_price = #{attentionPrice}, + target_price_low = #{targetPriceLow}, + target_price_high = #{targetPriceHigh}, + stop_price = #{stopPrice}, + stock_daily_selection_id = #{stockDailySelectionId}, + stock_code = #{stockCode}, + selection_time = #{selectionTime}, + maximum_increase = #{maximumIncrease}, + maximum_increase_seven = #{maximumIncreaseSeven}, + create_time = #{createTime} + + WHERE id = #{id} + + + + \ No newline at end of file