瀏覽代碼

修复bug

lyhzzz 1 年之前
父節點
當前提交
abad33eafb
共有 25 個文件被更改,包括 430 次插入35 次删除
  1. 1 1
      src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java
  2. 34 0
      src/main/java/com/fdkankan/fusion/config/SecurityUtil.java
  3. 11 4
      src/main/java/com/fdkankan/fusion/controller/CameraVersionAppController.java
  4. 12 4
      src/main/java/com/fdkankan/fusion/controller/CameraVersionController.java
  5. 15 1
      src/main/java/com/fdkankan/fusion/controller/CaseImgController.java
  6. 10 1
      src/main/java/com/fdkankan/fusion/down/CaseDownService.java
  7. 1 1
      src/main/java/com/fdkankan/fusion/entity/CameraVersion.java
  8. 1 1
      src/main/java/com/fdkankan/fusion/entity/CameraVersionApp.java
  9. 6 0
      src/main/java/com/fdkankan/fusion/entity/CaseImg.java
  10. 153 0
      src/main/java/com/fdkankan/fusion/entity/User.java
  11. 5 5
      src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java
  12. 0 2
      src/main/java/com/fdkankan/fusion/httpClient/FdService.java
  13. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IUserMapper.java
  14. 1 1
      src/main/java/com/fdkankan/fusion/service/ICameraVersionAppService.java
  15. 1 1
      src/main/java/com/fdkankan/fusion/service/ICameraVersionService.java
  16. 4 1
      src/main/java/com/fdkankan/fusion/service/ICaseImgService.java
  17. 17 0
      src/main/java/com/fdkankan/fusion/service/IUserService.java
  18. 11 4
      src/main/java/com/fdkankan/fusion/service/impl/CameraVersionAppServiceImpl.java
  19. 9 3
      src/main/java/com/fdkankan/fusion/service/impl/CameraVersionServiceImpl.java
  20. 62 2
      src/main/java/com/fdkankan/fusion/service/impl/CaseImgServiceImpl.java
  21. 14 1
      src/main/java/com/fdkankan/fusion/service/impl/CaseScriptServiceImpl.java
  22. 1 1
      src/main/java/com/fdkankan/fusion/service/impl/CopyCaseService.java
  23. 9 1
      src/main/java/com/fdkankan/fusion/service/impl/TmUserServiceImpl.java
  24. 29 0
      src/main/java/com/fdkankan/fusion/service/impl/UserServiceImpl.java
  25. 5 0
      src/main/resources/mapper/fusion/UserMapper.xml

+ 1 - 1
src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java

@@ -51,7 +51,7 @@ public class SaTokenConfigure {
                     if(StringUtils.isNotBlank(share) && "1".equals(share)){ //分享请求头
                         return;
                     }
-                    SaRouter.match("/sceneDownLog/list", r -> StpUtil.checkRoleOr("admin-super","admin-system") );
+                    SaRouter.match("/sceneDownLog/list", r -> StpUtil.checkRoleOr("admin-super","admin-system","admin") );
 
                     // 登录认证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
                     SaRouter.match("/**", "/fdLogin", r ->checkLogin() );

+ 34 - 0
src/main/java/com/fdkankan/fusion/config/SecurityUtil.java

@@ -0,0 +1,34 @@
+package com.fdkankan.fusion.config;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class SecurityUtil {
+    public static String MD52(String md5) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] digest = md.digest(md5.getBytes());
+            StringBuffer sb = new StringBuffer();
+
+            for(int i = 0; i < digest.length; ++i) {
+                sb.append(Integer.toHexString(digest[i] & 255 | 256).substring(1, 3));
+            }
+
+            return sb.toString();
+        } catch (NoSuchAlgorithmException var5) {
+            var5.printStackTrace();
+            return null;
+        }
+    }
+
+    public static String MD5(String inStr) {
+        char[] a = inStr.toCharArray();
+
+        for(int i = 0; i < a.length; ++i) {
+            a[i] = (char)(a[i] ^ 116);
+        }
+
+        String s = new String(a);
+        return s;
+    }
+}

+ 11 - 4
src/main/java/com/fdkankan/fusion/controller/CameraVersionAppController.java

