Compare commits
18 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
c8e8d251c1 | |
|
|
da7956346a | |
|
|
d991611ae0 | |
|
|
608f493ce3 | |
|
|
6451dbfe49 | |
|
|
4e8389b720 | |
|
|
70a6bd95cb | |
|
|
c769634bcb | |
|
|
4fa04b3488 | |
|
|
d1247e1329 | |
|
|
05cb45b717 | |
|
|
1681f96ac6 | |
|
|
76df7d312a | |
|
|
73700e768a | |
|
|
7c7c2c4d35 | |
|
|
a871b8dfea | |
|
|
7a7a086bd3 | |
|
|
f9e85f4881 |
|
|
@ -1,7 +1,7 @@
|
|||
# DevOps 自动化部署配置文件
|
||||
|
||||
# 全局分支配置(所有仓库统一使用此分支)
|
||||
global_branch: main
|
||||
global_branch: test
|
||||
|
||||
# 主仓库配置
|
||||
main_repository:
|
||||
|
|
@ -27,8 +27,8 @@ logging:
|
|||
# 钉钉通知配置
|
||||
dingtalk:
|
||||
enabled: true # 是否启用钉钉通知
|
||||
access_token: fccb17a6c74ca862d7994630562d9d3d5be7b60d012d53dce32c64c566b9a3de
|
||||
secret: SEC54a73636473f324b8f77741ee41ee278d22eba4af898bba739c11183d851c8b0
|
||||
access_token: 6add370f6b31b98e71ad5e1862cf574ab3f2350fb7d5eb07675a23d25a6f8144
|
||||
secret: SEC89990cf37671b10c3ddce9446eb10c7022179f638cad3c403ad2944a6ce51e56
|
||||
|
||||
# 数据库配置(用于数据库管理页面)
|
||||
database:
|
||||
|
|
|
|||
|
|
@ -40,8 +40,16 @@ def run_npm(work_dir, npm_commands, source_dir, target_dir):
|
|||
Logger.error(error_msg)
|
||||
return False, error_msg
|
||||
|
||||
# 加载 nvm 环境(如果存在)
|
||||
nvm_env_loader = ""
|
||||
nvm_dir = Path.home() / ".nvm"
|
||||
if nvm_dir.exists():
|
||||
nvm_env_loader = "export NVM_DIR=\"$HOME/.nvm\" && [ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" && "
|
||||
Logger.info("检测到 nvm 环境,将使用 nvm 中的 Node.js 版本")
|
||||
|
||||
# 执行 NPM 命令
|
||||
if not Logger.run_command(npm_commands, work_dir):
|
||||
full_command = nvm_env_loader + npm_commands
|
||||
if not Logger.run_command(full_command, work_dir):
|
||||
error_msg = "NPM/PNPM 编译失败,请查看日志获取详细错误信息"
|
||||
Logger.error(error_msg)
|
||||
return False, error_msg
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -1,8 +1,8 @@
|
|||
<p align="center">
|
||||
<p align="center">
|
||||
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-b99b286755aef70355a7084753f89cdb7c9.png">
|
||||
</p>
|
||||
</p>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.6.7</h1>
|
||||
<h4 align="center">基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构</h4>
|
||||
<h4 align="center">基于Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构</h4>
|
||||
<p align="center">
|
||||
<a href="https://gitee.com/y_project/RuoYi-Cloud/stargazers"><img src="https://gitee.com/y_project/RuoYi-Cloud/badge/star.svg?theme=dark"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi-Cloud"><img src="https://img.shields.io/badge/RuoYi-v3.6.7-brightgreen.svg"></a>
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
## 平台简介
|
||||
|
||||
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
|
||||
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
|
||||
|
||||
* 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。
|
||||
* 后端采用Spring Boot、Spring Cloud & Alibaba。
|
||||
|
|
@ -126,4 +126,4 @@ com.ruoyi
|
|||
|
||||
## 若依微服务交流群
|
||||
|
||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [](https://jq.qq.com/?_wv=1027&k=FqImHgH2) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G4jZ4EtdT50PhnMBudTnEwgonxkXOscJ&authKey=FkGHYfoTKlGE6wHdKdjH9bVoOgQjtLP9WM%2Fj7pqGY1msoqw9uxDiBo39E2mLgzYg&noverify=0&group_code=128355254) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=irnwcXhbLOQEv1g-TwGifjNTA_f4wZiA&authKey=4bpzEwhcUY%2FvsPDHvzYn6xfoS%2FtOArvZ%2BGXzfr7O0%2FEqLfkKA%2BuCDXlzHIFg8t93&noverify=0&group_code=179219821) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lx1uEdEDuxeM7rUvF3qmlFdqKqdJ5Z-R&authKey=rgyPW9yhhh4IIURKVFa6NgP3qiqH04WAzrJ0trsgkr3pjzm6sKIOGyA58oOjoj%2FJ&noverify=0&group_code=158753145) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Kuaw0Xdlw2Nlgn6s8h9elzuquHGxGObD&authKey=cSrQcWQ%2BzQZAFFrwxaR%2BbzcumX4WRduZnd1O6JO1dlclQMiu%2BKwxAy8t2JfNp67V&noverify=0&group_code=112869560) 点击按钮入群。
|
||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [](https://jq.qq.com/?_wv=1027&k=FqImHgH2) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G4jZ4EtdT50PhnMBudTnEwgonxkXOscJ&authKey=FkGHYfoTKlGE6wHdKdjH9bVoOgQjtLP9WM%2Fj7pqGY1msoqw9uxDiBo39E2mLgzYg&noverify=0&group_code=128355254) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=irnwcXhbLOQEv1g-TwGifjNTA_f4wZiA&authKey=4bpzEwhcUY%2FvsPDHvzYn6xfoS%2FtOArvZ%2BGXzfr7O0%2FEqLfkKA%2BuCDXlzHIFg8t93&noverify=0&group_code=179219821) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lx1uEdEDuxeM7rUvF3qmlFdqKqdJ5Z-R&authKey=rgyPW9yhhh4IIURKVFa6NgP3qiqH04WAzrJ0trsgkr3pjzm6sKIOGyA58oOjoj%2FJ&noverify=0&group_code=158753145) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Kuaw0Xdlw2Nlgn6s8h9elzuquHGxGObD&authKey=cSrQcWQ%2BzQZAFFrwxaR%2BbzcumX4WRduZnd1O6JO1dlclQMiu%2BKwxAy8t2JfNp67V&noverify=0&group_code=112869560) 点击按钮入群。
|
||||
|
|
|
|||
2
a_th_web
2
a_th_web
|
|
@ -1 +1 @@
|
|||
Subproject commit 0a0b9741cca600b27b6ab15905f02ae3d71e29e2
|
||||
Subproject commit b784fb913813c45deb739ed4120cce0e87adc12f
|
||||
|
|
@ -352,24 +352,24 @@ services:
|
|||
- ZLM_SERCERT=fgVdaI75GcSBPeSBvg8NL7aRrlkCtGPv
|
||||
# ========== 流媒体地址配置 ==========
|
||||
# Stream_IP: 生成播放地址时使用的IP(宿主机外网IP或域名)
|
||||
# 用途:WVP生成的播放地址格式为 http://45.120.103.238:9090/live/123.live.flv
|
||||
# 用途:WVP生成的播放地址格式为 http://220.154.147.16:9090/live/123.live.flv
|
||||
# 对应application.yml中的media.stream-ip配置
|
||||
- Stream_IP=45.120.103.238
|
||||
- Stream_IP=220.154.147.16
|
||||
# SDP_IP: WVP在国标信令中使用的IP
|
||||
# 用途:GB28181设备通过此IP与WVP进行媒体流传输
|
||||
# 对应application.yml中的media.sdp-ip配置
|
||||
- SDP_IP=45.120.103.238
|
||||
- SDP_IP=220.154.147.16
|
||||
# ========== 流媒体端口配置(宿主机外部端口) ==========
|
||||
# 以下端口用于生成客户端播放地址,必须与zlmediakit容器的端口映射一致
|
||||
#
|
||||
# MediaHttp: HTTP播放端口(对应zlmediakit的9090:80映射)
|
||||
# 用途:生成HTTP-FLV/HLS/TS/RTC播放地址
|
||||
# 示例:http://45.120.103.238:9090/live/123.live.flv
|
||||
# 示例:http://220.154.147.16:9090/live/123.live.flv
|
||||
# 对应application.yml中的media.flv-port和media.ws-flv-port配置
|
||||
- MediaHttp=9090
|
||||
# MediaHttps: HTTPS播放端口(对应zlmediakit的8443:443映射)
|
||||
# 用途:生成HTTPS-FLV/HLS/TS播放地址
|
||||
# 示例:https://45.120.103.238:8443/live/123.live.flv
|
||||
# 示例:https://220.154.147.16:8443/live/123.live.flv
|
||||
# 对应application.yml中的media.flv-ssl-port和media.ws-flv-ssl-port配置
|
||||
- MediaHttps=8443
|
||||
# MediaRtp: RTP代理端口(对应zlmediakit的10000:10000映射)
|
||||
|
|
@ -379,13 +379,13 @@ services:
|
|||
- MediaRtp=10000
|
||||
# MediaRtmp: RTMP推流端口(对应zlmediakit的1935:1935映射)
|
||||
# 用途:OBS等推流工具推流地址
|
||||
# 示例:rtmp://45.120.103.238:1935/live/123
|
||||
# 示例:rtmp://220.154.147.16:1935/live/123
|
||||
# 对应application.yml中的media.rtmp-port配置
|
||||
# 对应zlmediakit config.ini中的rtmp.port=1935
|
||||
- MediaRtmp=1935
|
||||
# MediaRtsp: RTSP推流/拉流端口(对应zlmediakit的8554:554映射)
|
||||
# 用途:RTSP协议的推流和拉流
|
||||
# 示例:rtsp://45.120.103.238:8554/live/123
|
||||
# 示例:rtsp://220.154.147.16:8554/live/123
|
||||
# 对应application.yml中的media.rtsp-port配置
|
||||
# 对应zlmediakit config.ini中的rtsp.port=554
|
||||
- MediaRtsp=8554
|
||||
|
|
@ -445,20 +445,20 @@ services:
|
|||
- TZ=Asia/Shanghai
|
||||
ports:
|
||||
# RTMP推流端口(容器内部1935映射到宿主机1935)
|
||||
# OBS推流地址:rtmp://45.120.103.238:1935/live/streamId
|
||||
# OBS推流地址:rtmp://220.154.147.16:1935/live/streamId
|
||||
# 对应config.ini中的rtmp.port=1935
|
||||
- "1935:1935"
|
||||
# HTTP端口(容器内部80映射到宿主机9090)
|
||||
# 用途1:WVP通过http://zlmediakit:80访问ZLM API
|
||||
# 用途2:客户端通过http://45.120.103.238:9090播放HTTP-FLV/HLS/TS
|
||||
# 用途2:客户端通过http://220.154.147.16:9090播放HTTP-FLV/HLS/TS
|
||||
# 对应config.ini中的http.port=80
|
||||
- "9090:80"
|
||||
# HTTPS端口(容器内部443映射到宿主机8443)
|
||||
# 客户端通过https://45.120.103.238:8443播放
|
||||
# 客户端通过https://220.154.147.16:8443播放
|
||||
# 对应config.ini中的http.sslport=443
|
||||
- "8443:443"
|
||||
# RTSP端口(容器内部554映射到宿主机8554)
|
||||
# RTSP地址:rtsp://45.120.103.238:8554/live/streamId
|
||||
# RTSP地址:rtsp://220.154.147.16:8554/live/streamId
|
||||
# 对应config.ini中的rtsp.port=554
|
||||
- "8554:554"
|
||||
# RTP代理端口TCP(容器内部10000映射到宿主机10000)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 6f0ac0c588c9a1711ddbe833c638206eed4bb3c4
|
||||
Subproject commit 6bc63276471203e63a2e98d23f9396e9b6f98163
|
||||
|
|
@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
|
|||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 标注 VO
|
||||
*
|
||||
|
|
@ -50,9 +52,9 @@ public class AirlineMarkerVO extends BaseEntity {
|
|||
private Integer fontSize;
|
||||
|
||||
/**
|
||||
* 坐标JSON
|
||||
* 经纬度,格式:[经,纬,asl高度]
|
||||
*/
|
||||
private Object coordinates;
|
||||
private List<PointInfo> coordinates;
|
||||
|
||||
/**
|
||||
* 简介
|
||||
|
|
@ -64,6 +66,24 @@ public class AirlineMarkerVO extends BaseEntity {
|
|||
*/
|
||||
private Long groupId;
|
||||
|
||||
@Data
|
||||
public static class PointInfo {
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private Double latitude;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private Double longitude;
|
||||
|
||||
/**
|
||||
* 海拔高度
|
||||
*/
|
||||
private Double asl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.ruoyi.task.api;
|
|||
import com.ruoyi.common.core.constant.SecurityConstants;
|
||||
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.task.api.domain.TaskResultVO;
|
||||
import com.ruoyi.task.api.domain.TaskVO;
|
||||
import com.ruoyi.task.api.domain.TaskTempVO;
|
||||
import com.ruoyi.task.api.enums.StatusEnum;
|
||||
|
|
@ -122,10 +121,8 @@ public interface RemoteTaskService
|
|||
* @param source 请求来源
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/task/status/{taskId}")
|
||||
R<Boolean> updateTaskStatus(@PathVariable("taskId") Long taskId,
|
||||
@RequestBody() TaskResultVO status,
|
||||
@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
@PutMapping("/task/status/{taskId}")
|
||||
R<Boolean> updateTaskStatus(@PathVariable("taskId") Long taskId, @RequestParam("status") StatusEnum status, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
|
||||
/**
|
||||
* 设置 recovery 为 true
|
||||
|
|
@ -136,13 +133,4 @@ public interface RemoteTaskService
|
|||
*/
|
||||
@PutMapping("/task/recovery/{taskId}")
|
||||
R<Boolean> updateTaskRecovery(@PathVariable("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
|
||||
/**
|
||||
* 查询待自动执行的任务
|
||||
*
|
||||
* @param source 请求来源
|
||||
* @return 结果
|
||||
*/
|
||||
@GetMapping("/task/pending-auto")
|
||||
R<List<TaskVO>> getPendingTasksForAutoExecute(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
package com.ruoyi.task.api.domain;
|
||||
|
||||
import com.ruoyi.task.api.enums.StatusEnum;
|
||||
|
||||
public class TaskResultVO {
|
||||
|
||||
/** 状态 */
|
||||
private StatusEnum status;
|
||||
|
||||
public String getErrMsg() {
|
||||
return errMsg;
|
||||
}
|
||||
|
||||
public void setErrMsg(String errMsg) {
|
||||
this.errMsg = errMsg;
|
||||
}
|
||||
|
||||
public StatusEnum getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(StatusEnum status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误原因
|
||||
*/
|
||||
private String errMsg;
|
||||
|
||||
public static TaskResultVO Checking(){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.CHECKING;
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static TaskResultVO Checking(String errMsg){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.CHECKING;
|
||||
vo.setErrMsg(errMsg);
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static TaskResultVO Completed(){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.COMPLETED;
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static TaskResultVO Completed(String errMsg){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.COMPLETED;
|
||||
vo.setErrMsg(errMsg);
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static TaskResultVO Error(String errMsg){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.FAILED;
|
||||
vo.errMsg = errMsg;
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static TaskResultVO Running(){
|
||||
TaskResultVO vo = new TaskResultVO();
|
||||
vo.status = StatusEnum.RUNNING;
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@ package com.ruoyi.task.api.factory;
|
|||
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.task.api.RemoteTaskService;
|
||||
import com.ruoyi.task.api.domain.TaskResultVO;
|
||||
import com.ruoyi.task.api.domain.TaskVO;
|
||||
import com.ruoyi.task.api.domain.TaskTempVO;
|
||||
import com.ruoyi.task.api.enums.StatusEnum;
|
||||
|
|
@ -80,7 +79,7 @@ public class RemoteTaskFallbackFactory implements FallbackFactory<RemoteTaskServ
|
|||
|
||||
|
||||
@Override
|
||||
public R<Boolean> updateTaskStatus(Long taskId, TaskResultVO resultVO, String source) {
|
||||
public R<Boolean> updateTaskStatus(Long taskId, StatusEnum status, String source) {
|
||||
return R.fail("修改执行状态失败");
|
||||
}
|
||||
|
||||
|
|
@ -88,11 +87,6 @@ public class RemoteTaskFallbackFactory implements FallbackFactory<RemoteTaskServ
|
|||
public R<Boolean> updateTaskRecovery(Long taskId, String source) {
|
||||
return R.fail("设置recovery失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<List<TaskVO>> getPendingTasksForAutoExecute(String source) {
|
||||
return R.ok(Collections.emptyList());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit acbb57fd9dad3f5dc9ad714a45f0d383da1a566e
|
||||
Subproject commit 53ea05322f47abfc8be630cc3b6808f1df972c2a
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit f2f849c6e650631f801194ad77430b2bbe50f086
|
||||
Subproject commit 19b7aea90201b67c52c8341a18375199fa352055
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit ab6318aa9cf5b32291041d3e791689d48dde60d5
|
||||
Subproject commit f08f3aca997ead29138077fffb0b77c6d712b219
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 0bfe9843a51f57f2ca2f6ef38f0dc9e546dc8c05
|
||||
Subproject commit 789dcadeeb2b2267f14529cf3e27ce4ecfdbfdb0
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
|
||||
<div>
|
||||
<label for="wsUrl">WebSocket 地址:</label>
|
||||
<input type="text" id="wsUrl" value="ws://45.120.103.238:9988/prod-api/websocket/statistics">
|
||||
<input type="text" id="wsUrl" value="ws://220.154.147.16:9988/prod-api/websocket/statistics">
|
||||
</div>
|
||||
|
||||
<div id="status" class="status disconnected">状态: 未连接</div>
|
||||
|
|
|
|||
2
wvpjar
2
wvpjar
|
|
@ -1 +1 @@
|
|||
Subproject commit a014943fc0945bc86f4275481adf47525a704756
|
||||
Subproject commit e003785e26d7adcefc2588d1e97db78c701691d0
|
||||
Loading…
Reference in New Issue