Przeglądaj źródła

产品管理/spaceTarget sdk

lyhzzz 3 lat temu
rodzic
commit
66d470897a

+ 94 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/controller/SpaceSdkController.java

@@ -0,0 +1,94 @@
+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.manage.entity.SpaceSdk;
+import com.fdkankan.manage.service.ISpaceSdkService;
+import com.fdkankan.manage.vo.request.SpaceSdkParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ * space sdk表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@RestController
+@RequestMapping("/service/manage/spaceSdk")
+public class SpaceSdkController {
+
+    @Autowired
+    ISpaceSdkService spaceSdkService;
+
+    /**
+     * 上传文件
+     * @param file
+     * @param version
+     * @param imprintCh
+     * @param imprintEn
+     * @param isTop
+     * @param platformType
+     */
+    @PostMapping(value = "/upload", consumes = { "multipart/form-data" })
+    private String upload(@RequestParam("file") MultipartFile file,
+                          @RequestParam("version") String version,
+                          @RequestParam("imprintCh") String imprintCh,
+                          @RequestParam("imprintEn") String imprintEn,
+                          @RequestParam("isTop") Integer isTop,
+                          @RequestParam("platformType") String platformType) {
+
+        try {
+            return spaceSdkService.upload(file, version,imprintCh,imprintEn,isTop,platformType);
+        }catch (Exception e){
+            throw new BusinessException(-1,"上传失败!");
+        }
+    }
+
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody SpaceSdkParam param){
+        return ResultData.ok(spaceSdkService.pageList(param));
+    }
+
+    @PostMapping("/update")
+    public ResultData update(@RequestBody SpaceSdk param){
+        spaceSdkService.updateByEntity(param);
+        return  ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody SpaceSdkParam param){
+        if(param.getId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        spaceSdkService.removeById(param.getId());
+        return ResultData.ok();
+    }
+
+    /**
+     * 上下架
+     */
+    @PostMapping(value = "/online")
+    private ResultData online(@RequestBody SpaceSdkParam param) {
+        spaceSdkService.online(param);
+        return ResultData.ok();
+    }
+
+    /**
+     * 置顶
+     */
+    @PostMapping(value = "/top")
+    private ResultData top(@RequestBody SpaceSdkParam param) {
+        spaceSdkService.online(param);
+        return ResultData.ok();
+
+    }
+}
+

+ 102 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/entity/SpaceSdk.java

@@ -0,0 +1,102 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * space sdk表
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@Getter
+@Setter
+@TableName("t_space_sdk")
+public class SpaceSdk implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 版本
+     */
+    @TableField("version")
+    private String version;
+
+    /**
+     * 版本说明(中文)
+     */
+    @TableField("imprint_ch")
+    private String imprintCh;
+
+    /**
+     * 版本说明(英文)
+     */
+    @TableField("imprint_en")
+    private String imprintEn;
+
+    /**
+     * 发布时间
+     */
+    @TableField("publish_time")
+    private Date publishTime;
+
+    /**
+     * 是否置顶 1 -置顶  0-不置顶
+     */
+    @TableField("is_top")
+    private Integer isTop;
+
+    /**
+     * 状态 0 - 未发布 1 -发布  2-下架
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 1 : Unity  2: UE4
+     */
+    @TableField("platform_type")
+    private String platformType;
+
+    /**
+     * 文件名
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    /**
+     * 文件路径
+     */
+    @TableField("file_url")
+    private String fileUrl;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private String createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private String updateTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+
+}

+ 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";
         String path =System.getProperty("user.dir") + "\\4dkankan-center-manage";
 
 
         generate(path,"manage", getTables(new String[]{
         generate(path,"manage", getTables(new String[]{
-                "t_app_file"
+                "t_space_sdk"
         }));
         }));
 
 
 //        generate(path,"goods", getTables(new String[]{
 //        generate(path,"goods", getTables(new String[]{

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

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

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

