28 Commits

Author SHA1 Message Date
5d4600c6ce Merge remote-tracking branch 'origin/dev' into prod 2026-04-27 13:22:24 +08:00
7fcbb81317 snailjob配置 2026-04-27 13:17:02 +08:00
05cb75e652 修复bug3 2026-04-01 17:52:11 +08:00
5813425be9 修复bug2 2026-04-01 17:42:14 +08:00
539caa4b5f 修复bug 2026-03-27 10:34:38 +08:00
cde34cab6c Merge branch '6170' into prod 2025-12-26 16:22:57 +08:00
7d256df790 Merge branch 'dyf-device' into prod 2025-12-19 16:22:55 +08:00
3d1c2f4e56 Merge branch 'dyf-device' into prod 2025-12-19 14:08:03 +08:00
ccadcb8d4e Merge branch '6170' into prod 2025-12-12 14:59:50 +08:00
b8cb663bbf Merge branch 'jingquan' into prod 2025-12-03 16:56:49 +08:00
56e86b070d Merge branch 'dyf-device' into prod 2025-12-01 13:33:59 +08:00
0898855108 Merge branch '6170' into prod 2025-11-28 10:18:54 +08:00
92b65ce6df Merge branch 'dyf-device' into prod 2025-11-27 11:01:58 +08:00
82399cffed Merge branch 'dyf-device' into prod 2025-08-25 14:33:52 +08:00
5538ac96e5 晶全日志配置 2025-08-06 09:48:00 +08:00
b703f80355 晶全日志配置 2025-08-06 09:44:52 +08:00
b3b249ea07 日志配置 2025-08-06 09:20:41 +08:00
aff424e73b Merge branch 'main' into prod 2025-08-06 09:18:43 +08:00
dc513a858a Merge branch 'main' into prod 2025-08-04 09:08:34 +08:00
df5ce7ddd9 Merge branch 'main' into prod 2025-07-31 09:21:10 +08:00
2174dfdb4d Merge branch 'main' into prod 2025-07-23 19:24:27 +08:00
2800b89e06 Merge branch 'main' into prod 2025-07-23 10:55:30 +08:00
637e46c510 Merge branch 'main' into prod 2025-07-21 08:40:34 +08:00
31c2158c8e Merge branch 'main' into prod 2025-07-19 10:22:33 +08:00
c7c21dc358 Merge branch 'main' into prod 2025-07-18 15:17:54 +08:00
a7e0803b00 Merge branch 'main' into prod 2025-07-17 16:42:14 +08:00
55cacbd322 Merge branch 'main' into prod 2025-07-17 09:24:45 +08:00
99ec6eaff0 prod 2025-07-15 08:40:20 +08:00
16 changed files with 74 additions and 62 deletions

View File