@@ -8,12 +8,14 @@ import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CameraVersion;
 import com.fdkankan.fusion.entity.CameraVersionApp;
 import com.fdkankan.fusion.entity.TmUser;
+import com.fdkankan.fusion.entity.User;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.request.CameraVersionParam;
 import com.fdkankan.fusion.response.CameraVersionVo;
 import com.fdkankan.fusion.service.ICameraVersionAppService;
 import com.fdkankan.fusion.service.ICameraVersionService;
 import com.fdkankan.fusion.service.ITmUserService;
+import com.fdkankan.fusion.service.IUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -34,12 +36,14 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/cameraVersionApp")
-public class CameraVersionAppController {
+public class CameraVersionAppController extends BaseController{
 
     @Autowired
     ICameraVersionAppService cameraVersionAppService;
     @Autowired
     ITmUserService tmUserService;
+    @Autowired
+    IUserService userService;
 
     /**
      * 上传文件
@@ -54,7 +58,7 @@ public class CameraVersionAppController {
                              @RequestParam("description") String description,
                              @RequestParam("minVersion") String minVersion,
                              @RequestParam(value = "type",defaultValue = "0") Integer type) throws IOException {
-        cameraVersionAppService.addAndUpload(file,version,description,minVersion,type);
+        cameraVersionAppService.addAndUpload(file,version,description,minVersion,type,getUserName());
         return ResultData.ok();
     }
 
@@ -81,9 +85,12 @@ public class CameraVersionAppController {
             CameraVersionVo vo = new CameraVersionVo();
             BeanUtils.copyProperties(record,vo);
             if(record.getSysUserId() !=null){
-                TmUser user = tmUserService.getById(record.getSysUserId());
+                User user = userService.getById(record.getSysUserId());
                 if(user != null){
-                    vo.setCreateName(user.getNickName());
+                    TmUser tmUser = tmUserService.getByUserName(user.getUserName());
+                    if(tmUser != null){
+                        vo.setCreateName(tmUser.getNickName());
+                    }
                 }
             }
             voList.add(vo);

+ 12 - 4
src/main/java/com/fdkankan/fusion/controller/CameraVersionController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.common.ResultCode;
@@ -8,11 +9,13 @@ import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CameraVersion;
 import com.fdkankan.fusion.entity.CameraVersionApp;
 import com.fdkankan.fusion.entity.TmUser;
+import com.fdkankan.fusion.entity.User;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.request.CameraVersionParam;
 import com.fdkankan.fusion.response.CameraVersionVo;
 import com.fdkankan.fusion.service.ICameraVersionService;
 import com.fdkankan.fusion.service.ITmUserService;
+import com.fdkankan.fusion.service.IUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -33,12 +36,14 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/cameraVersion")
-public class CameraVersionController {
+public class CameraVersionController extends BaseController {
 
     @Autowired
     ICameraVersionService cameraVersionService;
     @Autowired
     ITmUserService tmUserService;
+    @Autowired
+    IUserService userService;
 
     /**
      * 上传文件
@@ -53,7 +58,7 @@ public class CameraVersionController {
                              @RequestParam("description") String description,
                              @RequestParam("minVersion") String minVersion,
                              @RequestParam(value = "type",defaultValue = "1") Integer type) throws IOException {
-        cameraVersionService.addAndUpload(file,version,description,minVersion,type);
+        cameraVersionService.addAndUpload(file,version,description,minVersion,type,getUserName());
         return ResultData.ok();
     }
 
@@ -80,9 +85,12 @@ public class CameraVersionController {
             CameraVersionVo vo = new CameraVersionVo();
             BeanUtils.copyProperties(record,vo);
             if(record.getSysUserId() !=null){
-                TmUser user = tmUserService.getById(record.getSysUserId());
+                User user = userService.getById(record.getSysUserId());
                 if(user != null){
-                    vo.setCreateName(user.getNickName());
+                    TmUser tmUser = tmUserService.getByUserName(user.getUserName());
+                    if(tmUser != null){
+                        vo.setCreateName(tmUser.getNickName());
+                    }
                 }
             }
             voList.add(vo);

+ 15 - 1
src/main/java/com/fdkankan/fusion/controller/CaseImgController.java

@@ -37,7 +37,7 @@ public class CaseImgController {
         if(param.getCaseId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        return ResultData.ok(caseImgService.getByCaseId(param.getCaseId()));
+        return ResultData.ok(caseImgService.getByCaseId(param.getCaseId(),0));
     }
 
     @PostMapping("/saveOrUpdate")
@@ -103,5 +103,19 @@ public class CaseImgController {
         return ResultData.ok();
     }
 
+
+    @GetMapping("/getFfmpegImage")
+    public ResultData getFfmpegImage( @RequestParam(required = false)Integer caseId){
+        if(caseId == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return ResultData.ok(caseImgService.getByCaseId(caseId,1));
+    }
+
+    @PostMapping("/ffmpegImage")
+    public ResultData ffmpegImage(@RequestParam(required = false)MultipartFile[] files,
+                                  @RequestParam(required = false)Integer caseId) {
+        return ResultData.ok(caseImgService.ffmpegImage(files,caseId));
+    }
 }
 

+ 10 - 1
src/main/java/com/fdkankan/fusion/down/CaseDownService.java

@@ -119,6 +119,15 @@ public class CaseDownService {
     @Async
     public void downOffline(Integer caseId){
         try {
+            String redisKey = String.format(downProcessKey, caseId);
+            if( redisUtil.hasKey(redisKey)){
+                String res = redisUtil.get(redisKey);
+                DownloadProcessVo downloadProcessVo = JSONObject.parseObject(res, DownloadProcessVo.class);
+                if(downloadProcessVo.getPercent()== null || downloadProcessVo.getPercent() != 100){
+                    return;
+                }
+            }
+
             setRedisProcess(caseId,0);
             //复制前端资源
             cpIndexHtml(caseId);
@@ -155,8 +164,8 @@ public class CaseDownService {
     }
 
     public void setRedisProcess(Integer caseId,Integer num,String url,Integer status){
-        log.info("down-offline-process:{},{},{}",caseId,num,url);
         String redisKey = String.format(downProcessKey, caseId);
+        log.info("down-offline-process:{},{},{}",caseId,num,url);
         DownloadProcessVo processVo = new DownloadProcessVo();
         processVo.setStatus(status);
         processVo.setPercent(num);

+ 1 - 1
src/main/java/com/fdkankan/fusion/entity/CameraVersion.java

@@ -78,7 +78,7 @@ public class CameraVersion implements Serializable {
      * 创建日期
      */
     @TableField("create_time")
-    private Date createTime;
+    private String createTime;
 
     /**
      * 修改日期

+ 1 - 1
src/main/java/com/fdkankan/fusion/entity/CameraVersionApp.java

@@ -78,7 +78,7 @@ public class CameraVersionApp implements Serializable {
      * 创建日期
      */
     @TableField("create_time")
-    private Date createTime;
+    private String createTime;
 
     /**
      * 修改日期

+ 6 - 0
src/main/java/com/fdkankan/fusion/entity/CaseImg.java

@@ -59,6 +59,12 @@ public class CaseImg implements Serializable {
     @TableField("sort")
     private Integer sort;
 
+    /**
+     * 0未应用,1已应用
+     */
+    @TableField("type")
+    private Integer type;
+
     @TableField("create_time")
     private Date createTime;
 

+ 153 - 0
src/main/java/com/fdkankan/fusion/entity/User.java

@@ -0,0 +1,153 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 用户信息表
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-29
+ */
+@Getter
+@Setter
+@TableName("t_user")
+public class User implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 头像对应的链接地址
+     */
+    @TableField("head")
+    private String head;
+
+    /**
+     * 用户密码
+     */
+    @TableField("password")
+    private String password;
+
+    /**
+     * 用户邮箱
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 注册时间
+     */
+    @TableField("register_time")
+    private Date registerTime;
+
+    /**
+     * 用户名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 昵称
+     */
+    @TableField("nick_name")
+    private String nickName;
+
+    /**
+     * 0表示禁言(bbs)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 0表示拒绝通知,1表示接受通知
+     */
+    @TableField("is_notice")
+    private Integer isNotice;
+
+    /**
+     * 机构名称
+     */
+    @TableField("organization_name")
+    private String organizationName;
+
+    /**
+     * 主页链接
+     */
+    @TableField("main_page")
+    private String mainPage;
+
+    /**
+     * 所在国家,默认是86
+     */
+    @TableField("country")
+    private String country;
+
+    /**
+     * 所在省份
+     */
+    @TableField("province")
+    private String province;
+
+    /**
+     * 所在城市
+     */
+    @TableField("city")
+    private String city;
+
+    /**
+     * 可下载场景总数
+     */
+    @TableField("download_num_total")
+    private Integer downloadNumTotal;
+
+    /**
+     * 已下载场景总数
+     */
+    @TableField("download_num")
+    private Integer downloadNum;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("sys_user_id")
+    private Integer sysUserId;
+
+    /**
+     * 深时场景下载总次数
+     */
+    @TableField("ss_download_num_total")
+    private Integer ssDownloadNumTotal;
+
+    /**
+     * 深时场景已下载次数
+     */
+    @TableField("ss_download_num")
+    private Integer ssDownloadNum;
+
+
+}

+ 5 - 5
src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"fusion", getTables(new String[]{
-               "t_case_offline"
+               "t_user"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -46,10 +46,10 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://192.168.0.25:3306/fd_fusion_xj",
-                "root","mysql123!ROOT.")
-//        FastAutoGenerator.create("jdbc:mysql://120.24.144.164:3306/4dkankan_v4",
-//                "root","4Dage@4Dage#@168")
+//        FastAutoGenerator.create("jdbc:mysql://192.168.0.25:3306/fd_fusion_xj",
+//                "root","mysql123!ROOT.")
+        FastAutoGenerator.create("jdbc:mysql://120.24.144.164:3306/4dkankan_v4",
+                "root","4Dage@4Dage#@168")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)

+ 0 - 2
src/main/java/com/fdkankan/fusion/httpClient/FdService.java

@@ -98,8 +98,6 @@ public class FdService {
         param.setNumList(numList);
         param.setRoomId(roomId);
         param.setMaxMan(30);
-        param.setUseStartTime(new Date());
-        param.setUseEndTime(DateUtils.getHoursTime(new Date()));
         param.setPlatform("fd");
         return takeLookClient.roomAddOrUpdate(param,getFdToken());
     }

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/IUserMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.User;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 用户信息表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-29
+ */
+@Mapper
+public interface IUserMapper extends BaseMapper<User> {
+
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/ICameraVersionAppService.java

@@ -20,7 +20,7 @@ import java.util.List;
  */
 public interface ICameraVersionAppService extends IService<CameraVersionApp> {
 
-    void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type);
+    void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type,String userName);
 
     void updateByParam(CameraVersionApp param);
 

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/ICameraVersionService.java

@@ -16,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface ICameraVersionService extends IService<CameraVersion> {
 
-    void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type);
+    void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type,String userName);
 
     void updateByParam(CameraVersion param);
 