@@ -0,0 +1,28 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.manage.entity.SpaceSdk;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.SpaceSdkParam;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * <p>
+ * space sdk表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+public interface ISpaceSdkService extends IService<SpaceSdk> {
+
+    String upload(MultipartFile file, String version, String imprintCh, String imprintEn, Integer isTop, String platformType) throws IOException;
+
+    void updateByEntity(SpaceSdk param);
+
+    void online(SpaceSdkParam param);
+
+    PageInfo pageList(SpaceSdkParam param);
+}

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

@@ -0,0 +1,183 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+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.DateUtil;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.manage.entity.SpaceSdk;
+import com.fdkankan.manage.mapper.ISpaceSdkMapper;
+import com.fdkankan.manage.service.ISpaceSdkService;
+import com.fdkankan.manage.vo.request.SpaceSdkParam;
+import lombok.extern.slf4j.Slf4j;
+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 java.io.IOException;
+import java.util.Base64;
+import java.util.Date;
+
+/**
+ * <p>
+ * space sdk表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-14
+ */
+@Service
+@Slf4j
+public class SpaceSdkServiceImpl extends ServiceImpl<ISpaceSdkMapper, SpaceSdk> implements ISpaceSdkService {
+
+    private static String DIR_NAME = "new4dkk/v2/images/_/common/data/";
+
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
+
+    @Value("${oss.prefix.sdk}")
+    private String prefixAli;
+
+
+    @Override
+    public String upload(MultipartFile file, String version, String imprintCh, String imprintEn, Integer isTop, String platformType) throws IOException {
+        if (!file.isEmpty()&& file.getSize() <= 0) {
+            throw new BusinessException(ErrorCode.FILE_NOT_EXIST);
+        }
+        String fullFileName = "";
+        if(platformType.equals("1")){
+            fullFileName = "SpaceTarget_Unity3D";
+        }else if(platformType.equals("2")){
+            fullFileName = "SpaceTarget_UE4";
+        }
+
+        String fileNameAll = "";
+        // 文件名全名
+        fileNameAll = file.getOriginalFilename();
+
+        // 将文件转字节-> 字符串
+        String fileContent = Base64.getEncoder().encodeToString(file.getBytes());
+
+        // 获取类路径
+        String resourcePath = FileUtils.getResource();
+        log.info("resourcePath: {}", resourcePath);
+
+        // 创建目录
+        String dirPath = resourcePath + DIR_NAME;
+        FileUtils.createDir(dirPath);
+
+        // 拼接唯一文件名
+        String fileName = fullFileName + "_" + version + "_" + DateUtil.dateStr() + fileNameAll;
+
+        // 文件保存路径
+        String filePath = dirPath + DateUtil.dateStr() + fileNameAll;
+
+        // 写文件到本地
+        FileUtils.base64ToFileWriter(fileContent, filePath);
+        log.info("filePath: {}", filePath);
+
+        // 上传到阿里云sso
+        uploadToOssUtil.uploadSdk(filePath, DIR_NAME + fileName);
+        log.info("upload success");
+
+        String url = prefixAli + DIR_NAME + fileName;
+
+        log.info("upload url: {}" + url);
+
+        this.updateTopFBySdkId(platformType);//取消所有置顶
+
+        SpaceSdk managerSdkEntity = new SpaceSdk();
+        managerSdkEntity.setVersion(version);
+        managerSdkEntity.setImprintCh(imprintCh);
+        managerSdkEntity.setImprintEn(imprintEn);
+        managerSdkEntity.setIsTop(1);
+        managerSdkEntity.setStatus(0);
+        managerSdkEntity.setPlatformType(platformType);
+        managerSdkEntity.setFileUrl(url);
+        managerSdkEntity.setFileName(fullFileName);
+
+        this.save(managerSdkEntity);
+
+        // 删除本地文件
+        FileUtils.deleteFile(filePath);
+
+        return url;
+    }
+
+    @Override
+    public void updateByEntity(SpaceSdk param) {
+        if(param.getId() == null || StringUtils.isEmpty(param.getPlatformType()) || param.getIsTop()==null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        if(param.getIsTop().equals(1)){
+            this.updateTopFBySdkId(param.getPlatformType());//取消所有置顶
+        }
+        if(!this.updateById(param)){
+            throw new BusinessException(ErrorCode.ERROR_MSG);
+        }
+    }
+
+    @Override
+    public void online(SpaceSdkParam param) {
+        if(param.getId() == null || param.getStatus() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        SpaceSdk managerSdkEntity = this.getById(param.getId());
+        if(managerSdkEntity == null ){
+            throw new BusinessException(-1,"获取记录为空");
+        }
+        if(managerSdkEntity.getPublishTime()!=null){
+             this.updateBySdkId(param.getId(),param.getStatus());
+        }else{
+             this.updateBySdkIdPublish(param.getId(),param.getStatus());
+        }
+    }
+
+    @Override
+    public PageInfo pageList(SpaceSdkParam param) {
+        LambdaQueryWrapper<SpaceSdk> queryWrapper = Wrappers.lambdaQuery();
+        if(param.getStatus()!=null){
+            queryWrapper.eq(SpaceSdk::getStatus,param.getStatus());
+        }
+        if(StringUtils.isNotEmpty(param.getSearchKey()) && !param.getSearchKey().equals("%")){
+            queryWrapper.like(SpaceSdk::getVersion,param.getSearchKey());
+        }
+        if(StringUtils.isNotEmpty(param.getPlatformType())){
+            queryWrapper.like(SpaceSdk::getPlatformType,param.getPlatformType());
+        }
+        queryWrapper.orderByDesc(SpaceSdk::getIsTop);
+        queryWrapper.orderByDesc(SpaceSdk::getPublishTime);
+        Page<SpaceSdk> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()), queryWrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    private void updateBySdkId(Long id, Integer status) {
+        LambdaUpdateWrapper<SpaceSdk> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(SpaceSdk::getStatus,status)
+                .eq(SpaceSdk::getId,id);
+        this.update(updateWrapper);
+    }
+
+    private void updateTopFBySdkId(String platformType) {
+        LambdaUpdateWrapper<SpaceSdk> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(SpaceSdk::getIsTop,0)
+                .eq(SpaceSdk::getPlatformType,platformType);
+        this.update(updateWrapper);
+    }
+
+    private void updateBySdkIdPublish(Long id, Integer status) {
+        LambdaUpdateWrapper<SpaceSdk> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(SpaceSdk::getStatus,status)
+                .set(SpaceSdk::getPublishTime,new Date())
+                .eq(SpaceSdk::getId,id);
+        this.update(updateWrapper);
+    }
+}

+ 42 - 3
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/impl/SysMenuServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -49,7 +50,11 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         wrapper.isNull(SysMenu::getParentId);
         wrapper.isNull(SysMenu::getParentId);
         wrapper.orderByAsc(SysMenu::getSort);
         wrapper.orderByAsc(SysMenu::getSort);
         Page<SysMenu> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()), wrapper);
         Page<SysMenu> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()), wrapper);