@ -131,8 +131,8 @@ public class AppVideoController extends BaseController {
* 删除语音文件
*/
@GetMapping("/deleteAudioFile")
public R<Void> deleteAudioFile(Long fileId,Long deviceId) {
return audioProcessService.deleteAudioFile(fileId,deviceId);
public R<Void> deleteAudioFile(Long id) {
return audioProcessService.deleteAudioFile(id);
}
/**

View File

@ -6,6 +6,8 @@ import org.springframework.web.multipart.MultipartFile;
@Data
public class AppFileRenameDto {
private Long id;
/**
* 文件id
*/

View File

@ -414,19 +414,18 @@ public class AudioProcessService {
}
private Long getUserId(String source,Long deviceId){
Long userId = null;
if("app".equals( source)){
userId = AppLoginHelper.getUserId();
return AppLoginHelper.getUserId();
} else if ("web".equals( source)){
AppDeviceBindRecordBo appDeviceBindRecordBo = new AppDeviceBindRecordBo();
appDeviceBindRecordBo.setDeviceId(deviceId);
appDeviceBindRecordBo.setCommunicationMode(0);
List<AppDeviceBindRecordVo> appDeviceBindRecordVos = appDeviceBindRecordService.queryList(appDeviceBindRecordBo);
if (appDeviceBindRecordVos != null && !appDeviceBindRecordVos.isEmpty()){
userId = appDeviceBindRecordVos.get(0).getBindingUserId();
}
// AppDeviceBindRecordBo appDeviceBindRecordBo = new AppDeviceBindRecordBo();
// appDeviceBindRecordBo.setDeviceId(deviceId);
//// appDeviceBindRecordBo.setCommunicationMode(0);
// List<AppDeviceBindRecordVo> appDeviceBindRecordVos = appDeviceBindRecordService.queryList(appDeviceBindRecordBo);
// if (appDeviceBindRecordVos != null && !appDeviceBindRecordVos.isEmpty()){
// userId = appDeviceBindRecordVos.get(0).getBindingUserId();
// }
}
return userId;
return 0L;
}
/**
* 校验音频文件格式
@ -450,9 +449,10 @@ public class AudioProcessService {
throw new IllegalArgumentException("只允许上传MP3、WAV、PCM格式的音频文件");
}
long fileSize = 256 * 1024;
// 检查文件大小
if (file.getSize() > MAX_AUDIO_SIZE) {
throw new IllegalArgumentException("音频大小不能超过5MB");
if (file.getSize() > fileSize) {
throw new IllegalArgumentException("音频大小不能超过256kb");
}
}
@ -571,26 +571,29 @@ public class AudioProcessService {
if(deviceId == null){
return null;
}
Long userId = getUserId(source, deviceId);
AppBusinessFileBo bo = new AppBusinessFileBo();
bo.setBusinessId(deviceId);
bo.setCreateBy(userId);
bo.setFileType(3L);
if("web".equals(source)){
bo.setCreateBy(null);
}else{
bo.setCreateBy(userId);
}
return appBusinessFileService.queryAppFileList(bo);
}
public R<Void> deleteAudioFile(Long fileId,Long deviceId) {
public R<Void> deleteAudioFile(Long id) {
UpdateWrapper<AppBusinessFile> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("file_id",fileId);
updateWrapper.eq("business_id",deviceId);
updateWrapper.eq("id",id);
appBusinessFileMapper.delete(updateWrapper);
return R.ok();
}
public R<Void> renameAudioFile(AppFileRenameDto bo) {
UpdateWrapper<AppBusinessFile> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("file_id",bo.getFileId());
updateWrapper.eq("business_id",bo.getDeviceId());
updateWrapper.eq("id",bo.getId());
updateWrapper.set("re_name",bo.getFileName());
appBusinessFileMapper.update(updateWrapper);
return R.ok();

View File

@ -123,8 +123,8 @@ public class WebVideoController extends BaseController {
* 删除语音文件
*/
@GetMapping("/deleteAudioFile")
public R<Void> deleteAudioFile(Long fileId,Long deviceId) {
return audioProcessService.deleteAudioFile(fileId,deviceId);
public R<Void> deleteAudioFile(Long id) {
return audioProcessService.deleteAudioFile(id);
}
/**

View File

@ -38,6 +38,7 @@ public class WebDeviceHBY100JController extends BaseController {
*/
@PostMapping("/updateVoice")
public R<Void> updateVoice(@RequestBody HBY100JUpdateVoiceDto dto) {
dto.setCommunicationMode(0);
deviceHBY100JBizService.updateVoice(dto);
return R.ok();
}

View File

@ -7,4 +7,8 @@ public class HBY100JUpdateVoiceDto {
private Long id;
/**
* 通讯方式 0:4G;1:蓝牙
*/
private Integer communicationMode;
}

View File

@ -271,12 +271,12 @@ public class DeviceBizService {
if (type == 0) {
QueryWrapper<AppDeviceBindRecord> bindRecordQueryWrapper = new QueryWrapper<>();
bindRecordQueryWrapper.eq("device_id", device.getId());
bindRecordQueryWrapper.eq("binding_user_id", userId);
// bindRecordQueryWrapper.eq("binding_user_id", userId);
Long count = appDeviceBindRecordMapper.selectCount(bindRecordQueryWrapper);
if (count == 0) {
throw new RuntimeException("请先绑定设备!!!");
}
if (count < 2) {
if (count <= 1) {
UpdateWrapper<Device> deviceUpdateWrapper = new UpdateWrapper<>();
deviceUpdateWrapper.eq("id", device.getId())
.set("binding_user_id", null)

View File

@ -166,7 +166,7 @@ public class DeviceHBY100JBizService {
if(StringUtils.isNotBlank(voicePlayStatus)){
FuncType6VoicePlayRequest funcType6VoicePlayRequest = JSONObject.parseObject(voicePlayStatus, FuncType6VoicePlayRequest.class);
if(funcType6VoicePlayRequest.getData() != null){
vo.setVolume(funcType6VoicePlayRequest.getData().getVoiceBroadcast());
vo.setVoiceBroadcast(funcType6VoicePlayRequest.getData().getVoiceBroadcast());
}
}
@ -285,21 +285,22 @@ public class DeviceHBY100JBizService {
if (getDeviceStatus(deviceObj.getDeviceImei())) {
throw new ServiceException(deviceObj.getDeviceName() + ",设备已断开连接");
}
AppLoginUser loginUser = AppLoginHelper.getLoginUser();
SysOssVo sysOssVo = sysOssMapper.selectVoById(appBusinessFileVo.getFileId());
FuncType5UpdateVoiceRequest request = new FuncType5UpdateVoiceRequest();
request.setRequestId(GenerateIdUtil.generateNumericId());
request.setImei(deviceObj.getDeviceImei());
request.setFuncType("5");
request.setTimestamp(System.currentTimeMillis());
FuncType5UpdateVoiceRequest.Data data = new FuncType5UpdateVoiceRequest.Data();
data.setVoiceResource(sysOssVo.getUrl());
data.setVoiceType(0);
request.setData(data);
log.info("HBY100J更新语音参数{}", request);
if(dto.getCommunicationMode()!=null && dto.getCommunicationMode()==0){
SysOssVo sysOssVo = sysOssMapper.selectVoById(appBusinessFileVo.getFileId());
FuncType5UpdateVoiceRequest request = new FuncType5UpdateVoiceRequest();
request.setRequestId(GenerateIdUtil.generateNumericId());
request.setImei(deviceObj.getDeviceImei());
request.setFuncType("5");
request.setTimestamp(System.currentTimeMillis());
FuncType5UpdateVoiceRequest.Data data = new FuncType5UpdateVoiceRequest.Data();
data.setVoiceResource(sysOssVo.getUrl());
data.setVoiceType(0);
request.setData(data);
log.info("HBY100J更新语音参数{}", request);
mqttGateway.sendMsgToMqtt(buildMqttTopic(deviceObj.getDeviceImei()), 1, JSON.toJSONString(request));
mqttGateway.sendMsgToMqtt(buildMqttTopic(deviceObj.getDeviceImei()), 1, JSON.toJSONString(request));
}
UpdateWrapper<AppBusinessFile> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("business_id", appBusinessFileVo.getBusinessId());

View File

@ -8,8 +8,8 @@ spring.boot.admin.client:
metadata:
username: ${spring.boot.admin.client.username}
userpassword: ${spring.boot.admin.client.password}
username: @monitor.username@
password: @monitor.password@
username: ${monitor.username}
password: ${monitor.password}
--- # snail-job 配置
snail-job:

View File

@ -11,12 +11,12 @@ spring.boot.admin.client:
metadata:
username: ${spring.boot.admin.client.username}
userpassword: ${spring.boot.admin.client.password}
username: @monitor.username@
password: @monitor.password@
username: ${monitor.username}
password: ${monitor.password}
--- # snail-job 配置
snail-job:
enabled: false
enabled: true
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
group: "fys_group"
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config`表

View File

@ -4,7 +4,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: root
password: Jq_123456#
hikari:
connection-timeout: 30000
validation-timeout: 5000

View File

@ -2,9 +2,9 @@ spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
url: jdbc:mysql://localhost:3306/fys-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: root
password: Jq_123456#
hikari:
connection-timeout: 30000
validation-timeout: 5000
@ -29,7 +29,7 @@ snail-job:
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关
enabled: true
enabled: false
url: http://localhost:9090/admin
instance:
service-host-type: IP

View File

@ -17,4 +17,5 @@ import java.util.List;
public interface AppBusinessFileMapper extends BaseMapperPlus<AppBusinessFile, AppBusinessFileVo> {
List<AppFileVo> queryAppFileList(AppBusinessFileBo bo);
}

View File

@ -23,8 +23,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fileType != null">
and a.file_type = #{fileType}
</if>
<if test="createBy != null">
and a.create_by = #{createBy}
<if test="createBy != null ">
and (a.create_by = #{createBy} or a.create_by = 0)
</if>
order by a.create_time desc
</select>

View File

@ -213,11 +213,11 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
try {
byte[] imageData = file.getBytes();
// 检查是否需要压缩
if (ImageCompressUtil.needCompress(imageData)) {
// 压缩到100KB以内
imageData = ImageCompressUtil.compressImage(imageData);
// 使用压缩后的数据
}
// if (ImageCompressUtil.needCompress(imageData)) {
// // 压缩到100KB以内
// imageData = ImageCompressUtil.compressImage(imageData);
// // 使用压缩后的数据
// }
uploadResult = storage.uploadSuffix(imageData, suffix, file.getContentType());
} catch (IOException e) {
throw new ServiceException(e.getMessage());

16
pom.xml
View File

@ -85,10 +85,10 @@
<monitor.username>fys</monitor.username>
<monitor.password>123456</monitor.password>
</properties>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
<!-- <activation> -->
<!-- &lt;!&ndash; 默认环境 &ndash;&gt; -->
<!-- <activeByDefault>true</activeByDefault> -->
<!-- </activation> -->
</profile>
<profile>
<id>prod</id>
@ -98,10 +98,10 @@
<monitor.username>fys</monitor.username>
<monitor.password>123456</monitor.password>
</properties>
<!-- <activation> -->
<!-- &lt;!&ndash; 默认环境 &ndash;&gt; -->
<!-- <activeByDefault>true</activeByDefault> -->
<!-- </activation> -->
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>jingquan</id>