Kaynağa Gözat

获取app更新的时候,下载下来是release.apk

根据ID获取诊断报告H5提示不存在,但是列表已经获取到了这条
bmmx 1 yıl önce
ebeveyn
işleme
06da896c1d

+ 26 - 0
src/main/java/com/om/controller/admin/AppController.java

@@ -5,13 +5,18 @@ import com.om.entity.po.App;
 import com.om.entity.vo.AppVO;
 import com.om.entity.vo.DignosisPageVO;
 import com.om.service.IAppService;
+import com.om.utils.HuaweiObsUtil;
 import com.om.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 
 /**
  * <p>
@@ -30,6 +35,9 @@ public class AppController {
     @Resource
     private IAppService appService;
 
+    @Resource
+    HuaweiObsUtil huaweiObsUtil;
+
     @PostMapping("/add")
     @ApiOperation("新增应用软件")
     Result add(@RequestBody AppVO app){
@@ -37,6 +45,24 @@ public class AppController {
         return appService.add(app);
     }
 
+    @ApiOperation("视频上传接口")
+    @PostMapping(value = "/upload",headers="content-type=multipart/form-data")
+    public Result video(@RequestParam("file") MultipartFile file,
+                        HttpServletRequest request,
+                        @RequestParam("prefix") String prefix) throws IOException {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        MultipartFile headerImage = multipartRequest.getFile("file");
+        String originalFilename = headerImage.getOriginalFilename();
+        int lastIndexOf = originalFilename.lastIndexOf(".");
+        if (headerImage != null) {
+            String fileUrl = huaweiObsUtil.uploadApp(headerImage, prefix +"/"+originalFilename.substring(0,lastIndexOf));
+            if (fileUrl == null) return Result.fail("上传失败!");
+            else return Result.succ(fileUrl);
+        } else {
+            return Result.fail("文件不正确!");
+        }
+    }
+
     @ApiOperation("删除应用软件")
     @DeleteMapping("/delete/{id}")
     public Result delete(@PathVariable(name = "id") Integer id){

+ 3 - 1
src/main/java/com/om/service/impl/AppsServiceImpl.java

@@ -106,7 +106,9 @@ public class AppsServiceImpl extends ServiceImpl<AppsMapper, Apps> implements IA
                 } else {
                     vo.setDescription("");
                 }
-                String uploadUrl = obsUtil.getUploadUrl(apps1.getFileName(), "apps");
+                int lastIndexOf = apps1.getFileName().lastIndexOf(".");
+                String uploadUrl = obsUtil.getAppUploadUrl(
+                        "apps/"+apps1.getFileName().substring(0, lastIndexOf));
                 vo.setUrl(uploadUrl);
                 vo.setIsUpdate("1");
             }

+ 1 - 1
src/main/java/com/om/service/impl/DiagnosticLogServiceImpl.java

@@ -152,7 +152,7 @@ public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, D
         }
         String prefix = DIAGNOSTIC_LOG_PREFIX;
         //获取下载链接
-        String downloadUrl = obsUtil.getUploadUrl(nameLog, prefix);
+        String downloadUrl = obsUtil.getUploadUrlNotCDN(nameLog, prefix);
         return Result.ok(downloadUrl);
     }
 

+ 1 - 0
src/main/java/com/om/service/impl/RepairServiceImpl.java

@@ -338,6 +338,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
                 .like(StringUtils.isNotBlank(searchDistributor), Repair::getDepartmentName, searchDistributor)
                 .ge(beginTime != null, Repair::getCreateTime, beginTime)
                 .le(endTime != null, Repair::getCreateTime, endTime)
+                .orderByDesc(Repair::getCreateTime, Repair::getCreateTime)
                 .page(new Page<>(pageIndex, pageSize));
 
 

+ 67 - 0
src/main/java/com/om/utils/HuaweiObsUtil.java

@@ -119,6 +119,38 @@ public class HuaweiObsUtil {
         return null;
     }
 
+    /**
+     * 文件上传
+     *
+     * @param file 要上传的文件
+     * @return 文件在OBS中的URL
+     * @throws IOException IO异常
+     */
+    public String uploadApp(MultipartFile file,String prefix) throws IOException {
+        ObsClient obsClient = null;
+        try {
+            // 拼接文件在OBS中的路径
+            String objectName = prefix + "/"+ "release.apk";
+            // 初始化OBS客户端
+            obsClient = new ObsClient(ak, sk, endpoint);
+            // 上传文件到OBS
+            HeaderResponse response = obsClient.putObject(bucketName, objectName, file.getInputStream());
+            log.info(JSONObject.toJSONString(response));
+            // 判断上传是否成功
+            int statusCode = response.getStatusCode();
+            if (200 == statusCode) {
+                // 拼接文件在OBS中的URL并返回
+                // String uploadUrl = getUploadUrl(originalFilename, prefix);
+                String objectUrl = path + objectName;
+                return objectUrl;
+            }
+
+        } finally {
+            // 关闭OBS客户端
+            obsClient.close();
+        }
+        return null;
+    }
 
     /**
      * 获取上传地址
@@ -131,6 +163,41 @@ public class HuaweiObsUtil {
         return  path  + prefix +"/"+ fileName;
     }
 
+    /**
+     * 获取上传地址
+     *
+     * @param prefix 文件路径
+     * @return
+     */
+    public String getAppUploadUrl(String prefix) {
+        return  path  + prefix +"/"+ "release.apk";
+    }
+
+    /**
+     * 获取上传地址
+     *
+     * @param fileName 文件名称
+     * @param prefix 文件路径
+     * @return
+     */
+    public String getUploadUrlNotCDN(String fileName, String prefix) {
+        try {
+            // 创建ObsClient实例
+            ObsClient obsClient = new ObsClient(ak, sk, endpoint);
+            // URL有效期,378432000秒. 一年
+            long expireSeconds = 378432000L;
+            String objectName = prefix.concat("/").concat(fileName);
+            TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds);
+            request.setBucketName(bucketName);
+            request.setObjectKey(objectName);
+            TemporarySignatureResponse response = obsClient.createTemporarySignature(request);
+            return response.getSignedUrl();
+        } catch (Exception e) {
+            log.error("获取上传地址异常:{}", e.getMessage(), e);
+        }
+        return null;
+    }
+
     /**
      * 获取上传地址
      *

+ 2 - 0
src/main/resources/template/static/report.html

@@ -285,7 +285,9 @@
             <td style="padding-left: 180px">
                 <ul>
                     <#list controlMap.getFaultCodeMap()?values as value>
+                    <#if value?? && value?has_content>
                     <li>${value}</li>
+                </#if>
                     <p></p>
                 </#list>
                 </ul>