tplink缓存视频存储

This commit is contained in:
1378012178@qq.com 2025-09-01 15:34:53 +08:00
parent e40e60bad6
commit 7aae2df595
33 changed files with 440 additions and 74 deletions

View File

@ -1,16 +1,13 @@
package com.nu.modules.iot.tplink.controller;
package com.nu.modules.iot.tplink.camerainfo.controller;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.service.IAppCameraInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.camerainfo.service.IAppCameraInfoService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.entity;
package com.nu.modules.iot.tplink.camerainfo.entity;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.entity;
package com.nu.modules.iot.tplink.camerainfo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.entity;
package com.nu.modules.iot.tplink.camerainfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.entity;
package com.nu.modules.iot.tplink.camerainfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.entity;
package com.nu.modules.iot.tplink.camerainfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.enums;
package com.nu.modules.iot.tplink.camerainfo.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

View File

@ -1,9 +1,9 @@
package com.nu.modules.iot.tplink.mapper;
package com.nu.modules.iot.tplink.camerainfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.mapper;
package com.nu.modules.iot.tplink.camerainfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import com.nu.modules.iot.tplink.camerainfo.entity.AppErrorCode;
import org.apache.ibatis.annotations.Mapper;
/**

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.mapper;
package com.nu.modules.iot.tplink.camerainfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppProjectInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppProjectInfo;
/**
* @Description: 护理单元-物联管理-TPLINK项目信息

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.mapper;
package com.nu.modules.iot.tplink.camerainfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppRegionInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppRegionInfo;
/**
* @Description: 护理单元-物联管理-TPLINK分组信息

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.mapper;
package com.nu.modules.iot.tplink.camerainfo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig;
import org.apache.ibatis.annotations.Mapper;
/**

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppCameraInfoMapper">
<mapper namespace="com.nu.modules.iot.tplink.camerainfo.mapper.AppCameraInfoMapper">
<select id="findPage" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="findPage" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select a.id,
a.device_index as deviceIndex,
device_name as deviceName,
@ -61,7 +61,7 @@
</where>
</select>
<select id="findAllList" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="findAllList" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
@ -88,7 +88,7 @@
from nu_iot_tplink_camera a
</select>
<select id="findNuPage" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="findNuPage" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select
nu_id as nuId,
nu_name as nuName
@ -103,7 +103,7 @@
</where>
</select>
<select id="getByDeviceId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="getByDeviceId" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
@ -132,7 +132,7 @@
where device_index = #{deviceIndex}
</select>
<select id="getByNuId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="getByNuId" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
@ -161,7 +161,7 @@
where a.nu_id = #{nuId}
</select>
<select id="getCapabilityByDeviceId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
<select id="getCapabilityByDeviceId" parameterType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
motion_detection as motionDetection,
@ -246,4 +246,4 @@
where id = #{id}
</update>
</mapper>
</mapper>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppErrorCodeMapper">
<mapper namespace="com.nu.modules.iot.tplink.camerainfo.mapper.AppErrorCodeMapper">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.entity.AppErrorCode">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppErrorCode">
select
error_code as errorCode,
error_msg as errorMsg
@ -10,4 +10,4 @@
where error_code = #{errorCode}
</select>
</mapper>
</mapper>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppProjectInfoMapper">
<mapper namespace="com.nu.modules.iot.tplink.camerainfo.mapper.AppProjectInfoMapper">
<insert id="addProjectInfo">
insert into nu_iot_tplink_project(

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppRegionInfoMapper">
<mapper namespace="com.nu.modules.iot.tplink.camerainfo.mapper.AppRegionInfoMapper">
<insert id="addRegionInfo">
insert into nu_iot_tplink_region(
@ -23,4 +23,4 @@
delete from nu_iot_tplink_region
</delete>
</mapper>
</mapper>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper">
<mapper namespace="com.nu.modules.iot.tplink.camerainfo.mapper.AppTumsConfigMapper">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.entity.AppTumsConfig">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig">
select
id,
tums_url as tumsUrl,
@ -50,4 +50,4 @@
delete from nu_iot_tplink_tums_base
</update>
</mapper>
</mapper>

View File

@ -1,10 +1,10 @@
package com.nu.modules.iot.tplink.service;
package com.nu.modules.iot.tplink.camerainfo.service;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo;
import org.jeecg.common.api.vo.Result;
import java.util.Map;

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.service;
package com.nu.modules.iot.tplink.camerainfo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import com.nu.modules.iot.tplink.camerainfo.entity.AppErrorCode;
/**
* @Description: 护理单元-物联管理-错误码

View File

@ -1,7 +1,7 @@
package com.nu.modules.iot.tplink.service;
package com.nu.modules.iot.tplink.camerainfo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig;
/**
* @Description: 护理单元-物联管理-图门系统配置

View File

@ -1,4 +1,4 @@
package com.nu.modules.iot.tplink.service.impl;
package com.nu.modules.iot.tplink.camerainfo.service.impl;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
@ -6,19 +6,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.mapper.AppCameraInfoMapper;
import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.service.IAppCameraInfoService;
import com.nu.modules.iot.tplink.service.IAppErrorCodeService;
import com.nu.modules.iot.tplink.utils.AppTumsApi;
import com.nu.modules.iot.tplink.camerainfo.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppErrorCode;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppCameraInfoMapper;
import com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.camerainfo.service.IAppCameraInfoService;
import com.nu.modules.iot.tplink.camerainfo.service.IAppErrorCodeService;
import com.nu.modules.iot.tplink.camerainfo.utils.AppTumsApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@ -1,9 +1,9 @@
package com.nu.modules.iot.tplink.service.impl;
package com.nu.modules.iot.tplink.camerainfo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import com.nu.modules.iot.tplink.mapper.AppErrorCodeMapper;
import com.nu.modules.iot.tplink.service.IAppErrorCodeService;
import com.nu.modules.iot.tplink.camerainfo.entity.AppErrorCode;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppErrorCodeMapper;
import com.nu.modules.iot.tplink.camerainfo.service.IAppErrorCodeService;
import org.springframework.stereotype.Service;

View File

@ -1,9 +1,9 @@
package com.nu.modules.iot.tplink.service.impl;
package com.nu.modules.iot.tplink.camerainfo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.service.IAppTumsConfigService;
import com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.camerainfo.service.IAppTumsConfigService;
import org.springframework.stereotype.Service;

View File

@ -1,21 +1,19 @@
package com.nu.modules.iot.tplink.utils;
package com.nu.modules.iot.tplink.camerainfo.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.nu.modules.iot.tplink.entity.AppProjectInfo;
import com.nu.modules.iot.tplink.entity.AppRegionInfo;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.enums.AppApiEnum;
import com.nu.modules.iot.tplink.mapper.AppProjectInfoMapper;
import com.nu.modules.iot.tplink.mapper.AppRegionInfoMapper;
import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.camerainfo.entity.AppProjectInfo;
import com.nu.modules.iot.tplink.camerainfo.entity.AppRegionInfo;
import com.nu.modules.iot.tplink.camerainfo.enums.AppApiEnum;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppProjectInfoMapper;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppRegionInfoMapper;
import com.nu.modules.iot.tplink.camerainfo.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.camerainfo.entity.AppTumsConfig;
import com.nu.modules.sysconfig.ISysConfigApi;
import com.nu.utils.HttpRequestUtil;
import com.tplink.ignite.libs.developersdk.api.TumsClient;
import com.tplink.ignite.libs.developersdk.vo.ResultVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@ -0,0 +1,29 @@
package com.nu.modules.iot.tplink.storage.api;
import com.nu.modules.camerainfo.api.TplinkVideoStorageApi;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/api/tplink/videoStorage")
public class TplinkVideoStoApi {
@Autowired
private TplinkVideoStorageApi storageApi;
/**
* tplink缓存视频存储
*
* @param pic 封面图片
* @param video 视频缓存
* @param url 存储路径
*/
@PostMapping("/tplinkVideoStorage")
public Result<?> tplinkVideoStorage(@RequestPart("pic") MultipartFile pic, @RequestPart("video") MultipartFile video, @RequestParam("url") String url) {
storageApi.tplinkVideoStorage(pic, video, url);
return Result.ok();
}
}