+ 4 - 1
src/main/java/com/fdkankan/fusion/service/ICaseImgService.java

@@ -3,6 +3,7 @@ package com.fdkankan.fusion.service;
 import com.fdkankan.fusion.entity.CaseImg;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.fusion.request.CaseImgParam;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -16,7 +17,9 @@ import java.util.List;
  */
 public interface ICaseImgService extends IService<CaseImg> {
 
-    List<CaseImg> getByCaseId(Integer caseId);
+    List<CaseImg> getByCaseId(Integer caseId,Integer type);
 
     void updateSort(CaseImgParam param);
+
+    CaseImg ffmpegImage(MultipartFile[] files, Integer caseId);
 }

+ 17 - 0
src/main/java/com/fdkankan/fusion/service/IUserService.java

@@ -0,0 +1,17 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.User;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 用户信息表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-29
+ */
+public interface IUserService extends IService<User> {
+
+    User getByUserName(String userName);
+}

+ 11 - 4
src/main/java/com/fdkankan/fusion/service/impl/CameraVersionAppServiceImpl.java

@@ -14,6 +14,7 @@ import com.fdkankan.fusion.common.util.FileMd5Util;
 import com.fdkankan.fusion.common.util.ShellUtil;
 import com.fdkankan.fusion.entity.CameraVersionApp;
 import com.fdkankan.fusion.entity.TmUser;
