Compare commits

..

18 Commits
main ... test

Author SHA1 Message Date
孙小云 c8e8d251c1 xx 2026-03-23 10:18:00 +08:00
孙小云 da7956346a xx 2026-03-23 09:44:46 +08:00
孙小云 d991611ae0 xx 2026-03-23 09:15:31 +08:00
孙小云 608f493ce3 xx 2026-03-23 09:14:43 +08:00
孙小云 6451dbfe49 readme.md 2026-03-23 09:12:49 +08:00
孙小云 4e8389b720 xx 2026-03-23 09:10:56 +08:00
孙小云 70a6bd95cb xx 2026-03-23 09:09:40 +08:00
孙小云 c769634bcb xx 2026-03-23 08:52:46 +08:00
孙小云 4fa04b3488 xx 2026-03-23 08:52:15 +08:00
孙小云 d1247e1329 xx 2026-03-23 08:51:37 +08:00
孙小云 05cb45b717 xx 2026-03-23 08:50:48 +08:00
孙小云 1681f96ac6 xx 2026-03-23 08:49:34 +08:00
孙小云 76df7d312a xx 2026-03-23 08:48:57 +08:00
孙小云 73700e768a 同步 2026-03-23 08:48:29 +08:00
孙小云 7c7c2c4d35 同步 2026-03-23 08:47:05 +08:00
孙小云 a871b8dfea 修改地址 2026-03-23 08:46:15 +08:00
孙小云 7a7a086bd3 xx 2026-03-21 11:47:06 +08:00
孙小云 f9e85f4881 xx 2026-03-21 11:41:09 +08:00
16 changed files with 61 additions and 121 deletions

View File

@ -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:

View File

@ -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

View File

@ -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群 [![加入QQ群](https://img.shields.io/badge/已满-42799195-blue.svg)](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [![加入QQ群](https://img.shields.io/badge/已满-170157040-blue.svg)](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [![加入QQ群](https://img.shields.io/badge/已满-130643120-blue.svg)](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [![加入QQ群](https://img.shields.io/badge/已满-225920371-blue.svg)](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [![加入QQ群](https://img.shields.io/badge/已满-201705537-blue.svg)](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [![加入QQ群](https://img.shields.io/badge/已满-236543183-blue.svg)](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [![加入QQ群](https://img.shields.io/badge/已满-213618602-blue.svg)](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [![加入QQ群](https://img.shields.io/badge/已满-148794840-blue.svg)](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [![加入QQ群](https://img.shields.io/badge/已满-118752664-blue.svg)](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [![加入QQ群](https://img.shields.io/badge/已满-101038945-blue.svg)](https://jq.qq.com/?_wv=1027&k=FqImHgH2) [![加入QQ群](https://img.shields.io/badge/已满-128355254-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G4jZ4EtdT50PhnMBudTnEwgonxkXOscJ&authKey=FkGHYfoTKlGE6wHdKdjH9bVoOgQjtLP9WM%2Fj7pqGY1msoqw9uxDiBo39E2mLgzYg&noverify=0&group_code=128355254) [![加入QQ群](https://img.shields.io/badge/已满-179219821-blue.svg)](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) [![加入QQ群](https://img.shields.io/badge/已满-158753145-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lx1uEdEDuxeM7rUvF3qmlFdqKqdJ5Z-R&authKey=rgyPW9yhhh4IIURKVFa6NgP3qiqH04WAzrJ0trsgkr3pjzm6sKIOGyA58oOjoj%2FJ&noverify=0&group_code=158753145) [![加入QQ群](https://img.shields.io/badge/112869560-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Kuaw0Xdlw2Nlgn6s8h9elzuquHGxGObD&authKey=cSrQcWQ%2BzQZAFFrwxaR%2BbzcumX4WRduZnd1O6JO1dlclQMiu%2BKwxAy8t2JfNp67V&noverify=0&group_code=112869560) 点击按钮入群。
QQ群 [![加入QQ群](https://img.shields.io/badge/已满-42799195-blue.svg)](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [![加入QQ群](https://img.shields.io/badge/已满-170157040-blue.svg)](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [![加入QQ群](https://img.shields.io/badge/已满-130643120-blue.svg)](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [![加入QQ群](https://img.shields.io/badge/已满-225920371-blue.svg)](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [![加入QQ群](https://img.shields.io/badge/已满-201705537-blue.svg)](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [![加入QQ群](https://img.shields.io/badge/已满-236543183-blue.svg)](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [![加入QQ群](https://img.shields.io/badge/已满-213618602-blue.svg)](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [![加入QQ群](https://img.shields.io/badge/已满-148794840-blue.svg)](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [![加入QQ群](https://img.shields.io/badge/已满-118752664-blue.svg)](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [![加入QQ群](https://img.shields.io/badge/已满-101038945-blue.svg)](https://jq.qq.com/?_wv=1027&k=FqImHgH2) [![加入QQ群](https://img.shields.io/badge/已满-128355254-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G4jZ4EtdT50PhnMBudTnEwgonxkXOscJ&authKey=FkGHYfoTKlGE6wHdKdjH9bVoOgQjtLP9WM%2Fj7pqGY1msoqw9uxDiBo39E2mLgzYg&noverify=0&group_code=128355254) [![加入QQ群](https://img.shields.io/badge/已满-179219821-blue.svg)](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) [![加入QQ群](https://img.shields.io/badge/已满-158753145-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lx1uEdEDuxeM7rUvF3qmlFdqKqdJ5Z-R&authKey=rgyPW9yhhh4IIURKVFa6NgP3qiqH04WAzrJ0trsgkr3pjzm6sKIOGyA58oOjoj%2FJ&noverify=0&group_code=158753145) [![加入QQ群](https://img.shields.io/badge/112869560-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Kuaw0Xdlw2Nlgn6s8h9elzuquHGxGObD&authKey=cSrQcWQ%2BzQZAFFrwxaR%2BbzcumX4WRduZnd1O6JO1dlclQMiu%2BKwxAy8t2JfNp67V&noverify=0&group_code=112869560) 点击按钮入群。

@ -1 +1 @@
Subproject commit 0a0b9741cca600b27b6ab15905f02ae3d71e29e2
Subproject commit b784fb913813c45deb739ed4120cce0e87adc12f

View File

@ -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
# 用途1WVP通过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

View File

@ -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)

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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

View File

@ -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

@ -1 +1 @@
Subproject commit a014943fc0945bc86f4275481adf47525a704756
Subproject commit e003785e26d7adcefc2588d1e97db78c701691d0