-        List<SysMenuVo> voList = getByParentId(null,page.getRecords(),false,null);
+       // List<SysMenuVo> voList = getByParentId(null,page.getRecords(),false,null);
+
+        List<SysMenuVo> allVos = setTreeMenuVo(false,null);
+        List<Long> ids  = page.getRecords().parallelStream().map(SysMenu::getId).collect(Collectors.toList());
+        List<SysMenuVo> voList = allVos.parallelStream().filter(vo -> ids.contains(vo.getId())).collect(Collectors.toList());
 
 
         Page<SysMenuVo> resultPage = new Page<>(page.getCurrent(),page.getSize());
         Page<SysMenuVo> resultPage = new Page<>(page.getCurrent(),page.getSize());
         resultPage.setRecords(voList);
         resultPage.setRecords(voList);
@@ -59,7 +64,7 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
 
 
     @Override
     @Override
     public List<SysMenuVo> allShowList() {
     public List<SysMenuVo> allShowList() {
-        return getByParentId(null,null,true,null);
+        return setTreeMenuVo(true,null);
     }
     }
 
 
     @Override
     @Override
@@ -90,9 +95,10 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         wrapper.isNull(SysMenu::getParentId);
         wrapper.isNull(SysMenu::getParentId);
         wrapper.in(SysMenu::getId,menuIds);
         wrapper.in(SysMenu::getId,menuIds);
         List<SysMenu> list = this.list(wrapper);
         List<SysMenu> list = this.list(wrapper);