+import com.fdkankan.fusion.entity.User;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICameraVersionAppMapper;
 import com.fdkankan.fusion.request.CameraVersionParam;
@@ -21,6 +22,7 @@ import com.fdkankan.fusion.response.CameraVersionVo;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.fusion.service.ICameraVersionAppService;
 import com.fdkankan.fusion.service.ITmUserService;
+import com.fdkankan.fusion.service.IUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -50,9 +52,14 @@ public class CameraVersionAppServiceImpl extends ServiceImpl<ICameraVersionAppMa
 
     @Value("${upload.query-path}")
     private String ossUrlPrefix;
+    @Autowired
+    IUserService userService;
+    @Autowired
+    ITmUserService tmUserService;
+
 
     @Override
-    public void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type)  {
+    public void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type,String userName)  {
         if(StringUtils.isBlank(version)){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
@@ -93,7 +100,7 @@ public class CameraVersionAppServiceImpl extends ServiceImpl<ICameraVersionAppMa
             log.info("upload success");
             String url = ossUrlPrefix + DIR_NAME + fileName;
             log.info("upload url: {}" + url);
-
+            User user = userService.getByUserName(userName);
             CameraVersionApp versionEntity = new CameraVersionApp();
             versionEntity.setName(fileName);
             versionEntity.setFileUrl(url);
@@ -103,12 +110,12 @@ public class CameraVersionAppServiceImpl extends ServiceImpl<ICameraVersionAppMa
             versionEntity.setMinVersion(minVersion);
             versionEntity.setStatus("I");
             versionEntity.setFileMd5(FileMd5Util.getFileMD5(new File(filePath)));
-            versionEntity.setSysUserId(Long.valueOf(StpUtil.getLoginId().toString()));
+            versionEntity.setSysUserId(user.getId());
             this.save(versionEntity);
             // 删除本地文件
             FileUtil.del(filePath);
         }catch (Exception e){
-
+            log.info("upload-error:{}",e);
         }finally {
 
         }

+ 9 - 3
src/main/java/com/fdkankan/fusion/service/impl/CameraVersionServiceImpl.java

@@ -15,6 +15,7 @@ import com.fdkankan.fusion.common.util.ShellUtil;
 import com.fdkankan.fusion.common.util.UploadToOssUtil;
 import com.fdkankan.fusion.entity.CameraVersion;
 import com.fdkankan.fusion.entity.TmUser;
+import com.fdkankan.fusion.entity.User;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICameraVersionMapper;
 import com.fdkankan.fusion.request.CameraVersionParam;
@@ -22,6 +23,7 @@ import com.fdkankan.fusion.response.CameraVersionVo;
 import com.fdkankan.fusion.service.ICameraVersionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.fusion.service.ITmUserService;
+import com.fdkankan.fusion.service.IUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -52,9 +54,11 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
 
     @Value("${upload.query-path}")
     private String ossUrlPrefix;
+    @Autowired
+    IUserService userService;
 
     @Override
-    public void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type)  {
+    public void addAndUpload(MultipartFile file, String version, String description, String minVersion, Integer type,String userName)  {
         if(StringUtils.isBlank(version)){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
@@ -96,6 +100,8 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
             String url = ossUrlPrefix + DIR_NAME + fileName;
             log.info("upload url: {}" + url);
 
+            User user = userService.getByUserName(userName);
+
             CameraVersion versionEntity = new CameraVersion();
             versionEntity.setName(fileName);
             versionEntity.setFileUrl(url);
@@ -105,12 +111,12 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
             versionEntity.setMinVersion(minVersion);
             versionEntity.setStatus("I");
             versionEntity.setFileMd5(FileMd5Util.getFileMD5(new File(filePath)));
-            versionEntity.setSysUserId(Long.valueOf(StpUtil.getLoginId().toString()));
+            versionEntity.setSysUserId(user.getId());
             this.save(versionEntity);
             // 删除本地文件
             FileUtil.del(filePath);
         }catch (Exception e){
-
+            log.info("upload-error:{}",e);
         }finally {
 
         }

+ 62 - 2
src/main/java/com/fdkankan/fusion/service/impl/CaseImgServiceImpl.java

@@ -1,18 +1,26 @@
 package com.fdkankan.fusion.service.impl;
 
+import cn.hutool.core.io.FileUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.ShellUtil;
 import com.fdkankan.fusion.entity.CaseImg;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICaseImgMapper;
 import com.fdkankan.fusion.request.CaseImgParam;
 import com.fdkankan.fusion.service.ICaseImgService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * <p>
@@ -23,15 +31,19 @@ import java.util.List;
  * @since 2024-07-04
  */
 @Service
+@Slf4j
 public class CaseImgServiceImpl extends ServiceImpl<ICaseImgMapper, CaseImg> implements ICaseImgService {
 
     @Override
-    public List<CaseImg> getByCaseId(Integer caseId) {
+    public List<CaseImg> getByCaseId(Integer caseId,Integer type) {
 
         LambdaQueryWrapper<CaseImg> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CaseImg::getCaseId,caseId);
+        if(type != null){
+            wrapper.eq(CaseImg::getType,type);
+        }
         wrapper.orderByAsc(CaseImg::getSort);
-        wrapper.orderByDesc(CaseImg::getId);
+        wrapper.orderByAsc(CaseImg::getId);
         return this.list(wrapper);
     }
 
@@ -48,4 +60,52 @@ public class CaseImgServiceImpl extends ServiceImpl<ICaseImgMapper, CaseImg> imp
             this.update(wrapper);
         }
     }
+
+    @Value("${upload.query-path}")
+    private String queryPath;
+    @Override
+    public CaseImg ffmpegImage(MultipartFile[] files, Integer caseId) {
+        if(files.length <=0 || caseId == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String filePath = FilePath.FFMPEG_IMG_PATH +"/"+ caseId+"/";
+        try {
+            StringBuilder ffmpegCmd = new StringBuilder("ffmpeg ");
+            String outFileName = UUID.randomUUID().toString().replace("-","") ;
+            String outSuffixName = ".jpg";
+            for (MultipartFile file : files) {
+                String suffixName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+                //重新生成文件名
+                String fileName = UUID.randomUUID().toString().replace("-","") ;
+                String localFilePath = filePath + fileName  + suffixName;
+                File file1 = new File(localFilePath);
+                if(!file1.getParentFile().exists()){
+                    file1.getParentFile().mkdirs();
+                }
+                file.transferTo(file1);
+                ffmpegCmd.append(" -i ").append(localFilePath);
+            }
+            String outLocalPath = filePath + outFileName +outSuffixName;
+            ffmpegCmd.append(" -filter_complex hstack=inputs="+ files.length);
+            ffmpegCmd.append(" " +outLocalPath);
+            ShellUtil.execCmd(ffmpegCmd.toString());
+            if(!FileUtil.exist(outLocalPath)){
+                throw new BusinessException(ResultCode.UPLOAD_FILE_TYPE_ERROR);
+            }
+            ShellUtil.yunUpload(outLocalPath,outLocalPath.replace("/mnt/",""));
+
+            CaseImg caseImg = new CaseImg();
+            caseImg.setCaseId(caseId);
+            caseImg.setImgUrl(queryPath + outLocalPath.replace("/mnt/",""));
+            caseImg.setImgInfo("照片卷");
+            caseImg.setType(1);
+            this.save(caseImg);
+            return caseImg;
+        }catch (Exception e){
+            log.info("ffmpeg错误:{}",caseId,e);
+        }finally {
+            FileUtil.del(filePath);
+        }
+        return null;
+    }
 }

+ 14 - 1
src/main/java/com/fdkankan/fusion/service/impl/CaseScriptServiceImpl.java

@@ -11,8 +11,10 @@ import com.fdkankan.fusion.entity.CaseExtractDetail;
 import com.fdkankan.fusion.entity.CaseScript;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.ICaseScriptMapper;
+import com.fdkankan.fusion.response.FileInfoVo;
 import com.fdkankan.fusion.service.ICaseScriptService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.redis.util.RedisUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -56,6 +58,8 @@ public class CaseScriptServiceImpl extends ServiceImpl<ICaseScriptMapper, CaseSc
     private String queryPath;
     @Autowired
     UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    RedisUtil redisUtil;
     @Override
     public String getFfmpegVideoImage(String videoPath, String width, String high) {
         if(StringUtils.isBlank(videoPath) || !videoPath.contains(".")){
@@ -64,6 +68,13 @@ public class CaseScriptServiceImpl extends ServiceImpl<ICaseScriptMapper, CaseSc
         if(!uploadToOssUtil.existKey(videoPath.replace(queryPath,""))){
             throw new BusinessException(ResultCode.FILE_NOT_EXIST);
         }
+        FileInfoVo fileInfo = uploadToOssUtil.getFileInfo(videoPath.replace(queryPath, ""));
+        String md5 = fileInfo.getMD5();
+        String redisKey = "fusion:file:"+md5;
+        if(redisUtil.hasKey(redisKey)){
+            return redisUtil.get(redisKey);
+        }
+
         String[] split = videoPath.split("\\.");
         String localPath = FilePath.FFMPEG_IMG_PATH  + File.separator + "."+split[split.length -1];
         ShellUtil.yunDownload(videoPath.replace(queryPath,""),localPath);
@@ -75,6 +86,8 @@ public class CaseScriptServiceImpl extends ServiceImpl<ICaseScriptMapper, CaseSc
 
         FileUtil.del(localPath);
         FileUtil.del(path);
-        return queryPath + path.replace("/mnt/","");
+        String url = queryPath + path.replace("/mnt/","");
+        redisUtil.set(redisKey,url);
+        return url;
     }
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/impl/CopyCaseService.java

@@ -188,7 +188,7 @@ public class CopyCaseService {
      * 复制案件照片制卷
      */
     private void cpCaseImg(Integer oldCaseId, Integer newCaseId) {
-        List<CaseImg> listByCaseId = caseImgService.getByCaseId(oldCaseId);
+        List<CaseImg> listByCaseId = caseImgService.getByCaseId(oldCaseId,null);
         if(listByCaseId == null || listByCaseId.isEmpty()){
             return;
         }

+ 9 - 1
src/main/java/com/fdkankan/fusion/service/impl/TmUserServiceImpl.java

@@ -6,6 +6,7 @@ import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.common.enums.IdPreEnum;
 import com.fdkankan.fusion.common.util.Base64Converter;
 import com.fdkankan.fusion.common.util.IdUtils;
+import com.fdkankan.fusion.config.SecurityUtil;
 import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
 
 import cn.dev33.satoken.stp.StpUtil;
@@ -61,6 +62,8 @@ public class TmUserServiceImpl extends ServiceImpl<ITmUserMapper, TmUser> implem
     FdKKClient fdKKClient;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    IUserService userService;
 
     @Override
     public void setRoleAndPermToRedis(TmUser tmUser) {
@@ -196,12 +199,17 @@ public class TmUserServiceImpl extends ServiceImpl<ITmUserMapper, TmUser> implem
         if(tmUser == null){
             throw new BusinessException(ResultCode.USER_NOT_EXIST);
         }
+        User user = userService.getByUserName(param.getUserName());
+        if(user == null){
+            throw new BusinessException(ResultCode.USER_NOT_EXIST);
+        }
         if (!StringUtils.equals(param.getPassword(), param.getConfirmPwd())) {
             throw new BusinessException(ResultCode.USER_PASSWORD_ERROR);
         }
         if(StringUtils.isBlank(param.getClear()) || !param.getClear().equals("YES")) {
             String password = Base64Converter.decode(Base64Converter.subText(param.getOldPassword()));
-            if(!tmUser.getPassword().equals(password)){
+            String passwordCode = SecurityUtil.MD5(password);
+            if(!user.getPassword().equals(passwordCode)){
                 throw new BusinessException(ResultCode.PROJECT_PASSWORD_ERROR);
             }
         }

+ 29 - 0
src/main/java/com/fdkankan/fusion/service/impl/UserServiceImpl.java

@@ -0,0 +1,29 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.entity.User;
+import com.fdkankan.fusion.mapper.IUserMapper;
+import com.fdkankan.fusion.service.IUserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户信息表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-29
+ */
+@Service
+@DS("db2")
+public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
+
+    @Override
+    public User getByUserName(String userName) {
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(User::getUserName,userName);
+        return this.getOne(wrapper);
+    }
+}

+ 5 - 0
src/main/resources/mapper/fusion/UserMapper.xml

@@ -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.fdkankan.fusion.mapper.IUserMapper">
+
+</mapper>