Explorar el Código

产品管理/app管理

lyhzzz hace 3 años
padre
commit
afde8868aa

+ 64 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/controller/AppFileController.java

@@ -0,0 +1,64 @@
+package com.fdkankan.manage.controller;
+
+
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.FileMd5Util;
+import com.fdkankan.manage.entity.AppFile;
+import com.fdkankan.manage.service.IAppFileService;
+import com.fdkankan.manage.vo.request.AppFileParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/service/manage/appFile")
+public class AppFileController {
+
+    @Autowired
+    IAppFileService appFileService;
+
+
+    @PostMapping(value = "/upload", consumes = { "multipart/form-data" })
+    private ResultData upload(@RequestParam(required = false) MultipartFile file) {
+        // 将文件转字节-> 字符串
+        String filePath = appFileService.upload(file);
+        String md5 = FileMd5Util.getFileMD5(filePath);
+        Map<String,String> result = new HashMap<>(2);
+        result.put("md5",md5);
+        return ResultData.ok(md5);
+    }
+
+    @PostMapping(value = "/add")
+    private ResultData add(@RequestBody AppFile param) {
+        appFileService.saveByParam(param);
+        return ResultData.ok();
+    }
+
+    @GetMapping(value = "/agentList")
+    private ResultData agentList(@RequestParam(required = false) String agentName ) {
+        return ResultData.ok(appFileService.agentList(agentName));
+    }
+
+    @PostMapping(value = "/list")
+    private ResultData list(@RequestBody AppFileParam param) {
+        return ResultData.ok(appFileService.pageList(param));
+    }
+
+    @PostMapping(value = "/delete")
+    private ResultData delete(@RequestBody AppFile param) {
+        if(ObjectUtils.isEmpty(param.getId())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        appFileService.removeById(param.getId());
+        return ResultData.ok();
+    }
+
+
+}
+

+ 59 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/entity/AppFile.java

@@ -0,0 +1,59 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@Getter
+@Setter
+@TableName("t_app_file")
+public class AppFile implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("file_server_type")
+    private String fileServerType;
+
+    @TableField("agent")
+    private String agent;
+
+    @TableField("app_type")
+    private String appType;
+
+    @TableField("url")
+    private String url;
+
+    @TableField("md5")
+    private String md5;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("version")
+    private String version;
+
+    @TableField("update_time")
+    private String updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+
+}

+ 1 - 1
4dkankan-center-manage/src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") + "\\4dkankan-center-manage";
 
         generate(path,"manage", getTables(new String[]{
-                "sys_role","sys_role_menu","sys_user","sys_menu"
+                "t_app_file"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/mapper/IAppFileMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AppFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@Mapper
+public interface IAppFileMapper extends BaseMapper<AppFile> {
+
+}

+ 28 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/IAppFileService.java

@@ -0,0 +1,28 @@
+package com.fdkankan.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.manage.entity.AppFile;
+import com.fdkankan.manage.vo.request.AppFileParam;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+public interface IAppFileService extends IService<AppFile> {
+
+    String upload(MultipartFile file);
+
+    PageInfo pageList(AppFileParam param);
+
+    List<String> agentList(String agentName);
+
+    void saveByParam(AppFile param);
+}

+ 124 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/impl/AppFileServiceImpl.java

@@ -0,0 +1,124 @@
+package com.fdkankan.manage.service.impl;
+
+import com.alibaba.csp.sentinel.util.StringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.manage.entity.AppFile;
+import com.fdkankan.manage.mapper.IAppFileMapper;
+import com.fdkankan.manage.service.IAppFileService;
+import com.fdkankan.manage.vo.request.AppFileParam;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.util.Base64;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@Service
+public class AppFileServiceImpl extends ServiceImpl<IAppFileMapper, AppFile> implements IAppFileService {
+
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
+    @Value("${upload.type}")
+    private String ossType;
+    @Value("${oss.prefix.sdk}")
+    private String prefixAli;
+
+    @Override
+    public String upload(MultipartFile file) {
+        if (ObjectUtils.isEmpty(file) || file.isEmpty() || file.getSize() <= 0) {
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3017);
+        }
+        try {
+            String fileContent = Base64.getEncoder().encodeToString(file.getBytes());
+            String filePath = FileUtils.getResource().concat("uploadAppTmp");
+            FileUtils.createDir(filePath);
+            filePath = filePath.concat("/").concat(file.getOriginalFilename());
+            // 删除旧文件
+            FileUtils.deleteFile(filePath);
+            // 写文件到本地
+            FileUtils.base64ToFileWriter(fileContent, filePath);
+            return filePath;
+        }catch (Exception e){
+            throw new BusinessException(-1,"上传失败");
+        }
+    }
+
+    @Override
+    public PageInfo pageList(AppFileParam param) {
+        LambdaQueryWrapper<AppFile> queryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtil.isNotBlank(param.getAgentName())){
+            queryWrapper.like(AppFile::getAgent,param.getAgentName());
+        }
+        queryWrapper.orderByDesc(AppFile::getCreateTime);
+        Page<AppFile> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public List<String> agentList(String agentName) {
+        LambdaQueryWrapper<AppFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(AppFile::getAgent,agentName);
+        List<AppFile> list = this.list(wrapper);
+        return list.parallelStream().map(AppFile::getAgent).distinct().collect(Collectors.toList());
+    }
+
+    @Override
+    public void saveByParam(AppFile param) {
+        if(ObjectUtils.isEmpty(param.getName())){
+            throw new BusinessException(-1,"文件名称为空,请输入文件名称!");
+        }
+        AppFile managerAPPEntity = new AppFile();
+        BeanUtils.copyProperties(param, managerAPPEntity);
+        String basePath = FileUtils.getResource().concat("uploadAppTmp/");
+
+        String filePath = basePath.concat(param.getName());
+        File file = new File(filePath);
+        if (!file.exists()) {
+            throw new BusinessException(-1,"应用包文件未上传,请先上传文件!");
+        }
+
+        String versionFilePath = basePath.concat("version.json");
+        if (!new File(versionFilePath).exists()) {
+            throw new BusinessException(-1,"version.json 文件未上传,请先上传文件!");
+        }
+
+        String fileType = param.getName().substring(param.getName().lastIndexOf(".")+1);
+
+        String ossPathPrefix = "apps/customApp/" + param.getAgent() + "/"+param.getAppType()+"/";
+
+        uploadToOssUtil.upload(filePath, ossPathPrefix+"4dkankan."+fileType);
+        // 上传到 历史记录文件夹目录
+        uploadToOssUtil.upload(filePath, ossPathPrefix+"oldapps/" + file.getName());
+
+        // 上传到 version.json 文件
+        uploadToOssUtil.upload(versionFilePath, ossPathPrefix+"version/version.json");
+
+        // 删除旧文件
+        FileUtils.deleteFile(filePath);
+        FileUtils.deleteFile(versionFilePath);
+
+        managerAPPEntity.setUrl(prefixAli.concat(ossPathPrefix+"4dkankan."+fileType));
+        managerAPPEntity.setFileServerType(ossType);
+        this.save(managerAPPEntity);
+    }
+}

+ 9 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/vo/request/AppFileParam.java

@@ -0,0 +1,9 @@
+package com.fdkankan.manage.vo.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class AppFileParam extends RequestBase {
+    private String agentName;
+}

+ 5 - 0
4dkankan-center-manage/src/main/resources/mapper/manage/AppFileMapper.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.manage.mapper.IAppFileMapper">
+
+</mapper>