Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java
dengsixing 3 years ago
parent
commit
0261fa7ecd

+ 37 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneUploadController.java

@@ -0,0 +1,37 @@
+package com.fdkankan.scene.controller;
+
+
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.scene.service.ISceneUploadService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/scene/upload")
+public class SceneUploadController extends BaseController {
+
+    @Autowired
+    private ISceneUploadService sceneUploadService;
+
+    /**
+     * 上传图片到oss,base64
+     * imgData   图片base64
+     * files     文件
+     * sceneCode 场景码
+     * type     0添加,1替换
+     */
+    @RequestMapping(value = "/files", method = RequestMethod.POST)
+    public List<String> uploads(@RequestParam(value = "imgData",required = false) String imgData,
+                                     @RequestParam(value = "files",required = false) MultipartFile[] files,
+                                     @RequestParam(value = "sceneCode",required = false) String sceneCode,
+                                     @RequestParam(value = "type",required = false,defaultValue = "0") Integer type) throws Exception {
+        return sceneUploadService.uploads(imgData,files,sceneCode,type);
+    }
+
+}

+ 68 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneUpload.java

@@ -0,0 +1,68 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-01-19
+ */
+@Getter
+@Setter
+@TableName("t_scene_upload")
+public class SceneUpload implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 文件上传资源表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 场景码
+     */
+    @TableField("scene_code")
+    private String sceneCode;
+
+    /**
+     * 文件名称
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    /**
+     * 文件后缀
+     */
+    @TableField("file_prefix")
+    private String filePrefix;
+
+    /**
+     * 文件上传者id
+     */
+    @TableField("upload_user")
+    private String uploadUser;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("tb_status")
+    private Integer tbStatus;
+
+
+}

+ 18 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneUploadMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.SceneUpload;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-01-19
+ */
+@Mapper
+public interface ISceneUploadMapper extends BaseMapper<SceneUpload> {
+
+}

+ 20 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneUploadService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.SceneUpload;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-01-19
+ */
+public interface ISceneUploadService extends IService<SceneUpload> {
+
+    List<String> uploads(String imgData, MultipartFile[] files, String sceneCode, Integer type) throws Exception;
+}

+ 142 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java

@@ -0,0 +1,142 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.user.SSOLoginHelper;
+import com.fdkankan.common.util.BASE64DecodedMultipartFile;
+import com.fdkankan.common.util.FileUtil;
+import com.fdkankan.fyun.oss.OssFilePath;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.scene.entity.SceneUpload;
+import com.fdkankan.scene.mapper.ISceneUploadMapper;
+import com.fdkankan.scene.service.ISceneUploadService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-01-19
+ */
+@Service
+public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, SceneUpload> implements ISceneUploadService {
+
+    @Resource
+    UploadToOssUtil uploadToOssUtil;
+    @Value("${oss.point:http://oss-cn-shenzhen-internal.aliyuncs.com}")
+    private String point;
+
+    @Value("${oss.key:LTAIUrvuHqj8pvry}")
+    private String key;
+
+    @Value("${oss.secrey:JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4}")
+    private String secrey;
+
+    @Value("${oss.bucket:4dkankan}")
+    private String bucket;
+
+    @Autowired
+    private SSOLoginHelper ssoLoginHelper;
+
+    @Override
+    public List<String> uploads(String imgData,MultipartFile[] files,String sceneCode,Integer type) throws Exception{
+        List<MultipartFile> multipartFiles = new ArrayList<>();
+        if(StringUtils.isNotBlank(imgData)){
+            MultipartFile file = BASE64DecodedMultipartFile.base64ToMultipart(imgData);
+            multipartFiles.add(file);
+        }
+        if(files !=null && files.length >0){
+            multipartFiles.addAll(Arrays.asList(files));
+        }
+        return this.uploadFiles(multipartFiles,sceneCode,type);
+    }
+
+    public List<String> uploadFiles(List<MultipartFile> files, String sceneCode, Integer type) throws Exception{
+        if (StringUtils.isEmpty(sceneCode) || files == null || files.size() <= 0) {
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        List<String> urlList = new ArrayList<>();
+        String prefix ="";
+        for (MultipartFile file : files) {
+            String fileName = file.getOriginalFilename();
+            if(StringUtils.isNotBlank(prefix) && !prefix.equals(fileName.substring(fileName.lastIndexOf(".")))){
+                throw new BusinessException(-1,"文件类型不一致");
+            }
+            // 获取文件后缀
+            prefix = fileName.substring(fileName.lastIndexOf("."));
+        }
+        if(type != null && 1 == type){
+            this.updateFileByPreFix(sceneCode,prefix);
+        }
+        for (MultipartFile file : files) {
+            String fileName = file.getOriginalFilename();
+            // 获取文件后缀
+            prefix = fileName.substring(fileName.lastIndexOf("."));
+            File newFile = File.createTempFile(UUID.randomUUID().toString() ,prefix);
+            file.transferTo(newFile);
+            String ossPath = String.format(OssFilePath.USER_EDIT_PATH ,sceneCode) + fileName;
+            try {
+                uploadToOssUtil.upload2(newFile.getPath(),ossPath);
+            }catch (Exception e){
+                log.error(ossPath+"上传文件失败"+e);
+                throw new BusinessException(-1,"上传文件失败");
+            }
+            String url =String.format("http://%s.%s/%s", bucket, point.replace("http://",""), ossPath);
+            urlList.add(url);
+
+            FileUtil.delFile(newFile.getPath());
+            //添加记录
+            this.saveData(sceneCode,ossPath,prefix);
+        }
+        return urlList;
+    }
+
+    private void updateFileByPreFix(String sceneCode, String prefix) {
+        LambdaQueryWrapper<SceneUpload> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SceneUpload::getSceneCode,sceneCode)
+                .eq(SceneUpload::getFilePrefix,prefix)
+                .eq(SceneUpload::getTbStatus,0);
+        List<SceneUpload> list = this.list(queryWrapper);
+
+        if(list != null && list.size() >0){
+            for (SceneUpload sceneUpload : list) {
+                try {
+                    uploadToOssUtil.delete(sceneUpload.getFileName());
+                    this.removeEntity(sceneUpload);
+                }catch (Exception e){
+                    log.error(sceneUpload.getFileName()+"删除oss文件失败",e);
+                }
+            }
+        }
+    }
+
+    private void removeEntity(SceneUpload sceneUpload) {
+        sceneUpload.setTbStatus(1);
+        this.updateById(sceneUpload);
+    }
+
+    private void saveData(String sceneCode, String ossPath, String prefix) {
+        SceneUpload sceneUpload = new SceneUpload();
+        sceneUpload.setSceneCode(sceneCode);
+        sceneUpload.setFileName(ossPath);
+        sceneUpload.setFilePrefix(prefix);
+        sceneUpload.setUploadUser(null);
+        this.save(sceneUpload);
+    }
+
+}

+ 5 - 0
4dkankan-center-scene/src/main/resources/mapper/scene/SceneUploadMapper.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.scene.mapper.ISceneUploadMapper">
+
+</mapper>