5b848fa0 张雷

奥体项目接口及天气接口开发

1 个父辈 0d27321e
package com.skua.modules.business.controller;
import com.skua.core.api.vo.Result;
import com.skua.modules.business.service.IOlympicCenterService;
import com.skua.modules.business.service.ISynthesizeService;
import com.skua.modules.business.vo.EchartResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 武汉奥体中心接口
*/
@Slf4j
@Api(tags="武汉奥体中心接口")
@RestController
@RequestMapping("/3d/olympic")
public class OlympicCenterController {
@Autowired
private IOlympicCenterService olympicCenterService;
@ApiOperation(value="获取整体实时数据", notes="获取整体实时数据")
@GetMapping(value = "/getRealTimeData")
public Result<Map<String,Object>> getRealTimeData(){
Result<Map<String,Object>> result = new Result<Map<String,Object>>();
Map<String,Object> map = olympicCenterService.getRealTimeData();
result.setResult(map);
result.setSuccess(true);
return result;
}
@ApiOperation(value="获取指标历史趋势曲线", notes="获取指标历史趋势曲线")
@GetMapping(value = "/getHistoryData")
public Result<Map<String,Object>> getHistoryData(String field){
Result<Map<String,Object>> result = new Result<Map<String,Object>>();
Map<String,Object> map = olympicCenterService.getHistoryData(field);
result.setResult(map);
result.setSuccess(true);
return result;
}
@ApiOperation(value="获取供水量趋势柱折图", notes="获取供水量趋势柱折图")
@GetMapping(value = "/getWaterChart")
public Result<List<EchartResult>> getWaterChart(String sourceType,String dateType,String start,String end){
Result<List<EchartResult>> result = new Result<List<EchartResult>>();
List<EchartResult> list = new ArrayList<EchartResult>();
list = olympicCenterService.getWaterChart(sourceType, dateType, start, end);
result.setResult(list);
result.setSuccess(true);
return result;
}
@ApiOperation(value="获取压力趋势图", notes="获取压力趋势图")
@GetMapping(value = "/getPressureChart")
public Result<List<EchartResult>> getPressureChart(String equipId){
Result<List<EchartResult>> result = new Result<List<EchartResult>>();
List<EchartResult> list = new ArrayList<EchartResult>();
list = olympicCenterService.getPressureChart(equipId);
result.setResult(list);
result.setSuccess(true);
return result;
}
}
package com.skua.modules.business.service;
import com.skua.modules.business.vo.EchartResult;
import java.util.List;
import java.util.Map;
/**
* 武汉奥体中心接口
*/
public interface IOlympicCenterService {
Map<String,Object> getRealTimeData();
Map<String, Object> getHistoryData(String field);
List<EchartResult> getWaterChart(String sourceType, String dateType, String start, String end);
List<EchartResult> getPressureChart(String equipId);
}
package com.skua.modules.business.service.impl;
import com.skua.core.service.IPgQueryService;
import com.skua.modules.business.service.IOlympicCenterService;
import com.skua.modules.business.vo.EchartResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 武汉奥体中心接口
*/
@Service
public class OlympicCenterServiceImpl implements IOlympicCenterService {
@Autowired
private IPgQueryService pgQueryService;
@Override
public Map<String,Object> getRealTimeData() {
Map<String,Object> map = new HashMap<>();
String jsFields = "BKYHWSC_JS_Tag2,BKYHWSC_JS_Tag3";
List<Map<String, Object>> monitorList = pgQueryService.queryFactoryMonitorFromRealTimeData("",jsFields);
if(monitorList.size()==1){
map = monitorList.get(0);
}
return map;
}
@Override
public Map<String, Object> getHistoryData(String field) {
return null;
}
@Override
public List<EchartResult> getWaterChart(String sourceType, String dateType, String start, String end) {
List<EchartResult> list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
Calendar date = Calendar.getInstance();
date.add(Calendar.DATE, i-30);
String newDate = new SimpleDateFormat("yyyy-MM-dd").format(date.getTime()).substring(5,10);
EchartResult rgsResult = new EchartResult();
rgsResult.setName(newDate);
rgsResult.setValue(formatDouble(100*getRandom(2.00,3.00)).toString());
rgsResult.setSeries("日供水量");
list.add(rgsResult);
EchartResult shResult = new EchartResult();
shResult.setName(newDate);
shResult.setValue(formatDouble(getRandom(4.00,8.00)).toString());
shResult.setSeries("生活用水");
list.add(shResult);
EchartResult xzResult = new EchartResult();
xzResult.setName(newDate);
xzResult.setValue(formatDouble(getRandom(4.00,8.00)).toString());
xzResult.setSeries("行政用水");
list.add(xzResult);
}
return list;
}
@Override
public List<EchartResult> getPressureChart(String equipId) {
List<EchartResult> list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
Calendar date = Calendar.getInstance();
date.add(Calendar.DATE, i-30);
String newDate = new SimpleDateFormat("yyyy-MM-dd").format(date.getTime()).substring(5,10);
EchartResult echartResult = new EchartResult();
echartResult.setName(newDate);
echartResult.setValue(formatDouble(getRandom(0.40,0.50)).toString());
echartResult.setSeries("压力表");
list.add(echartResult);
}
return list;
}
public static void main(String[] args) {
for (int i = 0; i < 30; i++) {
Calendar date = Calendar.getInstance();
date.add(Calendar.DATE, i-30);
String newDate = new SimpleDateFormat("yyyy-MM-dd").format(date.getTime()).substring(5,10);
System.out.println("=========="+newDate+"============");
}
}
/**
* 获取大于等于min,小于max的随机小数
* @param min
* @param max
* @return
*/
private static Double getRandom(Double min, Double max){
return Math.random() * (max - min) + min;
}
/**
* 保留两位小数
* @param two
* @return
*/
private static Double formatDouble(Double two){
String str = String.format("%.2f",two);
return Double.parseDouble(str);
}
}
package com.skua.modules.remote.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* 获取实时数据
*/
@Slf4j
@Api(tags="获取实时数据")
@RestController
@RequestMapping("/3d/monitorData")
public class MonitorDataController {
/**
* 获取实时数据
* @param json
* @return
*/
@AutoLog(value = "获取实时数据")
@ApiOperation(value="获取实时数据", notes="获取实时数据")
@GetMapping(value = "/receiveJson")
public Result<?> receiveJson(String json) {
System.out.println("==="+json);
Result<?> result = new Result<>();
JSONObject dataJson = JSON.parseObject(json);
JSONObject buildFlinkJson = new JSONObject();
List<Map> dataList = (List<Map>)dataJson.get("datas");
buildFlinkJson.put("frmt",dataJson.get("frmt"));
buildFlinkJson.put("ver", dataJson.get("ver"));
buildFlinkJson.put("cid", dataJson.get("cid"));
buildFlinkJson.put("datas", dataList);
result.setSuccess(true);
return result;
}
}
package com.skua.modules.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
public class AesUtil {
private static Logger log = LoggerFactory.getLogger(AesUtil.class);
private static final String CIPHER_ALGORITHM = "AES";
/**
* 默认编码
*/
private static final String CHARSET = "utf-8";
/**
* 通过密码/token 生产16位byte数组,password对应字节不足16位数组末尾补0,超过16位取前16位
*
* @param password
* @return
*/
private static byte[] encodeKey(String password) {
byte[] result = new byte[16];
for (int i = 0; i < 16; i++) {
result[i] = 0;
}
byte[] passByte = password.getBytes();
for (int i = 0; i < passByte.length; i++) {
if (i >= 16) {
break;
}
result[i] = passByte[i];
}
return result;
}
/**
* AES解密,对加密后的base64字符串进行解密
*
*/
public static String decrypt(String password, String data) {
if (password == null || password.trim().length() < 1) {
throw new RuntimeException("加密失败,key不能为空");
}
if (data == null) {
return null;
}
try {
SecretKeySpec key = new SecretKeySpec(encodeKey(password), CIPHER_ALGORITHM);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(new byte[16]));
return new String(cipher.doFinal(Base64.getDecoder().decode(data.getBytes(CHARSET))), CHARSET);
} catch (Exception e) {
log.error("", e);
return data;
}
}
/**
* 根据传入的字符串,返回Base64编码的MD5值
*
* @param str
* @return
*/
public static String getMD5(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes(CHARSET));
byte[] byteArray = messageDigest.digest();
return Base64.getEncoder().encodeToString(byteArray);
} catch (NoSuchAlgorithmException e) {
log.error("", e);
} catch (UnsupportedEncodingException e) {
log.error("", e);
} return "";
}
}
\ No newline at end of file
package com.skua.modules.weather.controller;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.modules.weather.entity.ResultWeather;
import com.skua.modules.weather.service.IWeatherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Api(tags = "获取实时天气")
@RestController
@RequestMapping("/v1/weather")
public class WeatherController {
@Autowired
private IWeatherService weatherService;
@AutoLog(value = "获取实时天气")
@ApiOperation(value="获取实时天气", notes="获取实时天气")
@GetMapping(value = "/getWeather")
public Result<Map<String,Object>> getWeather(String location) {
Result<Map<String, Object>> result = new Result<>();
Map<String, Object> map = new HashMap<>();
ResultWeather resultWeather = new ResultWeather();
resultWeather = weatherService.getNowWeatherData(location);
map.put("weatherData", "气温:"+resultWeather.getTemp()+"℃;" +
"风向/风力:"+resultWeather.getWindDir()+" "+resultWeather.getWindScale()+";" +
"湿度:"+resultWeather.getHumidity()+";" +
"空气质量:"+resultWeather.getCategory()+";" +
"天气:"+resultWeather.getText());
result.setSuccess(true);
result.setResult(map);
return result;
}
@AutoLog(value = "获取实时天气")
@ApiOperation(value="获取实时天气", notes="获取实时天气")
@GetMapping(value = "/getNowWeather")
public Result<Map<String,Object>> getNowWeather(String location) {
Result<Map<String, Object>> result = new Result<>();
Map<String, Object> map = new HashMap<>();
ResultWeather resultWeather = new ResultWeather();
resultWeather = weatherService.getNowWeatherData(location);
map.put("weatherData",resultWeather);
result.setSuccess(true);
result.setResult(map);
return result;
}
}
package com.skua.modules.weather.entity;
import lombok.Data;
import java.util.Date;
/**
* 实况空气质量
*/
@Data
public class AirNow {
/**实况观测时间*/
private Date pubTime;
/**实时空气质量指数*/
private String aqi;
/**实时空气质量指数等级*/
private String level;
/**实时空气质量指数级别 */
private String category;
/**实时空气质量的主要污染物*/
private String primary;
/**实时 pm10*/
private String pm10;
/**实时 pm2.5*/
private String pm2p5;
/** 实时 二氧化氮*/
private String no2;
/** 实时 二氧化硫*/
private String so2;
/** 实时 一氧化碳*/
private String co;
/**实时 臭氧*/
private String o3;
}
package com.skua.modules.weather.entity;
import lombok.Data;
import java.util.Date;
/**
* 实况天气及空气质量
*/
@Data
public class ResultWeather {
/**实况观测时间*/
private Date obsTime;
/**实况温度,默认单位:摄氏度*/
private String temp;
/**天气图标*/
private String icon;
/**实况天气状况的文字描述*/
private String text;
/**实况风向*/
private String windDir;
/**实况风力等级*/
private String windScale;
/**实况相对湿度,百分比数值*/
private String humidity;
/**实时空气质量指数级别 */
private String category;
}
package com.skua.modules.weather.entity;
import lombok.Data;
import java.util.Date;
/**
* 实况天气
*/
@Data
public class WeatherNow {
/**实况观测时间*/
private Date obsTime;
/**实况温度,默认单位:摄氏度*/
private String temp;
/**实况体感温度,默认单位:摄氏度*/
private String feelsLike;
/**当前天气状况和图标的代码,图标可通过天气状况和图标下载 */
private String icon;
/**实况天气状况的文字描述,包括阴晴雨雪等天气状态的描述*/
private String text;
/**实况风向360角度*/
private String wind360;
/**实况风向*/
private String windDir;
/**实况风力等级*/
private String windScale;
/**实况风速,公里/小时*/
private String windSpeed;
/**实况相对湿度,百分比数值*/
private String humidity;
/**实况降水量,默认单位:毫米*/
private String precip;
/**降水级别*/
private String waterLevel;
/**实况大气压强,默认单位:百帕*/
private String pressure;
/**实况能见度,默认单位:公里*/
private String vis;
/**实况云量,百分比数值*/
private String cloud;
/**实况露点温度*/
private String dew;
}
package com.skua.modules.weather.service;
import com.skua.modules.weather.entity.ResultWeather;
/**
* 实时天气
*/
public interface IWeatherService {
ResultWeather getNowWeatherData(String location);
}
package com.skua.modules.weather.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.skua.modules.weather.entity.AirNow;
import com.skua.modules.weather.entity.ResultWeather;
import com.skua.modules.weather.entity.WeatherNow;
import com.skua.modules.weather.service.IWeatherService;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 实时天气
*/
@Service
public class WeatherServiceImpl implements IWeatherService {
private static String WeatherUrl = "https://devapi.qweather.com/v7/weather/now?";
private static String AirUrl = "https://devapi.qweather.com/v7/air/now?";
private static String KEY = "b480cc7cdc974e76bceb9b0bd06b64f1";
private static String ICON = "https://a.hecdn.net/img/common/icon/202101/";
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmXXX");
@Override
public ResultWeather getNowWeatherData(String location) {
ResultWeather resultWeather = new ResultWeather();
String weatherResult = getDataByUrl(WeatherUrl,location);
String resultAir = getDataByUrl(AirUrl,location);
try{
if (weatherResult != null) {
JSONObject jsonObject = JSONObject.parseObject(weatherResult);
JSONObject jsonWeater = JSONObject.parseObject(jsonObject.get("now").toString());
String obsTime = jsonWeater.get("obsTime").toString();
Date obsTimeDate = simpleDateFormat.parse(obsTime);
jsonWeater.put("obsTime", obsTimeDate);
WeatherNow weatherNow = JSONObject.toJavaObject(jsonWeater, WeatherNow.class);
resultWeather.setHumidity(weatherNow.getHumidity()+"%");//湿度
resultWeather.setWindDir(weatherNow.getWindDir());//风向
resultWeather.setWindScale(weatherNow.getWindScale()+"级");//风力
resultWeather.setTemp(weatherNow.getTemp());//温度
resultWeather.setText(weatherNow.getText());//天气
resultWeather.setIcon(ICON + weatherNow.getIcon()+".png");
resultWeather.setObsTime(weatherNow.getObsTime());
}
if (resultAir != null) {
JSONObject jsonObject = JSONObject.parseObject(resultAir);
JSONObject jsonAir = JSONObject.parseObject(jsonObject.get("now").toString());
String pubTime = jsonAir.get("pubTime").toString();
Date pubTimeDate = simpleDateFormat.parse(pubTime);
jsonAir.put("pubTime", pubTimeDate);
AirNow airNow = JSONObject.toJavaObject(jsonAir, AirNow.class);
resultWeather.setCategory(airNow.getCategory());
}
}catch(Exception e){
e.printStackTrace();
}
return resultWeather;
}
private static String getDataByUrl(String url,String location) {
String result = null;
StringBuffer params = new StringBuffer();
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
// 字符数据最好encoding以下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)
params.append("location=" + URLEncoder.encode(location, "utf-8"));
params.append("&");
params.append("key=" + KEY);
// 创建Get请求
HttpGet httpGet = new HttpGet(url + params);
// 响应模型
CloseableHttpResponse response = null;
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(5000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(5000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
// 将上面的配置信息 运用到这个Get请求里
httpGet.setConfig(requestConfig);
// 由客户端执行(发送)Get请求
response = httpClient.execute(httpGet);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
......@@ -90,6 +90,8 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/sys/sysGeneralProcess/**", "anon");
filterChainDefinitionMap.put("/sys/sysExcelParse/**", "anon");
filterChainDefinitionMap.put("/v1/customAnalysis/**", "anon");
//天气接口
filterChainDefinitionMap.put("/v1/weather/**", "anon");
filterChainDefinitionMap.put("/v1/product/waterQualityMonitoring/testPush", "anon");
filterChainDefinitionMap.put("/v1/secretary/smallSecretarySenderConf/sendMsgTest", "anon");
......
server:
port: 8803
servlet:
context-path: /fmboot
compression:
enabled: true
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
management:
endpoints:
web:
exposure:
include: metrics,httptrace
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
mail:
host: smtp.163.com
username: zhanglei891008@163.com
password: ??
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
## quartz定时任务,采用数据库方式
quartz:
job-store-type: jdbc
#json 时间戳统一转换
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
aop:
proxy-target-class: true
#配置freemarker
freemarker:
# 设置模板后缀名
suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
prefer-file-system-access: false
# 设置ftl文件路径
template-loader-path:
- classpath:/templates
# 设置静态文件路径,js,css等
mvc:
static-path-pattern: /**
resource:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: admin
loginPassword: 123456
web-stat-filter:
enabled: true
dynamic:
druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
url: jdbc:mysql://192.168.21.6:13306/zhsw_modules?characterEncoding=UTF-8&useUnicode=true&useSSL=false
username: root
password: jkauto@123wh
driver-class-name: com.mysql.jdbc.Driver
# 多数据源配置
pg-db:
url: jdbc:mysql://192.168.21.6:13306/zhsw_modules?characterEncoding=UTF-8&useUnicode=true&useSSL=false
username: root
password: jkauto@123wh
driver-class-name: org.postgresql.Driver
#redis 配置
redis:
database: 0
host: 127.0.0.1
lettuce:
pool:
max-active: 8 #最大连接数据库连接数,设 0 为没有限制
max-idle: 8 #最大等待连接中的数量,设 0 为没有限制
max-wait: -1ms #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
min-idle: 0 #最小等待连接中的数量,设 0 为没有限制
shutdown-timeout: 100ms
password: ''
port: 6379
#mybatis plus 设置
mybatis-plus:
#mapper-locations: classpath*:com/skua/modules/**/xml/*Mapper.xml
mapper-locations: classpath*:com/skua/**/xml/*Mapper.xml
global-config:
db-config:
#主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",
#3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",
#5:"字符串全局唯一ID (idWorker 的字符串表示)";
id-type: 4
# 默认数据库表下划线命名
table-underline: true
configuration:
call-setters-on-nulls: true
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#数矿专用配置
skua :
path :
#文件上传根目录 设置
upload: /mnt/app/uploadfile
#webapp文件路径
webapp: /mnt/app/uploadfile
# 断点续传路径
chunk: /app/skboot/zujianhua/voice
#短信秘钥
sms:
#应用地址
accessKeyUrl: http://smssh1.253.com/msg/send/json
#账户
accessKeyId: N8464035
#密码
accessKeySecret: H9eu8oABz
factoryId: d60401ac4a9943b1943c6b8edbe4df27
iosUpdateUrl: https://itunes.apple.com/cn/lookup?id=1486744187
viewPath: http://189.200.0.109:8081/fmboot/sys/common/view/
#展示运行报表id
reportShowParentId: 6958c2d7f6d391a86b2c58059dbcddc3
#数据采集服务频率,单位秒,注意如果调整了数据采集频率,请记得同步修改此配置
collectionFrequency: 10
#视频对接相关配置
video:
ip: 120.25.102.53
port: 8667
username: admin
password: xrjkauto@123
#海康威视需要填写密钥
appkey: 22650577
secretkey: yKovn09uAsl2NTfebzqA
streamMediaIp: 120.25.102.53
#消息推送
push:
#是否开启流程消息推送
process-enable: false
#极光推送
jg:
masterSecret: bb892f7772238f3279e1ae6a
appKey: cb69e9fb44ed811b487ec3b5
#洪城内网推送地址
deviceHostName: http://189.200.0.223/device
pushHostName: http://189.200.0.223/api
mob:
appSecret: 1dc50510bb62e65add34dab122f4536f
appKey: 347052887a080
pushHostName: http://api.push.mob.com/v3/push/createPush
iosProduction: 1
packageName: com.kingtrol.flutter_xingrong
#后面更换推送服务向下扩展添加
#cas单点登录
cas:
prefixUrl: http://cas.example.org:8443/cas
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!