-        return getByParentId(null,list,true,menuIds);
+        return setTreeMenuVo(true,menuIds);
     }
     }
 
 
+    //递归设置menuTree
     private List<SysMenuVo> getByParentId(Long parentId, List<SysMenu> list, boolean show ,List<Long> menuIds){
     private List<SysMenuVo> getByParentId(Long parentId, List<SysMenu> list, boolean show ,List<Long> menuIds){
         if(list == null){
         if(list == null){
             LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
             LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
@@ -122,4 +128,37 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         }
         }
         return sysMenuVos;
         return sysMenuVos;
     }
     }
+
+    //查询到全部list ,根据parentId组装树形结构
+    private List<SysMenuVo> setTreeMenuVo( boolean show ,List<Long> menuIds){
+        LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
+        if(show){
+            wrapper.eq(SysMenu::getIsShow,1);
+        }
+        if(menuIds != null){
+            wrapper.in(SysMenu::getId,menuIds);
+        }
+        List<SysMenu> list = this.list(wrapper);
+
+        List<SysMenuVo> voList = new ArrayList<>();
+
+        HashMap<Long,SysMenuVo> voMap = new HashMap<>();
+        for (SysMenu sysMenu : list) {
+            SysMenuVo menuVo = new SysMenuVo();
+            BeanUtils.copyProperties(sysMenu,menuVo);
+            voMap.put(sysMenu.getId(),menuVo);
+        }
+        for (SysMenu sysMenu : list) {
+            if(sysMenu.getParentId() !=null){
+                SysMenuVo menuVo = voMap.get(sysMenu.getId());
+                List<SysMenuVo> children = voMap.get(sysMenu.getParentId()).getChildren();
+                children.add(menuVo);
+            }else {
+                voList.add(voMap.get(sysMenu.getId()));
+            }
+        }
+        return voList;
+    }
+
+
 }
 }

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

@@ -0,0 +1,51 @@
+package com.fdkankan.manage.vo.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class SpaceSdkParam extends RequestBase implements Serializable {
+
+    private static final long serialVersionUID = 2345798398902100085L;
+
+    /**
+     * 版本
+     */
+    private String version;
+
+    /**
+     * 版本说明
+     */
+    private String imprint;
+
+
+    private Date publishTime;
+
+    /**
+     * 是否置顶 1 -置顶  0-不置顶
+     */
+
+    private Integer isTop;
+
+    /**
+     * 状态 0 - 未发布 1 -发布  2-下架
+     */
+
+    private Integer status;
+
+    /**
+     * 1 : Unity  2: UE4
+     */
+
+    private String platformType;
+
+    private Long id;
+
+    private String searchKey;
+
+
+
+}

+ 2 - 1
4dkankan-center-manage/src/main/java/com/fdkankan/manage/vo/response/SysMenuVo.java

@@ -3,10 +3,11 @@ package com.fdkankan.manage.vo.response;
 import com.fdkankan.manage.entity.SysMenu;
 import com.fdkankan.manage.entity.SysMenu;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
 @Data
 @Data
 public class SysMenuVo extends SysMenu {
 public class SysMenuVo extends SysMenu {
 
 
-    private List<SysMenuVo> children;
+    private List<SysMenuVo> children = new ArrayList<>();
 }
 }

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

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