View File

@ -83,6 +83,7 @@ public class ShiroConfig {
}
// 配置不会被拦截的链接 顺序判断
filterChainDefinitionMap.put("/api/tplink/videoStorage/**", "anon"); //视频缓存存储接口
filterChainDefinitionMap.put("/iot/tq/api/electricityMeter/**", "anon"); //电表回调
filterChainDefinitionMap.put("/iot/tq/api/waterMeter/**", "anon"); //水表回调
filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录

View File

@ -0,0 +1,7 @@
package com.nu.modules.camerainfo.api;
import org.springframework.web.multipart.MultipartFile;
public interface TplinkVideoStorageApi {
void tplinkVideoStorage(MultipartFile pic, MultipartFile video, String url);
}

View File

@ -0,0 +1,179 @@
package com.nu.modules.tplink.storage.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import com.nu.modules.tplink.storage.entity.TplinkVideoStorage;
import com.nu.modules.tplink.storage.service.ITplinkVideoStorageService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统视频存储
* @Author: jeecg-boot
* @Date: 2025-09-01
* @Version: V1.0
*/
@Api(tags="护理单元-物联管理-TPLINK图门系统视频存储")
@RestController
@RequestMapping("/iot/tplink/videoStorage")
@Slf4j
public class TplinkVideoStorageController extends JeecgController<TplinkVideoStorage, ITplinkVideoStorageService> {
@Autowired
private ITplinkVideoStorageService tplinkVideoStorageService;
/**
* 分页列表查询
*
* @param tplinkVideoStorage
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-分页列表查询")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-分页列表查询", notes="护理单元-物联管理-TPLINK图门系统视频存储-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<TplinkVideoStorage>> queryPageList(TplinkVideoStorage tplinkVideoStorage,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<TplinkVideoStorage> queryWrapper = QueryGenerator.initQueryWrapper(tplinkVideoStorage, req.getParameterMap());
Page<TplinkVideoStorage> page = new Page<TplinkVideoStorage>(pageNo, pageSize);
IPage<TplinkVideoStorage> pageList = tplinkVideoStorageService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param tplinkVideoStorage
* @return
*/
@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-添加")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-添加", notes="护理单元-物联管理-TPLINK图门系统视频存储-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody TplinkVideoStorage tplinkVideoStorage) {
tplinkVideoStorageService.save(tplinkVideoStorage);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param tplinkVideoStorage
* @return
*/
@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-编辑")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-编辑", notes="护理单元-物联管理-TPLINK图门系统视频存储-编辑")
@RequiresPermissions("tplinkvideostorage:nu_iot_tplink_video_storage:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody TplinkVideoStorage tplinkVideoStorage) {
tplinkVideoStorageService.updateById(tplinkVideoStorage);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-通过id删除")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-通过id删除", notes="护理单元-物联管理-TPLINK图门系统视频存储-通过id删除")
@RequiresPermissions("tplinkvideostorage:nu_iot_tplink_video_storage:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
tplinkVideoStorageService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-批量删除")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-批量删除", notes="护理单元-物联管理-TPLINK图门系统视频存储-批量删除")
@RequiresPermissions("tplinkvideostorage:nu_iot_tplink_video_storage:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.tplinkVideoStorageService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "护理单元-物联管理-TPLINK图门系统视频存储-通过id查询")
@ApiOperation(value="护理单元-物联管理-TPLINK图门系统视频存储-通过id查询", notes="护理单元-物联管理-TPLINK图门系统视频存储-通过id查询")
@GetMapping(value = "/queryById")
public Result<TplinkVideoStorage> queryById(@RequestParam(name="id",required=true) String id) {
TplinkVideoStorage tplinkVideoStorage = tplinkVideoStorageService.getById(id);
if(tplinkVideoStorage==null) {
return Result.error("未找到对应数据");
}
return Result.OK(tplinkVideoStorage);
}
/**
* 导出excel
*
* @param request
* @param tplinkVideoStorage
*/
@RequiresPermissions("tplinkvideostorage:nu_iot_tplink_video_storage:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, TplinkVideoStorage tplinkVideoStorage) {
return super.exportXls(request, tplinkVideoStorage, TplinkVideoStorage.class, "护理单元-物联管理-TPLINK图门系统视频存储");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("tplinkvideostorage:nu_iot_tplink_video_storage:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, TplinkVideoStorage.class);
}
}

View File

@ -0,0 +1,54 @@
package com.nu.modules.tplink.storage.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统视频存储
* @Author: jeecg-boot
* @Date: 2025-09-01
* @Version: V1.0
*/
@Data
@TableName("nu_iot_tplink_video_storage")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_iot_tplink_video_storage对象", description="护理单元-物联管理-TPLINK图门系统视频存储")
public class TplinkVideoStorage implements Serializable {
private static final long serialVersionUID = 1L;
/**id*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.String id;
/**封面*/
@Excel(name = "封面", width = 15)
@ApiModelProperty(value = "封面")
private java.lang.String pic;
/**视频存储路径*/
@Excel(name = "视频存储路径", width = 15)
@ApiModelProperty(value = "视频存储路径")
private java.lang.String videoUrl;
/**存储时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "存储时间")
private java.util.Date createTime;
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.tplink.storage.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.nu.modules.tplink.storage.entity.TplinkVideoStorage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统视频存储
* @Author: jeecg-boot
* @Date: 2025-09-01
* @Version: V1.0
*/
public interface TplinkVideoStorageMapper extends BaseMapper<TplinkVideoStorage> {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.tplink.storage.mapper.TplinkVideoStorageMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package com.nu.modules.tplink.storage.service;
import com.nu.modules.tplink.storage.entity.TplinkVideoStorage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统视频存储
* @Author: jeecg-boot
* @Date: 2025-09-01
* @Version: V1.0
*/
public interface ITplinkVideoStorageService extends IService<TplinkVideoStorage> {
}

View File

@ -0,0 +1,67 @@
package com.nu.modules.tplink.storage.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import com.nu.modules.camerainfo.api.TplinkVideoStorageApi;
import com.nu.modules.tplink.storage.entity.TplinkVideoStorage;
import com.nu.modules.tplink.storage.mapper.TplinkVideoStorageMapper;
import com.nu.modules.tplink.storage.service.ITplinkVideoStorageService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统视频存储
* @Author: jeecg-boot
* @Date: 2025-09-01
* @Version: V1.0
*/
@Service
public class TplinkVideoStorageServiceImpl extends ServiceImpl<TplinkVideoStorageMapper, TplinkVideoStorage> implements ITplinkVideoStorageService, TplinkVideoStorageApi {
@Value("${jeecg.path.upload}")
private String upLoadPath;
@Override
public void tplinkVideoStorage(MultipartFile pic, MultipartFile video, String url) {
// 1. 目录准备
String baseurl = "";
if (System.getProperty("os.name").toLowerCase().contains("win")) {
baseurl = Paths.get(System.getProperty("user.dir")).getRoot().toString().replaceAll("[/\\\\]+$", "");
}
String dirPath = baseurl + upLoadPath + File.separator + url;
FileUtil.mkdir(dirPath);
// 2. 生成不重复文件名
String picExt = FileUtil.extName(pic.getOriginalFilename());
String picName = IdUtil.fastSimpleUUID() + "." + picExt;
String videoExt = FileUtil.extName(video.getOriginalFilename());
String videoName = IdUtil.fastSimpleUUID() + "." + videoExt;
// 3. 保存文件
File picFile = new File(dirPath, picName);
File videoFile = new File(dirPath, videoName);
try {
pic.transferTo(picFile);
video.transferTo(videoFile);
} catch (IOException e) {
e.printStackTrace();
}
String picAccessUrl = url.replace("\\", "/") + picName;
String videoAccessUrl = url.replace("\\", "/") + videoName;
TplinkVideoStorage tplinkVideoStorage = new TplinkVideoStorage();
tplinkVideoStorage.setPic(picAccessUrl);
tplinkVideoStorage.setVideoUrl(videoAccessUrl);
baseMapper.insert(tplinkVideoStorage);
}
}